You can start Ajax services from within Coach Views. Coach framework calls Ajax services with the BPM REST API in taskless mode.
To call an Ajax service in a Coach View, you must specify configuration options of type Service in the Coach View variable declarations and select an Ajax service as a default service to be used. The default service is the application programming interface (API) for which custom services must match. (The names and types of both inputs and outputs must match.)
You can implement the Ajax service with either a simple JavaScript call syntax or a REST API.
var _this = this;
var input = {text: this.context.options.service_option_name.get("value")};
var serviceArgs = {
params: JSON.stringify(input),
load: function(data) {
console.log("service returned: ", data);
// now dynamically create the img tag
require(["dojo/_base/url"], function(url) {
var relPath = new url(data.path).path;
domConstruct.create("img", {src:relPath, style:"margin:5px 0px"}, _this.context.element, "first");
});
},
error: function(e) {console.log("service call failed: ", e);}
}
this.context.options.Ajax_service_name(serviceArgs);
{"status":"200","data":{"serviceStatus":"end","key":"@54","step":"End","data":
{"bookPlacedPosition":{"Floor":1,"Room":"101","Row":2,"@metadata":
{"dirty":true,"shared":false,"rootVersionContextID":"2064.c30905ba-8d17-41f4-
b2a8-08cbb6516ff0T","className":"PlacedPosition"}}},"actions":null}}
If
you directly set the response object to your binding like the following
example, the @metadata object is added in your structure: this.context.binding.get("value").set("BookPlacedPosition",data.bookPlacedPosition);
When
you trigger the boundary event to the server, the server produces
an error because it does not expect the boundary event to have the @metadata object.
To avoid an exception, remove the @metadata object
from the response before you set it to the binding, for example:delete data.bookPlacedPosition['@metadata'];
_this.context.binding.get("value").set("BookPlacedPosition",data.bookPlacedPosition);