Calling apex function

I’m not sure, would have to research, but an easier way would be to make your Apex method take a String argument, which is actually JSON, and then serialize client-side to JSON and deserialize server-side into a DispatchInfo object, e.g.

global class TestInvocable
{<br>&nbsp;&nbsp;&nbsp;private&nbsp;class&nbsp;DispatchInfo&nbsp;<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;dispatchDate;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;shippingCompany;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;webservice&nbsp;static&nbsp;String&nbsp;testInvocableMethod(String&nbsp;dispatchJSON)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DispatchInfo dispatch = (DispatchInfo) JSON.deserialize(dispatchJSON,DispatchInfo.class);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.debug('date:&nbsp;'&nbsp;+&nbsp;dispatch.dispatchDate);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.debug('shipping&nbsp;company:&nbsp;'&nbsp;+&nbsp;dispatch.shippingCompany);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;'Ok';<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>} 

And then in JavaScript you could do this (if you’re using the AJAX Apex Toolkit):

var dispatch = {
    dispatchDate: new Date(),
    shippingCompany: “Acme”
};
var result = sforce.apex.execute(“TestInvocable”,“testInvocableMethod”,{ dispatchJSON: JSON.stringify(dispatch) });
console.log('the result was: ’ + result);