
- Questetra BPM Suite の外からプロセスを開始する(準備編)
- Questetra BPM Suite の外からプロセスを開始する(curl編)
- Questetra BPM Suite の外からプロセスを開始する(Python編)
- Questetra BPM Suite の外からプロセスを開始する(エラー対処編)
curl コマンドを用いてプロセスを開始する
データ転送を行えるコマンドである curl を用いて、Questetra BPM Suite にアクセスしてプロセスを開始しましょう。curl コマンドは Mac や Linux ではターミナル上でインストール不要で使用できます。Windows でも Windows10 以降では標準で curl がインストールされています。本記事は Windows のコマンドプロンプトで curl コマンドを用いる前提で進めます。
まずは curl コマンドを実行して特定の URL にアクセスすることで、プロセスを開始してみましょう。作成したアプリに設置した[メッセージ開始イベント (HTTP)]のエンドポイント URL などが必要になるので、「メッセージ開始イベント (HTTP) 詳細」を開いておいてください。
[メッセージ開始イベント (HTTP)]へのリクエストは POST メソッドで送信する必要があります。-X オプションを使ってリクエストメソッドをPOSTに指定します。
今回はプロセスを開始すると同時に、データ項目「件名」に入力する内容も送信することにします。エンドポイント URL の末尾にパラメータを付与し、アプリに送信したいデータを渡すことができます。例えば件名を「test」にするならば、次のようになります。
curl -X POST "https://example.questetra.net/System/Event/MessageStart/{processModelInfoId}/{nodeNumber}/start?key={API キー}&title=test"
エンドポイント URL と API キーは置き換えてください。「メッセージ開始イベント (HTTP) 詳細」の受信パラメータ一覧に記載されているので、そこからコピー&ペーストしてください。受信パラメータ名も受信パラメータ一覧に列挙されています。エンドポイント URL の末尾に ? を付け、その後ろに name=content の形式でデータを付与します。
コマンドを実行すると、プロンプト画面に開始したプロセスの ID が返されます。あなたのアカウント(処理担当者)で Questetra BPM Suite にログインすれば、開始されたプロセスの「確認」タスクが届いているはずです。このとき、件名がパラメータに渡したものになっているかどうか確認してください。
さまざまなデータを送信する
では、件名以外のデータを送るにはどうすればいいでしょうか? データ項目には文字やユーザなど多くの種類が用意されていますが、それらのほとんどは件名と同じように送信できます。アプリのデータ項目を追加して確かめてみましょう。
アプリの設定
以下のようにデータ項目を追加してください。必須のチェックはいずれも不要です。データ編集許可は件名と同じように、メッセージ開始イベント (HTTP) に対して「編集可」、「確認」タスクに対しては「表示のみ」に設定してください。
| 項目名 | データ型 | フィールド名 | その他の設定 |
|---|---|---|---|
| 文字0 | 文字(単一行) | q_str | |
| 数値1 | 数値 | q_float |
|
| 選択2 | 選択(セレクトボックス) | q_selects |
|
| 日付3 | 日付(年月日) | q_date | |
| 日時4 | 日時 | q_datetime | |
| ファイル5 | ファイル | q_file | |
| ユーザ6 | ユーザ(検索セレクトボックス) | q_email | |
| 組織7 | 組織 | q_group |
ファイル以外を curl で送信する
では、追加したデータ項目も curl で送信してみましょう。ファイル型だけはやや方法が異なるので、別項で取り上げます。
先ほどのコマンドでは ? と name=content の形式でデータを付与しましたが、今回は –data-urlencode オプションを使用します。API キーや title=test も含めて、1つずつ –data-urlencode オプションを使って追加します。
なお、 –data-urlencode オプションを指定した場合は自動的に POST メソッドでの送信となるので、 -X POST は省略できます。
複数のデータ項目に送信するときは、次のように書けます。
curl https://example.questetra.net/System/Event/MessageStart/{processModelInfoId}/{nodeNumber}/start ^
--data-urlencode "key={API キー}" ^
--data-urlencode "name1=content1" ^
--data-urlencode "name2=content2" ^
...
例えば次のようなコマンドで、件名 (title) に「test」、数値 (q_float) に「1.23」を入力した状態でプロセスを開始できます。
curl https://example.questetra.net/System/Event/MessageStart/{processModelInfoId}/{nodeNumber}/start ^
--data-urlencode "key={API キー}" ^
--data-urlencode "title=test" ^
--data-urlencode "q_float=1.23"
各データ型に対する具体的な記入例などは以下の表を参考にしてください。
| データ項目 | サブタイプ | フォーマット | 入力例 | 備考 |
|---|---|---|---|---|
| APIキー | – | – | key={API キー} | API キーはイベント詳細に記載 |
| 件名 | – | 任意の文字列 | title=test | 文字数制限などはデータ項目設定に依存 (デフォルトでは 256 文字以内) |
| 文字 | 単一行 | 任意の文字列 | q_str=aiueo | 文字数制限などはデータ項目設定に依存 |
| 複数行 | ||||
| 数値 | – | 任意の数値 | q_float=1.23 | 入力値の範囲制限・小数点以下の桁数などはデータ項目設定に依存 (入力値の小数点以下の桁数が設定より多いとエラー) 小数点は “.”(ピリオド) 桁区切り文字はなし |
| 選択 | ラジオボタン | 選択肢ID | q_selects=true | 各選択肢に対応する選択肢 ID はデータ項目設定に依存 |
| セレクトボックス | ||||
| 検索セレクトボックス | ||||
| チェックボックス | 選択肢ID (複数送信可) |
q_selects=Monday | 各選択肢に対応する選択肢 ID はデータ項目設定に依存 複数選択する場合は、同じパラメータ名で複数送信 |
|
| 日付 | 年月日 | yyyy-mm-dd | q_date=2018-11-01 | |
| 年月 | yyyy-mm | q_date=2018-11 | ||
| 月日 | mm-dd | q_date=11-01 | ||
| 年 | yyyy | q_date=2018 | ||
| 日時 | – | yyyy-mm-dd HH:MM | q_datetime=2018-11-01 10:00 | |
| ファイル | – | ファイルのパス | q_file=@ques-kun.png | ファイルアップロードの場合、-F オプションが必要(後述) 複数のファイルをアップロードする場合は、同じパラメータ名で複数送信 |
| ユーザ | セレクトボックス | ユーザのEメールアドレス | q_email=example@email.com | |
| 検索セレクトボックス | ||||
| 組織 | – | 組織名 | q_group=10 管理部 |
ファイルを送信する
上にもある通り、ファイル型のデータ項目にデータを送信しない場合は、–data-urlencode オプションでの POST 送信がおすすめです。しかし application/x-www-form-urlencoded 形式でデータを送信する –data-urlencode オプションではファイルを取り扱えません。そのため、ファイル型のデータ項目を扱う時は、 multipart/form-data 形式でデータ送信を行う -F オプションを使用する必要があります。また、–data-urlencode オプションと -F オプションを同時に使用することはできません。
curl https://example.questetra.net/System/Event/MessageStart/{processModelInfoId}/{nodeNumber}/start ^
-F "key={API キー}" ^
-F "{ファイル型項目のパラメータ}=@{ファイルのパス}" ^
-F "name1=content1" ^
...
例えば次のように書くと、件名 (title) を「test」とした上で、ques-kun.png をアップロードしてプロセスを開始できます。
curl https://example.questetra.net/System/Event/MessageStart/{processModelInfoId}/{nodeNumber}/start ^
-F "key={API キー}" ^
-F "title=test" ^
-F "q_file=@ques-kun.png"
これまでの内容をまとめると、次のようなコマンドも書けます。
curl https://example.questetra.net/System/Event/MessageStart/{processModelInfoId}/{nodeNumber}/start ^
-F "key={API キー}" ^
-F "title=テスト" ^
-F "q_str=プロセス開始テストです" ^
-F "q_float=1.23" ^
-F "q_selects=false" ^
-F "q_date=2018-04-01" ^
-F "q_datetime=2018-04-01 12:34" ^
-F "q_file=@ques-kun-01.png" ^
-F "q_file=@ques-kun-02.png" ^
-F "q_email=questetra+Canarias@gmail.com" ^
-F "q_group=10 管理部"
ファイル型/ユーザ型データに渡す値については
- ques-kun-01.png / ques-kun-02.png は適当なファイル名に
- questetra+Canarias@gmail.com はあなたのアカウントのメールアドレスなど、ご利用のシステム内にあるアカウントのメールアドレスに
それぞれ置き換えて、実行してください。このコマンドを実行すると、次のようにプロセスが開始されます。

このように、プロセスを開始するのに curl コマンドを利用することができます。シェルスクリプトや cron などを用いれば自動化の幅も拡がります。ぜひ様々に工夫して、メッセージ開始イベント (HTTP) を活用してください。次回は Python から HTTP リクエストを送る場合のコード例を紹介します。

ピンバック: Questetra BPM Suite の外からプロセスを開始する(Python編) – Questetra Support
ピンバック: Questetra BPM Suite の外からプロセスを開始する(エラー対処編) – Questetra Support
ピンバック: メッセージ開始イベント(HTTP) – Questetra Support