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
選択2 選択(セレクトボックス)
  • 選択肢は初期設定のまま
    • 1 つ目の選択肢ID: true
    • 2 つ目の選択肢ID: false
    • 初期選択値: true
日付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 BPM Suite の外からプロセスを開始する(curl編)” への2件のコメント

  1. ピンバック: Questetra BPM Suite の外からプロセスを開始する(Python編) – Questetra Support

  2. ピンバック: Questetra BPM Suite の外からプロセスを開始する(エラー対処編) – Questetra Support

コメントは受け付けていません。