
- Questetra BPM Suite の外からプロセスを開始する(準備編)
- Questetra BPM Suite の外からプロセスを開始する(curl編)
- Questetra BPM Suite の外からプロセスを開始する(Python編)
- Questetra BPM Suite の外からプロセスを開始する(エラー対処編)
curl コマンドを用いてプロセスを開始する
データ転送を行えるコマンドである curl を用いて、Questetra BPM Suite にアクセスしてプロセスを開始しましょう。curl コマンドは Mac や Linux ではターミナル上でインストール不要で使用できます。Windows で curl コマンドを使う方法はいくつかありますが、本記事は Windows Subsystem for Linux 上の curl コマンドを用いる前提で進めます。
まずは curl コマンドで前の記事と同じことをしてみましょう。次のコマンドを実行してください。
$ curl https://example.questetra.net/System/Event/MessageStart/{processModelInfoId}/{nodeNumber}/start --data-urlencode "key={API キー}" --data-urlencode "title=test"
エンドポイント URL と API キーは「メッセージ開始イベント (HTTP) 詳細」を確認して置き換えてください。正しく入力できていれば、ブラウザからエンドポイントへアクセスしたときと同じようにプロセスが開始されるはずです。
さまざまなデータを送信する
では、件名以外のデータを送るにはどうすればいいでしょうか? データ項目には文字やユーザなど多くの種類が用意されていますが、それらのほとんどは件名と同じように送信できます。アプリのデータ項目を追加して確かめてみましょう。
アプリの設定
以下のようにデータ項目を追加してください。必須のチェックはいずれも不要です。データ編集許可は件名と同じように、メッセージ開始イベント (HTTP) に対して「編集可」、「確認」タスクに対しては「表示のみ」に設定してください。
項目名 | データ型 | その他の設定 |
---|---|---|
文字0 | 文字(単一行) | |
数値1 | 数値 |
|
選択2 | 選択(セレクトボックス) |
|
日付3 | 日付(年月日) | |
日時4 | 日時 | |
ファイル5 | ファイル | |
ユーザ6 | ユーザ(検索セレクトボックス) | |
組織7 | 組織 |
パラメータがどのようになるか確認するために、一度この状態で保存してアプリをリリースしてみましょう。メッセージ開始イベント (HTTP) 詳細を開くと、追加したデータ項目が「受信パラメータ」として並んでいるはずです。このままでも件名 (title) と同じようにデータを渡すことはできるのですが、「data[1].usdecimal」など、少しパラメータ名がわかりにくいですね。このパラメータ名は独自に設定することが可能なので、実際に使う前にわかりやすい名前に変えておきましょう。
各データ項目は「フィールド名」を持っており、あらかじめ設定しておくと、その名前が API のパラメータ名に適用されます。フィールド名はモデラーのデータ項目タブから編集できます。命名に関する規則は次の通りです。
- “q_” で始まること
- 使用可能な文字はアルファベット・数字・アンダーバー
- 64文字以内
各データ項目の設定画面最下部に「フィールド名」と付されたテキストボックスがあるので、そこに入力してください。このチュートリアルでは以下のように命名したと仮定します。
項目名 | フィールド名 |
---|---|
文字0 | q_str |
数値1 | q_float |
選択2 | q_selects |
日付3 | q_date |
日時4 | q_datetime |
ファイル5 | q_file |
ユーザ6 | q_email |
組織7 | q_group |
フィールド名の編集が終わったら、アプリを保存してリリースしてください。「メッセージ開始イベント (HTTP) 詳細」を確認してみましょう。受信パラメータ名は設定した通りの名前になっていますか?
ファイル以外を curl で送信する
では、追加したデータ項目も curl で送信してみましょう。ファイル型だけはやや方法が異なるので、別項で取り上げます。
複数のデータ項目に送信するときは、次のように書けます。
$ 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 はあなたのアカウントのメールアドレスなど、ご利用のシステム内にあるアカウントのメールアドレスに
それぞれ置き換えて、実行してください。このコマンドを実行すると、次のようにプロセスが開始されます。
このケースではファイルアップロードがあるため -F オプションを用いています。前述の通り、ファイル型を扱わないケースでは –data-urlencode オプションがいいでしょう。
メッセージ開始イベント (HTTP) に日本語などの非 ASCII 文字を含む文字列を送信する際、文字コードは UTF-8 である必要があります。文字化けなどの問題が発生した場合は、ターミナルの文字コード設定を確認してください。
このように、プロセスを開始するのに curl コマンドを利用することができます。シェルスクリプトや cron などを用いれば自動化の幅も拡がります。ぜひ様々に工夫して、メッセージ開始イベント (HTTP) を活用してください。次回は Python から HTTP リクエストを送る場合のコード例を紹介します。
ピンバック: Questetra BPM Suite の外からプロセスを開始する(Python編) – Questetra Support
ピンバック: Questetra BPM Suite の外からプロセスを開始する(エラー対処編) – Questetra Support
ピンバック: メッセージ開始イベント(HTTP) – Questetra Support