プロセスをAPIで起動したい!
BAWでプロセスを起動する方法としては以下の様な方法が考えられます。
- ポータルのメニューからの起動
- プロセスからサービスとして呼び出す
- JavascriptAPIによる起動
- REST-APIによる起動
BAWではJavascriptとRESTの2種類のAPIが提供されており、自由なタイミングで起動することが可能です。この記事ではJavascriptとRESTでプロセスを起動する方法について説明します。
Javascriptによるプロセスの起動
https://www.ibm.com/docs/ja/baw/20.x?topic=examples-starting-new-process
サービス・フロー内に、以下の様なコードを実装することでプロセスを起動することが可能です。
var mybo= new tw.object.MyBO();//入力パラメータのBOを生成する
mybo.string1="test"
var input = new tw.object.Map(); //入力パラメータのためのMapを作成する
input.put("variable1", "test");
input.put("MyBO", mybo);
var instance = tw.system.startProcessByName("MyProcess", input, false); //プロセスの呼び出し
プロセス名と入力パラメータを指定するだけで呼び出し可能なため、実装が非常に簡単であることがメリットです。反面、特定のバージョンのプロセスを呼び出すなどの細かい制御を行うことはできません。

RESTAPIによるプロセスの起動
BAWの外部からプロセスを起動する際には、RESTAPIによるプロセスの起動が可能です。
https://www.ibm.com/docs/ja/baw/22.x?topic=process-post-start
RESTAPIによる呼び出しを行うには、まずCSRFTokenを取得し、トークンをヘッダーにセットしてからプロセス起動のAPIを呼びだす必要があり少し面倒です。基本的にはBAWの外部からBAWを呼び出すことがメインの使用方法で、サービスフローの中からRESTAPIを呼び出すことは少ないのですが、以下にBPMRestRequestを用いたREST呼び出しの例を示します。
特に入力パラメータ際に、inputパラメータとしてinputという名前のパラメータの配列を渡す部分が分かりにくいので注意してください。
var request = new BPMRESTRequest();
request.externalServiceName = "BAWREST";
request.httpMethod="POST";
request.operationName="startProcess";
request.httpHeaders = {
"BPMCSRFToken":tw.local.createBPMCSRFToken.csrf_token,
"Content-Type": "application/json";
"Accept": "application/json"
};
request.parameters = {"model": "MyProcess", "container": "BATT",
"input":{"input":[{"name":"variable1","data":"aaaa"},{"name":"MyBO","data":myBo}]}
};
var response = tw.system.invokeREST(request);
まとめ
この記事ではJavascriptとRESTによるプロセスの起動方法について説明しました。
BAWの外からプロセスを起動する方法としては他にもJavascriptによるプロセスの呼び出しをサービス・フローとして実装し、そのサービス・フローをRESTサービスとして公開する方法もあります。製品提供のREST-APIはトークンの取得など複数の呼び出しが前提なので、Webhookによる連携などを行う場合には単発のAPI呼び出しでプロセスの起動が可能なこのような方法をとるのも良いでしょう。
#baw#BusinessAutomationWorkflow(BAW)