Siebel Workflow: the third option

This blogpost is written for all Siebel configurators working on Workflows.

Recognize the problem that you are working on a Workflow, but you need to do an operation (query, update, insert, etc.) on a Business Component that is not part of the Business Object of the Workflow?
Siebel Bookshelf will tell you to either create a sub Workflow or to associate that Business Component to the Business Object the Workflow is based on: “You can define a Siebel Operation step for a business component associated with the business object defined for the workflow process. If you need to update a business component not associated with the business object, you can invoke a subprocess or associate the business component to the business object using Siebel Tools.”.

But, there is a third option … the vanilla Business Service “Inbound E-mail Database Operations¹”. This Business Service holds the following documented methods (some email specific):

  • AttachFile: Creates an attachment record
  • DeleteRecord: Deletes a record
  • ExpandBCTemplate: Substitutes values in a template
  • FindRecord: Finds a record
  • FindRecordEx: Matches contacts when processing inbound email
  • GetFieldValues: Gets the field values from a record
  • GetRecordList: Gets a list of records
  • InsertRecord: Inserts a record

¹: To use the Inbound “E-mail Database Operations” Business Service, a license for “Siebel Email Response” is required.

With most of these methods it is possible to do operations on a Business Component without being restricted to the Business Object of the Workflow. Depending on the operation to perform on the Business Component the input arguments differ.

For instance doing an insert (the ‘InsertRecord’ method) requires the Business Object, Business Component and the Business Component Fields with their values (each field is one single input argument). See the following example:

Workflows1

Figure 1: Example of input arguments for the ‘InsertRecord’ method

The output argument of this method is the Id of the created record.

Another example is doing a query (the ‘FindRecord’ method). This requires the Business Object, Business Component, the Business Component Fields to query on (the ‘QueryFields’ input argument) and the Business Component Fields of which a value needs to be returned (the ‘ValueFields’ input argument, which is defined as a comma-separated list of fields). See following example:

Workflows2

Figure 2: Example of input arguments for the ‘FindRecord’ method

The output arguments of this method, are the fields defined in the ‘ValueFields’ input argument (each field is one single output argument).
Keep in mind that if no record is found, this step returns an error. So, an error exception connector is needed to deal with this.

What you will notice when looking at the methods of this Business Service, is that an update method seems to be lacking. ‘Seems to be’, because it is actually there under the name ‘UpdateRecord’ method. It is one of the many undocumented ‘features’ of Siebel.
Within the properties window of the Workflow editor you therefore cannot select it from the picklist … you need to type it.

Workflows3

 

 

 

 

 

 

Figure 3: WF Step properties

The input arguments are the same as for the ‘InsertRecord’ method mentioned above plus the Id of the record to be updated. The output arguments are exactly the same as for the ‘InsertRecord’ method mentioned above.

Reference:
http://docs.oracle.com/cd/E14004_01/books/eMail/eMail_BusServMeth5.html

Should you need any more help on the subject, contact the Ebicus Siebel experts.