For a guest application or script to interact with a scripting object exposed by the Host, it must first retrieve a reference to the object through the Guest libraries scripting utilities:
var scriptingObject = await elli.script.getObject("<objectId>");
Each Scripting Object available to the guest has a unique Object ID: a string value that identifies the object being retrieved based on the current context. Note that, as with all Scripting Object calls, the elli.script.getObject()
call is asynchronous and requires that we await
the result (or use the Promise.then()
function).
The elli.script
object is the core, global scripting object available to all Guest application scripts. This object provides three primary functions to your application's code:
elli.script.getObject
Sample Usage:
let emObject = await elli.script.getObject('OBJECT_ID')
Interface:
Accepts a string
input - the object ID for the scripting object you are trying to access
Returns a promise
- which will resolve to an instance of the scripting object with the specified object ID as exposed by the Host application
elli.script.subscribe
Sample Usage:
let emSubscription = elli.script.subscribe('OBJECT_ID', 'EVENT_ID', callback)
Interface:
Accepts a string
as the first argument - the object ID for the object that publishes the event you are trying to subscribe to
Accepts a string
as the second argument - the event ID for the event you are trying to subscribe to
Accepts a function
as the third argument - a callback function that you want executed when the event fires. The callback function you register will receive two arguments upon execution:
- An
object
as the first argument, which is a proxy for the scripting object that fired the event- An
object
as the second argument, which is the event that was fired
Returns an object
- a reference to the subscription that you just created, which can eventually be used to unsubscribe
elli.script.unsubscribe
Sample Usage:
elli.script.unsubscribe(emSubscription)
Interface:
Accepts an object
as its only argument - the reference to the subscription you created and are trying to unregister
The next two sections discuss how to invoke the functions of a Scripting Object retrieved thru the getObject()
function, and how to subscribe, receive, and, if appropriate, respond to events raised by a Scripting Object.
Invoking Host Exposed Scripting Object Functions
Once you have a reference to a Scripting Object via the elli.script.getObject()
call, you can invoke functions on the object to interact with it. Functions may be used to retrieve or modify the state of the Scripting Object, depending on the use. As noted above, all function calls on Scripting Objects are asynchronous; thus, you must either await
the result of the function call or use the Promise.then()
function to invoke a callback when the function is completed. For example:
async function createTransaction = (request) => {
// Access transaction scripting object
var transactionObj = await elli.script.getObject('transaction');
// Store transaction identifier once the transaction has been created
applicationState.transactionId = await transactionObj.create(request);
}
The Ellie Mae JavaScript framework has one further optimization that can simplify your code: the framework will automatically await
any Promise-valued parameter to a function exposed by a s scripting object.
Subscribing and Responding to Host Exposed Scripting Object Events
The current Ellie Mae JavaScript framework interface exposed to Partner integrations does not include any events for integrations to subscribe and respond to, but watch this space for enhancements!