We have moved to a Please visit there for updated posts

Tuesday, September 25, 2007

Runtime Events Workflows - Part 2

This Article is about Siebel CRM 7.X Workflows and Runtime Events. It tells you how can we use them to our advantange.

In this article I will tell you about the actual process of Setting up Runtime Event and Business Service assuming you have working knowledge of both. If you want to know the basics of these please see other posts of my blog.

Just one important thing that you should know about runtime evetns is that they are executed even before the Business Component Events.

To explain it better I am taking an example where our requirement is to execute a workflow when you click Submit Oppty button on Opportunity Form Applet.

  1. Goto Administration ==>Runtime Events Screen
  2. Goto Action Sets View
  3. Create a New Record in the Action Set View of Runtime Events Administration Screen
  4. Enter Any Name in the Name Field of the Action Set List Applet
  5. Create New Record List Applet Below it
  6. Enter

Name = "TestRuntimeEvent" ;
Action Type = "Business Service" ;
Sequence = "1"

  1. In the Form Applet Below Enter the Following Details Business Service = "TestBS" ; Business Service Method = "TestMethod"8. Click Menu ==> Reload Runtime Events Make Sure that you have Active Flag checked in both List Applets.

You are done in Action Set View.

Now Goto Events view and Follow the steps given below

  1. Click New and Enter the Following Information

Sequence = 1 ;
Object Type = "Applet" ;
Object Name = "Opportnity Form Applet" ;
Event = "InvokeMethod" ;
Sub Event = "Submit Oppty" ;
Action Set = "TestRunTimeEvent"

Conditional Expression should be given if you want the restrict the execution of this Runtime Event to certain conditions and Action Set Name is always the name of the action set that we created.

2. Click Menu ==> Reload Runtime Events.

* Everytime you make a change to runtime events you have to Reload them to activate the changes that you have made.

Now we are through the Runtime Event parts.

What we have done so far is that When user clicks Submit Oppty button it is going to call BS named TestBS with method as "TestMethod".

Now we are going to write the code in the busines service which will actually result in the execution of Workflow Process Asynchronously.

  1. Go To Administration ==> Business Service
  2. Create a Business Record with name "TestBS"
  3. Create a Record in List Applet for Service_PreInvokeMethod and choose Programming Langauge as "eScript"

Write the Following code in Code Window inside the function Service_PreInvokeMethod

if(MethodName == "TestMethod")
var svc;
var child;
var input;
var output;
var rowid;
var bo = TheApplication().ActiveBusObject();
var bc = bo.GetBusComp("Opportunity"); // Change the BusComp name with the name of the BusComp you want to execute the workflow with
svc = TheApplication().GetService("Asynchronous Server Requests"); // Don't change this - Actual BS that is responsible for submitting a job to WPM
input = TheApplication().NewPropertySet();
child = TheApplication().NewPropertySet();
output = TheApplication().NewPropertySet();
input.SetProperty("Component", "WfProcMgr");
rowid = bc.GetFieldValue("Id");
// We would like to pass the row id of the Current record on which the user is working - You can pass more than one arguments
child.SetProperty("ProcessName", "Service Agreement - Agreement Status"); // Workflow process you want to execute
child.SetProperty("RowId", rowid); // passing the values
svc.InvokeMethod("SubmitRequest", input, output); /// invoking the business service method
svc = null; // nullfiying the objects
child = null;
output = null;
input = null;

And you are done!!!!!!!!!
Please post your comments if this post helps you in anyway.

Click Here to Goto Part 1 of this Article

You Might want to read following articles also.