YouTrack および Hub ヘルプの開発者ポータル

SLA ルール

SLA ポリシールールは、ヘルプデスクプロジェクトのチケットの一連の時間ゴールを定義します。

ヘルプデスクプロジェクトの設定では、さまざまなフィールドとコントロールを使用して SLA を構築できます。UI で SLA ポリシーを構築するためのオプションがシナリオにとって十分ではない場合は、カスタムポリシーを作成できます。カスタム SLA ポリシールールは、ワークフロー API を使用して JavaScript で記述されます。

サンプル SLA ポリシールール

この SLA は、タイプフィールドが事件に設定されたチケットに適用されます。YouTrack は次のアクションを実行します。

  • YouTrack はチケットへのコメントをチェックし、エージェントからのコメントがあるかどうかを判断します。

  • チケットにエージェントからのコメントがなく、SLA ゴールフィールドが値に設定されている場合、最初の返信フィールドの値は 3 時間に設定されます。

  • チケットが解決されると、SLA サイクルが終了し、最初の返信フィールドがクリアされます。

  • SLA ゴールに違反すると、担当エージェントは優先度の高いチケットが期限切れであるという通知を受け取ります。

const entities = require('@jetbrains/youtrack-scripting-api/entities'); const REPLY_TIME_IN_MIN = 3*60; //3 hours const SLA_CALENDAR = entities.Calendar24x7.instance(); exports.rule = entities.Issue.sla({ title: "First Reply SLA for High Priority Incidents", guard: (ctx) => { const issue = ctx.issue; return (issue.isReported || issue.becomesReported) && issue.fields.is(ctx.Type, ctx.Type.Incident); }, onEnter: (ctx) => { configureBreach(ctx); }, action: (ctx) => { const issue = ctx.issue; if (issue.becomesResolved) { issue.fields[ctx.firstReply.name] = null; return; } if (issue.isChanged('comments') || issue.isChanged(ctx.slaTargetField)) { configureBreach(ctx); } }, onBreach: (ctx) => { const responsiblePerson = ctx.issue.fields.Assignee ? ctx.issue.fields.Assignee : ctx.project.owner; responsiblePerson.notify('First reply is overdue for the ticket {0}', ctx.issue.id, 'Please pay attention to the {0} high-priority incident pending a reply.', ctx.issue.id, true); }, requirements: { Type: { type: entities.EnumField.fieldType, name: "Type", Incident: { name: 'Incident' } }, slaTargetField: { type: entities.EnumField.fieldType, name: "Priority", High: { name: "High" } }, firstReply: { type: entities.Field.dateTimeType, name: 'First Reply' }, Assignee: { type: entities.User.fieldType, name: 'Assignee' } } }); function configureBreach(ctx) { const issue = ctx.issue; const isAgentComment = function(comment) { return (comment.author.login !== ctx.issue.reporter.login) && comment.isVisibleTo(ctx.issue.reporter); }; const hasAgentComments = setToArray(ctx.issue.comments).some(isAgentComment); if (!hasAgentComments && issue.is(ctx.slaTargetField, ctx.slaTargetField.High)) { ctx.issue.fields[ctx.firstReply.name] = ctx.issue.afterMinutes( ctx.issue.created, REPLY_TIME_IN_MIN, SLA_CALENDAR, true ); } else { ctx.issue.fields[ctx.firstReply.name] = null; } } function setToArray(set) { const arr = []; set.forEach(it => arr.push(it)); return arr; }

この SLA ルールを定義するコンポーネントは次のとおりです。

  • すべてのスクリプトは、require ステートメントのリストで始まります。このルールでは、ローカル変数 entities を宣言し、ワークフロー API で entities モジュールを参照します。これは、このモジュールに含まれるすべてのものに、このスクリプトで entities 変数を使用してアクセスできることを意味します。

  • 各スクリプトは、1 つのルールを exports.rule プロパティにエクスポートします。ルールは、Issue.sla メソッドで宣言されます。このメソッドは、宣言に続くスクリプトを変更時ルールとしてエクスポートします。

  • ルールの本体には、次の 3 つのプロパティが含まれています。

    プロパティ

    説明

    タイトル

    人間が読めるタイトル。このタイトルは、ヘルプデスクのプロジェクト設定の SLA ルールのリストに表示されます。

    ガード

    SLA ルールがチケットに適用されるタイミングを決定する条件。

    onEnter

    SLA ポリシーの適用を開始するときにチケットに適用する必要がある変更。

    この例では、YouTrack はチケットへのコメントをチェックし、エージェントからのコメントがあるかどうかを判断します。チケットにエージェントからのコメントがなく、SLA ゴールフィールドが値に設定されている場合、YouTrack は最初の返信フィールドの値を 3 時間に設定します。このロジックの実装は、別の configureBreach 関数に保存されます。

    アクション

    チケットに適用する必要がある変更。

    この例では、チケットが解決された場合、YouTrack は SLA サイクルを終了し、最初の返信フィールドをクリアします。YouTrack は、新しいコメントまたは SLA ゴールフィールドの更新があるときに SLA タイマーを再計算し、これに configureBreach 関数を使用します。

    違反について

    SLA ゴールのいずれかに違反した場合にチケットに適用する必要がある変更。

    この例では、SLA ゴールに違反した場合、YouTrack は担当エージェントに通知を送信します。

    要件

    ルールがエラーなしで実行されるために必要なエンティティのリスト。このプロパティにより、ルールをプロジェクトに安全にアタッチできるようになります。

    この例では、要件により、優先度フィールドとタイプフィールドに正しい型が格納され、必要な値が含まれることが保証されます。この要件では、担当者フィールドと最初の返信タイマーの専用フィールドが存在することも保証します。

JavaScript SLA ルールのプロパティの詳細については、「SLA ルールのプロパティ」を参照してください。

2026 年 7 月 06 日

関連ページ:

JavaScript SLA ポリシー

SLA が複雑で、その構成をより詳細に行う必要がある場合は、JavaScript を使用してカスタム SLA ポリシーを作成できます。JavaScript を使用して SLA ポリシーを作成するには: メインナビゲーションメニューから、プロジェクトを選択します。構成するヘルプデスクプロジェクトの名前をクリックします。プロジェクトナビゲーションメニューから設定を選択し、次にプロジェクト設定サイドパネルで SLA ポリシーを選択します。新しいポリシーボタンの近くにあるドロップダウンメニューから、Java...

YouTrack ワークフロー API

パッケージにはモジュールのコレクションが含まれています。これらのモジュールは、YouTrack 内のエンティティを参照および更新するためのカスタム関数、メソッド、コンストラクターを提供します。また、各エンティティに利用できるプロパティも定義します。以下のモジュールが利用可能です。date-time このモジュールには、日付と時刻を操作するための関数が含まれています。entities ワークフローにアクセス可能な YouTrack 内のエンティティの定義が含まれています。httpHTTP を介してデー...

アクションルール

アクションルールを使用すると、コマンドとして適用したり、課題、記事、コメント、添付ファイルのその他を表示メニューからアクセスしたりできるアクションを使用して YouTrack を拡張できます。YouTrack バージョン 2024.1 以前では、課題ベースのアクションルールのみが利用可能です。YouTrack バージョン 2024.2 以降では、次の YouTrack エンティティにアクションルールを適用できます。課題、記事、課題に関するコメント、記事コメント、添付ファイルを発行する、記事の添付...