Questetra では、リリース前に開発中ワークフローアプリの動作確認を行う[デバッグ実行]の機能が提供されています。これまでは[開始イベント]からアプリ全体のデバッグ実行と、特定の自動工程のみのデバック実行が可能でした。 Ver. 15.0(2023年4月)からは、 HTTP リクエストの受信により開始されるアプリをデバッグ実行できるようになりました。
本記事では、HTTP リクエストの送受信によりデバッグプロセスを開始する方法について説明します。なお、手動による[開始イベント]からのデバッグや特定の自動工程のみのデバッグの方法は、次の記事を参照してください。
Table Of Contents
自動連携アプリのデバッグについて
[メッセージ開始イベント(HTTP/Webhook)]では指定 URL で HTTP リクエストを受信すると、新しいプロセスが開始されます。このとき、受信した HTTP リクエストに「Questetra-Debug: true」のヘッダが含まれていると、新しいプロセスはデバッグプロセスとして開始されます。デバッグプロセスはアプリの[開発中]バージョンで動作し、アプリ全体のデバッグを行えます。
HTTP 受信で開始されたデバッグプロセスでは、アプリの編集を最後に行ったユーザ(*)がすべての[ヒューマンタスク]の処理担当者として割り当てられます。また、[開始イベント]からのデバッグを行う場合とは異なり、[プロファイル]や[すべて自分が担当]のオプションを指定してデバッグを行う方法は提供されておりません。
(*) [最終編集ユーザ / リリースユーザ]

HTTP 通信で必要となる受信 URL や key 、受信パラメータなどの情報は[メッセージ開始イベント(HTTP)]のプロパティ画面にある[URL、受信パラメータ]から、詳細画面を開いて確認できます。
BPMN アイコン:[メッセージ開始イベント(HTTP)]
BPMN アイコン:[メッセージ開始イベント(Webhook)]
- [受信パラメータ]は[メッセージ開始イベント(HTTP)]の[編集の可否]設定に基づきます
- [開発中]バージョンの編集によりデータ項目が[編集可]に設定されると、その項目のフィールド名をパラメータ名とする[受信パラメータ]が開設されます
- 新規作成アプリが[リリース]されるまでは、編集内容が[URL、受信パラメータ]詳細画面の[受信パラメータ]一覧に反映されます
- アプリが一度でも[リリース]されると、[URL、受信パラメータ]の表示内容は[最新]バージョンに基づくようになります
- [開発中]バージョンで[受信パラメータ]が追加されても[URL、受信パラメータ]詳細画面には表示されません
- 表示の有無にかかわらず、デバッグプロセスでは[開発中]バージョンの設定に基づいてデータの受け渡しが実行されます
- 表示されていないデータ項目に値を受け渡すには、対象とするデータ項目のフィールド名を送信パラメータ名に指定します

デバッグ起動の方法
Curl コマンドによるデバッグ起動
[メッセージ開始イベント(HTTP)]に対して HTTP リクエストを送信する際、「Questetra-Debug:true」ヘッダを追加します。
HTTP リクエストの例:
$ curl https://example.questetra.net/System/Event/MessageStart/123/0/start \
-H "Questetra-Debug:true" \
-d "key=XYZXYZ" \
-d "q_string1=foo"
Blog:Questetra BPM Suite の外からプロセスを開始する
Workflow アプリを使ったデバッグ起動
デバッグプロセスでデバッグ起動する
Questetra では以下の自動工程を利用して HTTP リクエストを送信できます。デバッグプロセスから HTTP 送信される場合、送信されるリクエストには「Questetra-Debug: true」ヘッダが自動的に追加されます。そのため、HTTP 受信して開始されたプロセスはデバッグプロセスとなります。
- [サービスタスク(子プロセス開始)]のデータ受け渡しに関する設定項目は、受信側となる子アプリの[最新]バージョンに基づきます
- 子アプリの[開発中]バージョンで追加されたデータ項目は、データ受け渡し設定に反映されません
- 子アプリを一旦[リリース]した後、[サービスタスク(子プロセス開始)]のデータ受け渡し設定を変更してからデバッグ実行します
- Blog:複数のワークフローアプリを連携させて運用する

通常プロセスでデバッグ起動する
送信リクエストに[カスタム HTTP ヘッダ]として「Questetra-Debug: true」を追加します。これにより、HTTP リクエストが(デバッグプロセスではない)通常のプロセスから送信された場合でも、受信側ではデバックプロセスが開始されます。
- [メッセージ送信中間イベント(HTTP)]
- 設定画面の[ヘッダ]タブにて、「Questetra-Debug」ヘッダを追加し、値に「true」を指定します。
- [スクリプトタスク]
- HttpRequestWrapper の header(String name, String value) を利用して「Questetra-Debug: true」ヘッダを追加します。
- Reference:R2300: スクリプトタスクで利用できる Java クラス

デバックプロセスでは HTTP リクエスト送信時に「Questetra-Debug: true」ヘッダが自動的に追加されますが、[カスタム HTTP ヘッダ]に「Questetra-Debug」ヘッダが追加された場合、[カスタム HTTP ヘッダ]の値が優先されます。すなわち、[カスタム HTTP ヘッダ]に「Questetra-Debug」を追加して値に「false」を指定すると、デバッグプロセスから送信された HTTP リクエストであっても[最新]バージョンで通常プロセスが開始されます。
(一度も[リリース]されていないアプリに送信された場合は[最新]バージョンが存在しないので、新規プロセスは開始されず送信側の自動工程は[エラー終了]となります。)