Jira Service Management の自動化ルールが失敗してエラー ステータスと赤いエクスクラメーション マークが表示される
プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
要約
Jira Service Management (JSM) プロジェクトでは [プロジェクト設定] > [自動化] で自動化ルールを設定できます (「サービス プロジェクトの自動化」を参照)。このような自動化ルールが実行に失敗することがあります。[プロジェクト設定] > [自動化] のページに移動し、[ログを参照] リンクをクリックして自動化ルールの監査ログを確認すると、次の内容が確認できます。
- ステータス列にエラーが表示されている
- [詳細を表示] リンクをクリックして監査ログを展開すると、IF または THEN セクションに赤いエクスクラメーション マークが追加情報なしで表示されている。次のスクリーンショットを参照
この KB 記事では、このような監査ログでは詳細がわからない自動化ルールのトラブルシューティング方法を説明します。
このナレッジベース記事は JSM の自動化モジュール ([プロジェクト設定] > [自動化] で設定) のみを対象としており、Automation for Jira アドオンの自動化モジュール ([プロジェクト設定] > [プロジェクト自動化] で設定) は対象外です。Automation for Jira をご利用の場合、このナレッジベース記事は適用されません。
環境
Jira Service Management (JSM) Server/Data Center 4.0.0 以降の任意のバージョン
診断
UI の監査ログで失敗の詳細がわからない場合であっても、自動化ルールの失敗理由を理解するうえで役立つメッセージを Jira のデータベースから抽出できます。データベースからエラー メッセージを取得する手順は次のとおりです。
- まず、自動化ルールの ID を UI から取得する必要があります。この ID は、対象の自動化の監査ログ ページに移動し、URL で /automation/log/ に続く末尾の数字を取得することで得られます。次のスクリーンショットをご確認ください。
Jira データベースに接続して次の SQL クエリを実行します。
以下のクエリの <AUTOMATION_ID> を前の手順で取得した自動化 ID で置き換えてから実行するようにします。
The SQL query below was written and tested for a PostgreSQL database:
select rule_ex."START_TIME_MILLIS", rule_ex."EXECUTOR_USER_KEY", then_act_ex."MESSAGE", then_act_ex."OUTCOME" from "AO_9B2E3B_RULE_EXECUTION" rule_ex inner join "AO_9B2E3B_RULE" rule on rule."ID" = rule_ex."RULE_ID" inner join "AO_9B2E3B_IF_THEN_EXECUTION" if_then_ex on rule_ex."ID" = if_then_ex."RULE_EXECUTION_ID" inner join "AO_9B2E3B_THEN_EXECUTION" then_ex on if_then_ex."ID" = then_ex."IF_THEN_EXECUTION_ID" inner join "AO_9B2E3B_THEN_ACT_EXECUTION" then_act_ex on then_ex."ID" = then_act_ex."THEN_EXECUTION_ID" where rule."RULESET_REVISION_ID" in ( select ruleset."ACTIVE_REVISION_ID" from "AO_9B2E3B_RULESET" ruleset where ruleset."ID" = <AUTOMATION_ID> ) and rule_ex."OUTCOME" = 'ERROR';
For MS SQL Server, you can run the SQL below instead:
select rule_ex.START_TIME_MILLIS, rule_ex.EXECUTOR_USER_KEY, then_act_ex.MESSAGE, then_act_ex.OUTCOME from AO_9B2E3B_RULE_EXECUTION rule_ex inner join AO_9B2E3B_RULE rules on rules.ID = rule_ex.RULE_ID inner join AO_9B2E3B_IF_THEN_EXECUTION if_then_ex on rule_ex.ID = if_then_ex.RULE_EXECUTION_ID inner join AO_9B2E3B_THEN_EXECUTION then_ex on if_then_ex.ID = then_ex.IF_THEN_EXECUTION_ID inner join AO_9B2E3B_THEN_ACT_EXECUTION then_act_ex on then_ex.ID = then_act_ex.THEN_EXECUTION_ID where rules.RULESET_REVISION_ID in ( select ruleset.ACTIVE_REVISION_ID from AO_9B2E3B_RULESET ruleset where ruleset.ID = <AUTOMATION_ID> ) and rule_ex.OUTCOME = 'ERROR';
- クエリ結果の MESSAGE 列で自動化ルールの失敗理由を確認します。
- 自動化ルールが複数回失敗している場合、クエリで複数の行が返される可能性があります。適切なエラー メッセージを取得するには、START_TIME_MILLIS 列の時刻を Epoch 単位から人間が読める時間形式に変換し、それを監査ログのページの時刻と比較できます。
SQL クエリの結果の例
以下は、SQL クエリで得られた結果の例です。
この例では、エラー メッセージ "Issue transition validation failed" でルールが失敗したことがわかります。このエラーは、自動化を実行したユーザーにトランジションの実行権限がなかったために、そのユーザーの代理で自動化ルールが実行できなかったことがわかります。
原因
自動化ルールが実行に失敗して監査ログに赤いエクスクラメーション マークが表示される理由は、自動化ルールの設定方法に応じてさまざまです。
しかしながら、自動化ルールが失敗するもっともよくあるシナリオは、自動化ルールがワークフロー トランジションを実行するように設定されているが、その自動化ルールを実行したユーザーにトランジション権限がないことです。次のような原因が考えられます。
ソリューション
ソリューションは、自動化ルールの設定内容と SQL クエリで確認したエラー メッセージに応じてことなります。
自動化ルールがエラー "Issue transition validation failed" で失敗した場合は、問題を解決するために次のいずれかを行なえます。
- [プロジェクト設定] > [自動化] > [編集] で自動化ルールの設定内容を確認し、右上の [オプション] ボタンをクリックしてルールの実行ユーザーを変更します。次のスクリーンショットをご確認ください。設定を [プロジェクトのデフォルトとして実行] に変更し、プロジェクトのデフォルト ユーザーにトランジションの実行権限があることを確認します
- プロジェクトの権限スキームを確認し、プロジェクト内で課題のトランジション権限が適切なユーザーに割り当てられていることを確認します
- ワークフローのトランジション設定を確認し、特定のユーザーによるトランジション実行を妨げるような条件があるかどうかを確認します