微流程可以由接收活动或检取活动启动。如果微流程由接收活动启动,或者检取活动只有一个 onMessage 定义,则启动服务是唯一的。
执行本任务的原因和时间
如果微流程实现了“请求-响应”操作(即,该流程包含应答),则可使用
call 方法来运行该流程并传递流程模板名作为调用参数。
如果微流程是单向操作,请使用 sendMessage 方法来运行该流程。本示例未阐述此方法。
本任务的步骤
- 可选: 列示流程模板以查找所要运行的流程的名称。
如果您已知道该流程的名称,则此步骤是可选的。
ProcessTemplateData[] processTemplates = process.queryProcessTemplates
("PROCESS_TEMPLATE.EXECUTION_MODE =
PROCESS_TEMPLATE.EXECUTION_MODE.EXCECUTION_MODE_MICROFLOW",
"PROCESS_TEMPLATE.NAME",
new Integer(50),
null);
结果将按名称排序。此查询将返回一个数组,该数组包含 call 方法可以启动的前 50 个模板(已排序)。
- 使用适当类型的输入消息来启动流程。
创建消息时,必须指定其消息类型名,以便包含消息定义。
ProcessTemplateData template = processTemplates[0];
//create a message for the single starting receive activity
ClientObjectWrapper input = process.createMessage
(template.getID(),
template.getInputMessageTypeName());
DataObject myMessage = null;
if ( input.getObject()!= null && input.getObject() instanceof DataObject )
{
myMessage = (DataObject)input.getObject();
//set the strings in the message, for example, a customer name
myMessage.setString("CustomerName", "Smith");
}
//run the process
ClientObjectWrapper output = process.call(template.getName(), input);
DataObject myOutput = null;
if ( output.getObject() != null && output.getObject() instanceof DataObject )
{
myOutput = (DataObject)output.getObject();
int order = myOutput.getInt("OrderNo");
}
此操作创建流程模板 CustomerTemplate
的实例并传递一些客户数据。仅当该流程完成后,此操作才会返回。将把该流程的结果(OrderNo)返回给调用者。