Mashups
Mashups are used to invoke XAPIs on the server and return data to the UI layer.
Defining mashup XMLs
The following code snippet defines a sample mashup XML
<?xml version="1.0" encoding="UTF-8"?>
<mashups>
<mashup description="Mashup description"
endpoint="<mashup_endpoint>" id="mashup_id" mashuptype="XAPI"
skipDataProvider="false" transactional="true">
<classInformation name="<java class name with full package>" />
<API Name="<api_name>">
<Input>
<!-- APi input goes here-->
</Input>
<Template>
<!-- APi output template goes here -->
</Template>
</API>
<APINamespace inputNS="<input_namespace>" outputNS="<output_namespace>" />
<AlternateResourceIds>
<AlternateResourceId altResourceId="resource id" />
</AlternateResourceIds>
</mashup>
</mashups>Defining mashupRefs in view or screen controllers
Refer to the following code snippet to define a mashupref in a view controller or screen controller."mashupRefs":[
{
mashupRefId: '<mashuprefid>',// local mashup name
mashupId: '<mashupid>',// mashup id defined in the mashup xmls
modelName: '<model_name>',// model to which output of mashup to be set
isPaginated:<true/false>,// flag to indicate whether mashup is calling a paginated XAPI
pageSize: <number>,// indicates the page size. Default value is 5, if not specified.
append:<true/false>,// flag to indicate whether mashup output should be appended to existing data.
//This is used only if isPaginated is set true
handler:'<handlerMethodName>',//method to be called for massaging the mashup output.
}
]Calling a mashup from view controllers
MashupRefs should be defined in the view controllers to call a mashup. Use the
iscMashup service to call a mashup. Refer the javascript documentation available
with the application for more information.- Use
iscMashup.callMashup(this, mashupRefId, mashupInput, options);to call a single mashup. For example,iscMashup.callMashup(this, "getOrderDetails",{"Order":{"OrderHeaderKey":"Order1"}},{}) .then(this.handleSuccessMethod.bind(this),this.handleErrorMethod.bind(this)); - Use
iscMashup.callMashups(this,mashupRefObjList,options)to call multiple mashups in a single network call. For example,var mashupRefList = []; mashupRefList.push(iscMashup.getMashupRefObj(this,"getOrderDetails", {"Order":{"OrderHeaderKey":"Order1"}})); mashupRefList.push(iscMashup.getMashupRefObj(this,"getCustomerDetails", {"Customer":{"CustomerKey":"Customer1"}})); iscMashup.callMashups(this,mashupRefList,{}) .then(this.handleSuccessMethod.bind(this),this.handleErrorMethod.bind(this)); -
Use
iscMashup.callPaginatedMashup(this, mashupRefId, inputData,pageAction, options)to call a paginated mashup. For example,iscMashup.callPaginatedMashup(this, "getOrderLineList",{"Order":{"OrderHeaderKey":"OrderNo1"}}, "NEXT",{}) .then(this.handleSuccessMethod.bind(this),this.handleErrorMethod.bind(this));
Calling a mashup from directive controllers
In case of directives, mashupRef object is not defined. Therefore, you can call the mashup
directly without a mashuprefid and mashupRefs array.
Use callSimpleMashup, callSimpleMashups, and
callSimplePaginatedMashup. Refer the javascript documentation available with the
application for usage and examples.
.
Customizing existing mashup definitions
You can override the existing mashup definition XMLs either differentially or completely. For
more information see
- Extending mashups by using differential extensibility
- Extending mashups by using override extensibility
Notes:
- AngularJS-based components cannot be customized by using the Extensibility Workbench.
-
The
initservlet to load the incremental and override mashups is provided with the application and the servlet scans only for XML files in the<wscwar>/extn/ngstorefolder.The mashup XMLs should be placed in the respective feature folder in the<EXTN_WORKSPACE>. The file naming conventions for mashups are as follows:<feature/folder_name>_mashups.xml: The default mashup file for any feature.<feature/folder_name>_incrementalmashups.xml: The file should contain all the incremental changes for an existing mashup.<feature/folder_name>_overridemashups.xml: The file should contain all the overridden changes for an existing mashup.
- You must restart the application server for the changes to take effect.
Adding custom mashup classes to the customization
To add the custom mashup classes as part of your customizations:
- Create a JAR file for your custom mashup classes.
- Copy the JAR file to either of the following directories:
- files/repository/eardata/wsc/extn/WEB-INF/lib directory in your source control project
- repository/eardata/wsc/extn/WEB-INF/lib directory in developer toolkit runtime
For more information about building and deploying your customizations, see Building and deploying your customizations.