When you Need to add a property called SessionId to a SiebelMessage header to pass it to an external application. To illustrate this example, the integration uses the EAI XML Write to File business service and writes the XML to a file for easy inspection. In this case, the XML Converter business service is not needed because the EAI XML Write to File business service uses a property set as an input instead of an XML string. This will simplify the workflow process a bit. The workflow process will have 4 steps : Start, Query an Account, Write to File, and End.
- Create a new workflow process record called SessionId and define 4 steps, one start step, two business service steps, and finally an end step.
- Connect each step and rename them as shown above.
- In the Query an Account step, use the EAI Siebel Adapter business service and Query method.
- In the Write to File step, use the EAI XML Write to File business service and Write Siebel Message method.
- Define an additional Process Property on the workflow process with Type = Hierarchy and Name = Accnt Msg.
- Set the Object Id process property with the value of the ROW_ID of an existing Account in the Siebel database.
- For the Query an Account step, create the following input arguments:
Input Argument | Type | Value | Property Name |
Output Integration Object Name | Literal | Sample Account | |
Object Id | Process Property | Object Id |
- For the Query an Account step, create the following output arguments:
Output Argument | Type | Property Name |
Siebel Message | Output Argument | Accnt Msg |
- For the Write to File step, create the following input arguments:
Input Argument | Type | Value | Property Name | Sequence* (see note) |
---|---|---|---|---|
File Name | Literal | c:\sessionid.xml | 1 | |
Siebel Message | Process Property | Accnt Msg | 2 | |
SiebelMessage.SessionId | Literal | 12345 | 3 |
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account">
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
Scenario 2: Using the same workflow process, need to set a value for the MessageId property in the SiebelMessage header.
Input Argument | Type | Value |
MessageId | Literal | ABCDE |
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
<SiebelMessage MessageId="ABCDE" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
Scenario 3: Need to add a property called SessionId to a SiebelMessage header when using the EAI XML Converter to pass the XML as a string to the transport business service.
- Create a new workflow process record called SessionIdEAIXMLConverter and define 5 steps, one start step, three business service steps, and finally an end step.
- Connect each step and rename them as shown above.
- In the Get Account step, use the EAI Siebel Adapter business service and Query method.
- In the Convert to XML step, use the EAI XML Converter business service and Property Set to XML method.
- In the Contact External App step, use the EAI File Transport business service and the Send method.
- Define two additional process properties on the workflow process:
Name | Type |
Accnt Msg | Hierarchy |
XML | String |
- Set the Object Id process property with the value of the ROW_ID of an existing Account record in the Siebel database.
- For the Get Account step, create the following input arguments:
Input Argument | Type | Value | Property Name |
Output Integration Object Name | Literal | Sample Account | |
Object Id | Process Property | Object Id |
- For the Get Account step, create the following output arguments:
Output Argument | Type | Property Name |
Siebel Message | Output Argument | Accnt Msg |
- For the Convert to XML step, create the following input arguments:
Input Argument | Type | Value | Property Name |
Siebel Message | Process Property | Accnt Msg | |
SiebelMessage.SessionId | Literal | 12345 |
- For the Convert to XML step, create the following output arguments:
Output Argument | Type | Property Name |
Message Text | Output Argument | XML |
- For the Contact External App step, create the following input arguments:
Input Argument | Type | Value | Property Name |
Message Text | Process Property | XML | |
Append To File | Literal | true | |
File Name | Literal | <path to file> for example c:\filetest.txt | |
Is Text File | Literal | true |
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account">
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
Scenario 4: Using the same workflow process as scenario 3, need to set a value for the MessageId property in the SiebelMessage header.
Input Argument | Type | Value |
SiebelMessage.MessageId | Literal | ABCDE |
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
<SiebelMessage MessageId="ABCDE" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
Scenario 5: Using the same workflow process as scenario 4, need to update the value for the Home Page property of the Account.
Input Argument | Type | Value |
SiebelMessage.ListOfSample Account.Account.Home Page | Literal | www.test.com |
NOTE: Regarding the format, even though the second node of the SiebelMessage has its XML tag set to ListofSampleAccount, the type shown in the workflow process simulator is ListOfSample Account (with the o in Of an upper case character and a space between Sample and Account) and therefore the input argument must reflect that. Similarly, although the Home Page integration component field in the Account integration component shows the XML tag is HomePage, the property in the simulator shows that the value is Home Page (with a space between Home and Page) and therefore the input argument must reflect that. In general, when listing several records, the prefix ListOf will be appended to the name of the integration object to represent the top-level node name, and then the next level will be defined with the integration component name. If the integration component name is not the same as the integration object then it will have a node with the ListOf prefix as well as a sub-level node with the integration component name (for example ListOfBusiness Address and ListOfContact in the level below the Account node).
Finally, when setting the value of a node element where several records are present, only the first record will have its value updated. If there were several records returned by the Get Account step for instance, only the first one in the list would have its Home Page value updated. For this reason, updating node elements should be limited to those nodes with only one record or the top level node in a group (those with the Type = ListOf<some value>). One other caution is that the workflow step input argument is limited to 75 characters so the names of the integration object, integration component and integration component fields should be kept short if they need to be updated in this type of scenario.