You are on page 1of 4

"Asynchronous Server Requests" business service is needed to run workflow asynchronous. [ID 476397.

1]

In this Document
Goal Solution

Applies to:

Siebel Workflow - Version: 6.0.0 [2832] and later [Release: V6 and later ] z*OBSOLETE: Microsoft Windows 2000 ***Checked for relevance on 11-Jan-2012*** Release(s):V6 (Siebel 2000-Enterprise) Database(s):All App Server OS(s):All Latest release tested against:V7 (Enterprise) Keywords:WF, Process, Asynchronous Server Requests, Script, Workflow Process Manager (Server Request), Business Integration Manager This document was previously published as Siebel FAQ 1508.
Goal

"Asynchronous Server Requests" business service is needed to run workflow asynchronous..


Solution

There are two methods of invoking a workflow process that support running a process on the Siebel server:

From a workflow policy From a script

The Siebel application does not provide a standard Asynchronous Workflow business service, but customers can use the provided example "Asynchronous Server Requests" business service, or configure their own business service to submit asynchronous workflow process manager (for details on how to configure a business service to submit

server requests, please contact Siebel Technical Support). Please test thoroughly before implementing in a production environment. Given below are three examples to run a Workflow Process named "Service Request" asynchronously. The first one and the second one call the standard Asynchronous Server Requests business service, the third one calls a configured business service named "Workflow Process ASYNCH (SERVER)". 1. Using "Asynchronous Server Request" function Call_Workflow (CommandLine) { var svc; var child; var input; var output; var rowid; var buscomp; svc = TheApplication().GetService("Asynchronous Server Requests"); input = TheApplication().NewPropertySet(); child = TheApplication().NewPropertySet(); output = TheApplication().NewPropertySet(); // Prepare SRM arguments input.SetProperty("Component", "WfProcMgr"); // Prepare WfProcMgr arguments buscomp = TheApplication().ActiveBusComp(); rowid = buscomp.GetFieldValue("Id"); child.SetProperty("ProcessName", "Service Request"); child.SetProperty("RowId", rowid); // SRM requires component-specific arguments to be in a child property set input.AddChild(child); // Submit the request svc.InvokeMethod("SubmitRequest", input, output); } 2. Using "Asynchronous Server Request" to invoke the SAP Integration Workflow Process from Siebel Mobile Client: // // Instantiating application objects, necessary to perform a server request // (business service and property sets) // var svc = TheApplication().GetService("Asynchronous Server Requests"); var req = TheApplication().NewPropertySet(); // workflow process input parameters

var inp = TheApplication().NewPropertySet(); // server request input parameters var out = TheApplication().NewPropertySet(); // a dummy definition (never used) var bc = TheApplication().ActiveBusComp(); // an 'Order Entry - Orders' business component instance var rowid = bc.GetFieldValue("Id"); // a Sales Order row id // // Setting an integration workflow process name // (to get sales order status from SAP R/3) // req.SetProperty( "ProcessName", "Order - Get SAP Order Status" ); // // Specifying a Siebel Object Id to be processed by a workflow process // (siebel sales order Row Id) // req.SetProperty( "RowId", rowid ); // // Setting a requested component name (it's alias) to be invoked // ('Business Integration Manager') // inp.SetProperty( "Component", "BusIntMgr" ); // // Supplying component parameters in server request // inp.AddChild( req ); // // Submit a component server request asynchronously // to invoke a Component Server task on Siebel Server upon // Siebel Remote Client synchronization // svc.InvokeMethod( "SubmitRequest", inp, out ) 3. Using "Workflow Process ASYNCH (SERVER)" function Call_Workflow (CommandLine) { var svc; var input; var output; var rowid; var buscomp; svc = TheApplication().GetService("Workflow Process ASYNCH (SERVER)"); input = TheApplication().NewPropertySet(); output = TheApplication().NewPropertySet(); buscomp = TheApplication().ActiveBusComp(); rowid = buscomp.GetFieldValue("Id");

input.SetProperty("ProcessName", "Service Request"); input.SetProperty("RowId", rowid); svc.InvokeMethod("SubmitRequest", input, output); }