Siebel Connector for Credit Card Application XML
The following example shows the extension connector that implements the Industry XML classes through the sets of APIs. It shows how each of the steps is carried out to achieve supporting the credit card application services.
Sample Result
- <CRM>
- <SignonRq>
- <UsrLoginSegment>
<LoginUserId>UserId</LoginUserId>
<LoginCurPassword>PASSWD</LoginCurPassword>
<LoginNewPassword />
</UsrLoginSegment>
</SignonRq>
- <CreditCardSvcRq>
- <CardAppAddRq>
- <AccountData>
<UserId>1-DLN</UserId>
<CompanyCd>1-109</CompanyCd>
<DivisionCd>1-109</DivisionCd>
<ServCtrCd>1-109</ServCtrCd>
<BranchCode>1-16UU</BranchCode>
</AccountData>
- <ApplicationInfo>
<ApplicantId>AAA CreditCard Join</ApplicantId>
<PrioritySortCode />
<ApplSourceCode />
<WorklistModeFlag>03 - Qualification</WorklistModeFlag>
<ApplicationClass>Credit Card Application</ApplicationClass>
</ApplicationInfo>
- <CardholderInfo>
<FirstName>Enid</FirstName>
<Mi>J</Mi>
<LastName>Alberts</LastName>
<City>San Jose</City>
<State>CA</State>
<ZipCode>95110</ZipCode>
</CardholderInfo>
</CardAppAddRq>
</CreditCardSvcRq>
</CRM>
To implement the Industry XML classes through the sets of APIs
Configure the following business services to support all the methods and method arguments in the Industry XML Connector:
FINS EL XML Transaction Manager
FINS EL XML DTE Service
FINS EL XML Converter
FINS EL XML Dispatcher
For example, the FINS EL XML DTE Service business services has Execute, ExecuteOutbound, and ExecuteSave methods.
Configure user properties for the business services configured in Step 1.
Overwrite a few (necessary) Industry XML APIs to modify the presentation logic.
The following example shows the customized converter over the functions to generate the message header and preprocess the body section. In the GenerateHeader function, the application calls the CreateSignOn function to generate the login information portion of the XML document. In the PreProcessBody function, the service aggregate
<CreditCardSvcRq>
is added to embed the<CardAppAddRq>
message aggregate. Your scenario might be different.Note: The common usage of MethodName in standard scripting is a publicly available business service method such as PropSetToXMLPropSet. However, in this example, the MethodName does not correspond to the business service method when implementing the factory classes. Instead, it refers to the methods in the Industry XML APIs.function Service_PreInvokeMethod (MethodName, Inputs, Outputs) { var retVal = CancelOperation; if (MethodName == "GenerateHeader") { Func_GenerateHeader(Inputs, Outputs); } else if (MethodName == "PreProcessBody") { Func_PreProcessBody(Inputs, Outputs); } else { retVal = ContinueOperation; } return (retVal); } // Overwrite GenerateHeader method to handle SignonRq message function Func_GenerateHeader (Inputs, Outputs) { var child; // Enumerate the first layer header definition for (var i = 0; i < Outputs.GetChildCount(); i++) { child = Outputs.GetChild(i); if ( child.GetType() == "SignonRq") { // Create SignOn Segment Func_CreateSignOn(child); } else if (child.GetType() != "xxxSvcRq") { // Remove other header definitions Outputs.RemoveChild(i--); } } } // Overwrite PreProcessBody method to add service aggregate function Func_PreProcessBody (Inputs, Outputs) { var serviceName; if (Inputs.PropertyExists("SiebelFINSObjType")) { Func_CopyPropSet(Inputs, Outputs); } else if (Inputs.PropertyExists("IFX Service Name")) { serviceName = Inputs.GetProperty("IFX Service Name"); // add CreditCardSvcRq aggregate Outputs.SetType(serviceName); // copy CardAppAddRq aggregate Outputs.AddChild(Inputs.Copy()); } else { Func_CopyPropSet(Inputs, Outputs); } } // Sign on utility to access user name and password function Func_CreateSignOn(Inputs) { var child; var grdChild; // Enumerate the first layer header definition for (var i=0; i < Inputs.GetChildCount(); i++) { child = Inputs.GetChild(i); if ( child.GetType() == "UsrLoginSegment") { for (var j=0; j < child.GetChildCount(); j++) { grdChild = child.GetChild(j); if (grdChild.GetType() == "LoginUserId") { grdChild.SetValue("UserId"); } if (grdChild.GetType() == "LoginCurPassword") { grdChild.SetValue("PASSWD"); } } } else { // Remove other header definitions Inputs.RemoveChild(i--); } } } // Generic copy property set utility function Func_CopyPropSet( Inputs, Outputs) { var propName = ""; var propVal = ""; var child; Outputs.SetType(Inputs.GetType()); Outputs.SetValue(Inputs.GetValue()); propName = Inputs.GetFirstProperty(); while (propName != "") { propVal = Inputs.GetProperty(propName); Outputs.SetProperty(propName, propVal); propName = Inputs.GetNextProperty(); } for (var i = 0; i < Inputs.GetChildCount(); i++) { child = Inputs.GetChild(i); Outputs.AddChild(child.Copy()); } }
Configure integration objects as required.
Some integration objects have been configured for this example. The FINS Connector Factory project in Siebel Tools includes all the integration objects.
Configure data transformation maps as required.
Two data transformation maps have been configured for this example. You can list them in Siebel Financial Services application with a query specification of
“Credit Card*Add*"
in the Comments field of the Integration Object Map screen.Configure workflows as required.
Two workflows have been configured for this example: Credit Card Application Inbound Workflow and Credit Card Application Outbound Workflow.