hi Team,
we are executing an action from a rule.js file as shown below.
export default async function CreateDeliveryDocket( context)
{
let l_var_CreateDeliveryDocketPromise ;
try {
let pageProxy = context.getPageProxy ? context.getPageProxy() : context;
let appData = pageProxy.getAppClientData();
if(appData._isCreateDocketInProgress === true)
{
await context.executeAction({
"Name": "/ABCDSyncApp/Actions/Docket/GenericMessage.action",
"Properties": {
"Title": "Information",
"Message": "Create Delivery Docket is already in progress.",
"OKCaption": "OK"
}
});
return;
}
appData._isCreateDocketInProgress = true; // this is used at OnCreatePageReturning.js
await ABCDSyncLogger(context,'Error',"1.CreateDeliveryDocket : Start",'');
let l_var_payload = await getDeliveryDocketPayload(context,'CREATE');
await ABCDSyncLogger(context,'Error',"1.2.Payload received from getDeliveryDocketPayload "+JSON.stringify(l_var_payload),'');
// Check network connectivity
let l_var_NetWorkAvaialbility = isNetworkConnectivityAvailable(context);
if (l_var_NetWorkAvaialbility === true)
{
await ABCDSyncLogger(context,'Error',"1.3.Network Connectivity Available: " + l_var_NetWorkAvaialbility,'');
await ABCDSyncLogger( context, 'Error', "1.4.Main Payload Passed : " + JSON.stringify(l_var_payload), '' );
let l_var_result = await ExecuteAction(context, "/ABCDSyncApp/Actions/Docket/CreateDeliveryDocket_G/CreateDeliveryDocket_Online.action", l_var_payload);
let l_var_resultData = l_var_result && l_var_result.data ? l_var_result.data : {};
l_var_resultData = l_var_result?.data || {};
let l_var_appData = context.getAppClientData();
l_var_appData.createdDocketId = l_var_resultData.docketId || "";
l_var_appData.createdDocketNumber = l_var_resultData.docketNumber || "";
l_var_appData.createdScheduleOccurrenceId = l_var_resultData.scheduleOccurrenceId || "";
l_var_appData.createdDocketStatus = l_var_resultData.status || "";
let l_var_docketNumber = l_var_resultData.docketNumber || l_var_resultData.DocketNumber || "Created";
await ABCDSyncLogger(context,'Error',"Docket Number Obtained from Back End : " + l_var_docketNumber ,'');
return context.executeAction({
"Name": "/ABCDSyncApp/Actions/Docket/GenericMessage.action",
"Properties":
{
"Title": "Success",
"Message": "Delivery docket created successfully.\nDocket Number: " + l_var_docketNumber,
"OKCaption": "OK"
}
});
}
} catch (error)
{
DebugMessage(context, "Error Caught " + JSON.stringify(error.stack), "Execute_CreateDeliveryDocketMDK_Function");
ABCDSyncLogger(context,'error',"Error occurred while creating delivery docket."+error.stack,'');
}finally
{
l_var_appData._isCreateDocketInProgress = false;
}
} The ExecuteAction rule file in turn executes the MDK Action : as shown below
/**
* Describe this function...
* @Param {IClientAPI} clientAPI
* @Param {IContext} context
*/
import ABCDSyncLogger from "../../../Utils/ABCDSyncLogger";
export default async function ExecuteAction(context,p_var_Action_Path,p_var_Action_Payload)
{
await ABCDSyncLogger(context, "Executing action ::" + p_var_Action_Path + " with payload ::" + JSON.stringify(p_var_Action_Payload),"");
let l_var_Result = '';
try{
l_var_Result = await context.executeAction(
{
"Name": p_var_Action_Path,
"Properties":
{
"Target":
{
"Function":
{
"Parameters": p_var_Action_Payload
}
}
}
});
return l_var_Result;
}catch(err){
ABCDSyncLogger(context, "Error occurred while executing action ::" + p_var_Action_Path + " :: " + err.message,"");
}
}The MDK Action is as shown below
{
"_Type": "Action.Type.ODataService.CallFunction",
"ActionResult": {
"_Name": "CreateDeliveryDocket_Online"
},
"OnSuccessLog": {
"Level": "Debug",
"Message": "Delivery Docket Created Successfully"
},
"OnFailureLog": {
"Level": "Debug",
"Message": "Unable to create Delivery Docket"
},
"ShowActivityIndicator": true,
"ActivityIndicatorText": "Creation In Progress",
"Target": {
"Service": "/ABCDSyncApp/Services/ABCD_ORG_Scheduling_Online.service",
"Function": {
"Name": "createDeliveryDocketMDK"
}
}
}the action is executing the cap service, and it throws error as shown below. The Action or payload is not even reaching the cap service, the below error is occuring at the mdk framework itself. The parameters are properly passed.
Error running action propagating error Action.Type.ODataService.CallFunction.3: Error: Failed to get Java object by ID. id=732, class=com/sap/cloud/mobile/odata/DataService. com.tns.NativeScriptException: Attempt to use cleared object reference id=732 : Error: Failed to get Java object by ID. id=732, class=com/sap/cloud/mobile/odata/DataService. com.tns.NativeScriptException: Attempt to use cleared object reference id=732\n at ODataActionImporter.getDataQuery (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1801060)\n at file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1800330\n at new Promise (<anonymous>)\n at ODataActionImporter.execute (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1800269)\n at ODataServiceProvider.callFunction (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1750417)\n at file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1728788\n at new Promise (<anonymous>)\n at OData.callFunction (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:1728689)\n at ODataService.callFunction (file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:815346)\n at file:///data/data/com.sap.mobileservices.client/files/app/vendor.js:2:107457
Request clarification before answering.
I would suggest enabling Tracing Categories and set the log level to Trace and try it again to see if there is better information logged related to call.
If you could also please share the $metadata for your CAP service so we can see how the action is defined that would also be very helpful.
Thanks,
--Bill
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.