Register your custom business service. You add the following code:
var inputObj = {};
inputObj[oconsts.get("DOUIREG_OBJ_NAME")]= "business_service";
inputObj[oconsts.get("DOUIREG_SRVC_NAME")] = "class";
SiebelApp.S_App.GetModel().ServiceRegistry(inputObj);
where:
- business_service identifies the name of a custom business service.
- class identifies the JavaScript class that the custom business service references.
For example:
if (typeof (SiebelApp.PharmaCallValidatorsvc) === "undefined") {
SiebelJS.Namespace('SiebelApp.PharmaCallValidatorsvc');
var oconsts = SiebelApp.Offlineconstants;
var inputObj = {};
inputObj[oconsts.get("DOUIREG_OBJ_NAME")]= "LS Pharma Validation Service";
inputObj[oconsts.get("DOUIREG_SRVC_NAME")] = "PharmaCallValidatorsvc";
SiebelApp.S_App.GetModel().ServiceRegistry(inputObj);
SiebelApp.PharmaCallValidatorsvc = (function () {
function PharmaCallValidatorsvc() {
SiebelApp.PharmaCallValidatorsvc.superclass.constructor.call(this);
}
SiebelJS.Extend(PharmaCallValidatorsvc, SiebelApp.ServiceModel);
For more information about the methods that this step uses, see the following topics:
Depending on whether you want to make a call from service to service, or to a standalone service, use one of the following methods:
- To make a call from one service to another service, use InvokeMethod. This method will call your custom business service method.
For example, the following code calls the CallValidate business service method:
PharmaCallValidatorsvc.prototype.InvokeMethod = function (svcMthdName, psinpargs) {
var currRetValue={err:false}, retObj;
var psOutArgs = SiebelApp.S_App.NewPropertySet();
if (!svcMthdName) {
currRetValue=({err: "", retVal: true});
return currRetValue;
}
if (svcMthdName === "CallValidate") {
retObj=this.CallValidate(psinpargs);
psOutArgs = retObj.retVal;
this.CleanUp();
currRetValue=({err:false,retVal:psOutArgs});
return currRetValue;
}
else {
return SiebelApp.PharmaCallValidatorsvc.superclass.InvokeMethod.call(this, svcMthdName, psinpargs);
}
}
PharmaCallValidatorsvc.prototype.CallValidate = function (psinpropset) {
var currRetValue={err:false}, retObj;
var psOutArgs = SiebelApp.S_App.NewPropertySet();
//Some Logic
currRetValue=({err:false,retVal:psOutArgs});
return currRetValue;
};
};
return PharmaCallValidatorsvc;
} ());
}
The call from any other service file must be done as follows:
var service = SiebelApp.S_App.GetService("LS Pharma Validation Service");var outputSet = service.Invoke("CallValidate", psPropertySet);
- To make a call to a standalone service use the InvokeMethod method. Use the Client- Service Call method to customize the disconnected mobile client. This allows a service call to be made from the client, typically from a physical model.
For example, the following code enables you to display the total number of products detailed in the tooltip. This would be the call from the physical model:
var service = SiebelApp.S_App.GetService("LS Pharma Validation Service");
var inPropSet = SiebelApp.S_App.NewPropertySet();
if (service) {
retObj=currRetValue=service.InvokeMethod("CountPDMethod", inPropSet);
var outPropSet = retObj.retVal;
}
In online mode, the call is to the standalone business service in a server, whereas in offline mode, this invokes the standalone offline business service code.
For example, the following code is for the Sample Offline service:
PharmaCallValidatorsvc.prototype.CanInvokeMethod = function (svcMthdName) {
var currRetValue={err:false}, retObj;
if (svcMthdName === " CountPDMethod") {
currRetValue={ err: false, retVal: true };
return currRetValue;
}
else {
return SiebelApp.PharmaCallValidatorsvc.superclass.CanInvokeMethod.call(this, svcMthdName);
}
};
PharmaCallValidatorsvc.prototype.InvokeMethod = function (svcMthdName, Inputs) {
var currRetValue={err:false}, retObj;
var psOutArgs = CCFMiscUtil_CreatePropSet();
if (svcMthdName === " CountPDMethod") {
var BO = SiebelApp.S_App.GetBusObject("Pharma Professional Call - Mobile");
var PDBC = BO.GetBusComp("Pharma Call Products Detailed");
PDBC.SetSearchExpr( "[Activity Id] = '" + Inputs.GetProperty("Id") + "'";);
retObj=currRetValue=PDBC.ExecuteQuery();
retObj=currRetValue=PDBC.FirstRecord();
var result = PDBC.CountRecords();
Outputs.SetProperty("OutputText",result);
}
For more information about the methods that this step uses, see the following topics: