You will now create the implementation of the business
process component, which is more complex than the implementation of
the human task.
Create the business process implementation:
- In the assembly editor, double-click the HelloWorldProcess process component to start work on it. Click Yes in the Open dialog and click OK in the Generate
Implementation dialog. The business process editor opens, as shown
here:
- Your process is going to invoke a human task, which could
take a long time to respond. As a result, you need the process to
be defined as long running. Click somewhere
in the white space of the editor and go to the Properties view and select the Details tab. Notice that
the process is identified as a Long-running process, as shown here:If you want to change the process from a long-running process
to a microflow, click the Refactor to Microflow link. This ensures that not only the process definition is changed,
but also the process component in the assembly editor. This means
that the process changes and all downstream artifacts impacted by
the change are updated.
- A business process is made of activities or individual
steps. When a process is initially created for an interface with a
request response operation, it has two activities pre-supplied: a Receive activity for starting the process through the
operation and a Reply activity for returning
the response to the caller. Your own activities will be inserted between
these two activities. On the palette, expand the Structures category and drag Generalized Flow and drop
it between Receive and Reply, as shown here: Note that some activities like
Generalized Flow are structured, meaning they are intended to contain
other activities. To produce a flow that branches, you must use Parallel
Activities, Generalized Flow, or Collaboration Scope.
- In the tray on the right side of the canvas, expand the Reference Partners category and drag and drop HelloWorldTaskPartner into the GeneralizedFlow structure, then set the name to InvokeTask, as shown here:This creates a configured Invoke activity that calls this
reference, which is wired to the human task component back in the
assembly editor. This means that at run time, the activity results
in the creation of an instance of your human task; that is, a to do task is created and awaits being claimed by one
of its potential owners. It is not fully configured yet, however.
You need to define where to get its input parameter data and store
its output results.
- On the canvas, select the InvokeTask activity and open the Properties view below
the editor. Select the Details tab. In the Inputs rows of the table, click on none in the cell of the gender row and of the
last column named Read from Variable. You see
a drop-down list showing all variables currently defined in this process
that have a matching type, which at this point consists only of the
input and output parameters of the process interface. Select the gender variable, which is the input parameter to this
process. This selection means that you will pass this variable's text
data as input to the human task.
- Similarly, in the Outputs rows,
click on none in the cell of the firstName row and of the last column named Store into Variable, but this time select New and create a new variable named firstname. Do the same for the lastName row and create
a new variable named lastname. Note that the
variables are created with the appropriate type for this reference
partner parameter. Your table should look like this:
- At run time when the InvokeTask returns,
you will have variables containing the first name and last name of
the user. The Hello World Part 1 sample service that you need to invoke
also requires a title like Mister, which means that you need to define
a variable to hold the value. Beside the Variables category in the tray, click the plus (+) icon as shown in the following
figure: The Add a Variable dialog
box opens.
- In the Name field, type the variable
name fullname and select the type FullName, which is a business object created in the Hello
World Part 1 sample. Click OK. This is the
matching data type of the variable that the service from the first
sample requires as input. Your variable list should now look like
this: The fullname variable has three
fields defined in it, all of type string: title, firstName and lastName. You will need to set a value for all three fields before you can
invoke the service, as described in the following steps.
- From the palette, expand the Basic Actions category and drag and drop the Assign activity
to the inside of the GeneralizedFlow structure
on the canvas. Rename it to AssignM.
- While AssignM is selected, go to
the Properties view and the Details tab. In the Assign To column of the table,
click on Select To. In the drop-down list,
expand fullname and select title.
- In the same table, in the Assign From column, click on Select From. Select String (enter a value) from the drop-down list and type Mr, as shown here:
- In the canvas, wire the InvokeTask activity to the AssignM activity and select Add a Link from the pop-up dialog box.
- Once again, drag and drop the Assign activity from the palette to the interior of the GeneralizedFlow structure and name it AssignF. Configure
it to assign Ms to the title field, as shown
here:
- Wire the InvokeTask activity to
the AssignF activity. In the resulting popup,
select Add a Link. Your flow should now look
like this:
- It is time to assign values to the remaining two fields
in fullname: namely firstName and lastName. You will set these from the values that are
returned from the human task. Drag and drop Assign again from the palette to the inside of the GeneralizedFlow structure and then rename it to AssignNames. Using the Add button to add another row
to the Assign table, configure it as shown in the following figure:
- Wire both the AssignF and AssignM activities to this new AssignNames activity and select Add a link when prompted.
The GeneralizedFlow should look like this:
- You need to condition the two links coming from InvokeTask so that there is some criteria about when
to follow each link. Select the blue link that goes into AssignF and go to the Details tab
of the Properties view. In the Expression Language field, select XPath 1.0 and then click the Edit button. The XPath Expression Builder opens.
- Set the gender condition to female using one of the following approaches:
- Type the expression $gender='female' directly and click OK.
- Click Insert Simple XPath and select $gender in the list of data types, then select the equals
sign (=) as the Operator in the Add an optional condition area and
type female in the corresponding Value field. Click OK twice.
- Select the link that goes into AssignM, and for its properties set the Expression Language to XPath 1.0
and the Condition to $gender!='female' as shown
here: Optional: It is possible to give your links a label by setting the Display Name in the Description tab of the Properties view, then showing the label by right-clicking
the link and selecting Show Labels on Links.
- In the tray, drag and drop HelloWorldPartner to a position immediately above the Reply activity and name it InvokeHW1, as shown
here:
- In the Details tab of the Properties
view, for the InvokeHW1 activity, bind the
input and output parameters to the fullname and result variables, as shown here:
- From the Basic Actions category in the palette, drag Snippet to immediately above Reply. In the Details tab of the Properties view,
there is a visual Java snippet editor. Double-click the Properties tab to go full screen. Click on Standard in the palette. The Add a Standard Visual Snippet
dialog appears. Expand utility and select print to log and then click OK. Click in the visual snippet editor canvas. A print to
log node appears.
- Drag the result variable from the
tray on the right to the visual snippet editor canvas. Wire from the result node to the print to log node, so that your snippet looks like this: Restore the Properties view to its normal
size. You have now visually authored Java code to emit
the contents of the result variable to SystemOut.
Technically, by wiring one node to another, you supply an input parameter
to a method.
- You are done authoring the process! Save your process.
It should look like this:
- Switch to the assembly editor and save your changes, then
switch back to the business process editor.
- Optional: In your process, you sometimes want to
know which activities use a particular variable. There is a way to
do that. In the tray, select the fullname variable.
From the Window menu, select Show
View > References. The References view opens in the lower
left of the perspective, where you see a graph showing as input to
the variable all those activities that set the variable, as shown
in the following figure:
Congratulations! The authoring steps are complete. It is now
time to test.