<context> <property name="P1" type="%String" /> <property name="P2" type="%String" /> ... </context>
|<property>||Optional. Zero or more <property> elements may appear. Each defines one property of the business process execution context.|
The life cycle of a business process requires it to have certain state information saved to disk and restored from disk, whenever the business process suspends or resumes execution. A BPL business process supports the business process life cycle with a group of variables known as the execution context.
The execution context variables include the objects called context, request, response, callrequest, callresponse and process; the integer value synctimedout; the collection syncresponses; and the %StatusOpens in a new tab value status. Each variable has a specific purpose, as described in documentation for the <assign>, <call>, <code>, and <sync> elements.
Most of the execution context variables are automatically defined for the business process. The exception to this rule is the general-purpose container object called context, which a BPL developer must define. Any value that you want to be persistent and available everywhere within the business process should be declared as a property of the context object. You can do this by providing <context> and <property> elements at the beginning of the BPL document, as follows. The resulting BPL code is the same whether you use the Business Process Designer or type the code directly into the BPL document:
When using the Business Process Designer, you can add properties of various types to the context object from the Context tab to the right of the BPL diagram. Add whatever properties you need by clicking the plus-sign next to Context properties. You can also edit or delete a property using the icons next to its name. The appropriate <context> and <property> elements appear in the generated BPL for the business process.
You can add <context> and <property> elements together at the beginning of the <process> element, as shown in the following example.
<process request="Demo.Loan.Msg.Application" response="Demo.Loan.Msg.Approval"> <context> <property name="BankName" type="%String" initialexpression="BankOfMomAndDad" /> <property name="IsApproved" type="%Boolean"/> <property name="InterestRate" type="%Numeric"/> <property name="TheResults" type="Demo.Loan.Msg.Approval" collection="list"/> <property name="Iterator" type="%String"/> <property name="ThisResult" type="Demo.Loan.Msg.Approval"/> </context> ... </process>
Each <property> element defines the name and data type for a property. For a list of available data type classes, see “Parameters” in the chapter “Data Types” in Defining and Using Classes. You may assign an initial value in the <property> element by providing an initialexpression attribute. Alternatively, you may assign values during business process execution, using the <assign> element.