microflow は、receive アクティビティーまたは pick アクティビティーから開始できます。
開始サービスが固有であるのは、microflow が receive アクティビティーを使って開始された場合、または pick アクティビティー内に 1 つの onMessage 定義のみがある場合です。
このタスクを実行する理由と実行時期
microflow によって要求/応答操作がインプリメントされている場合、つまり、プロセスに応答が入っている場合、call メソッドを使用してそのプロセスを実行し、その呼び出しでパラメーターとしてプロセス・テンプレート名を渡すことができます。
microflow が片方向操作である場合は、sendMessage メソッドを使用してプロセスを実行します。
このメソッドは、次の例には含まれていません。
このタスクのステップ
- オプション: プロセス・
テンプレートをリストして、実行するプロセスの名前を探します。
プロセスの名前が既に分かっている場合、このステップはオプションです。
ProcessTemplateData[] processTemplates = process.queryProcessTemplates
("PROCESS_TEMPLATE.EXECUTION_MODE =
PROCESS_TEMPLATE.EXECUTION_MODE.EXCECUTION_MODE_MICROFLOW",
"PROCESS_TEMPLATE.NAME",
new Integer(50),
(TimeZone)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 が、呼び出し元に戻されます。