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

要件

requirements オブジェクトには 2 つの目的があります。

  • まず、これはセーフティネットとして機能します。ルールが期待どおりに動作するために存在しなければならないエンティティのセットを指定します。ルールの要件が 1 つ以上満たされない場合、ワークフロー管理 UI に該当するエラーが表示されます。すべての課題が解決されるまで、ルールは実行されません。

  • 2 つ目は、参照として機能します。要件内の各エンティティは context オブジェクトにプラグインされるため、コンテキスト依存関数(action 関数など)内からエンティティを参照できます。

要件には、プロジェクト全体とシステム全体の 2 種類があります。

  • プロジェクト全体の要件には、ルールを使用する各プロジェクトにアタッチされるカスタムフィールドのリストと、各カスタムフィールドの値のセットからの必須値が含まれます。

  • システム全体の要件には、YouTrack で使用可能でなければならない他のエンティティのリストが含まれています。これには、ユーザー、グループ、プロジェクト、課題、タグ、保存済み検索、課題リンクタイプが含まれます。

一般的な使用箇所

ルールが検索対象とするエンティティを記述するには要件を使用し、ルール本文では要件のエイリアスを使用します。ルールを使用するプロジェクトに一致するフィールド、値、またはエンティティがない場合、YouTrack はルール実行前にワークフロー管理 UI に課題を報告します。

以下の変更時ルールでは、優先度フィールドにメジャー標準の値が設定されていること、および qa.lead ログインを持つユーザーが必要です。課題が未解決になると、ルールは課題の優先度をメジャーに変更し、指定されたユーザーに課題を割り当てます。

const entities = require('@jetbrains/youtrack-scripting-api/entities'); exports.rule = entities.Issue.onChange({ title: 'Escalate reopened issues', guard: (ctx) => ctx.issue.becomesUnresolved, action: (ctx) => { ctx.issue.fields.Priority = ctx.Priority.Major; ctx.issue.fields.Assignee = ctx.QALead; }, requirements: { Priority: { type: entities.EnumField.fieldType, Major: {}, Normal: {} }, Assignee: { type: entities.User.fieldType }, QALead: { type: entities.User, login: 'qa.lead' } } });

この例では、PriorityAssigneeQALead はエイリアスです。優先度フィールドと担当者フィールドでは、エイリアスが実際のフィールド名と一致するため、name プロパティは省略されています。MajorNormal のエイリアスは、優先度フィールドの必須値を表します。アクションでは、ctx.Priority.Major が必須のメジャー値を参照し、ctx.QALead が必須のユーザーを参照します。

サンプル

以下は、カスタムフィールドの定義と、そのフィールドに必要な値、システム全体の要件リストを含む requirements ステートメントの例です。

requirements: { P: { type: entities.EnumField.fieldType, name: 'Priority', M: { name: 'Major' }, Normal: {} }, ImportantPerson: { type: entities.User, login: 'superadmin' }, OurTeam: { type: entities.UserGroup, name: 'integration-team' }, Int: { type: entities.Project, name: 'Integration' }, Ref: { type: entities.Issue, id: 'INT-483' }, ToBeReleased: { type: entities.IssueTag, name: 'To be released' }, Untested: { type: entities.SavedQuery, name: 'Not tested yet' }, Depend: { type: entities.IssueLinkPrototype, outward: 'is required for', inward: 'depends on' } }

Properties

要件ステートメントで指定されているすべてのエンティティは、エイリアスによって識別されます。上記の例では、優先度フィールドにエイリアス P が割り当てられています。要件でエンティティにエイリアスを割り当てるときは、エイリアスを使用してコンテキスト内のエンティティを参照します。例: 優先度フィールドは、ctx.Pissue.fields.Pissue.fields.Priority として参照できます。

要件ステートメントで指定されている各要件には、次のプロパティがあります。

プロパティ

説明

エンティティのデータ型。このプロパティは必須です。カスタムフィールドのタイプの完全なリストは次のとおりです。

ビルド

entities.Build.fieldType

列挙型

entities.EnumField.fieldType

グループ

entities.UserGroup.fieldType

ownedField

entities.OwnedField.fieldType

状態

entities.State.fieldType

ユーザー

entities.User.fieldType

バージョン

entities.ProjectVersion.fieldType

日付

entities.Field.dateType

日時

entities.Field.dateTimeType

浮く

entities.Field.floatType

integer

entities.Field.integerType

文字列

entities.Field.stringType

テキスト

entities.Field.textType

期間

entities.Field.periodType

次のタイプは、システム全体のエンティティに使用されます。

ユーザー

entities.user

グループ

entities.UserGroup

プロジェクト

entities.Project

課題

entities.Issue

タグ

entities.IssueTag

保存した検索条件

entities.SavedQuery

課題リンク

entities.IssueLinkPrototype

プロジェクトチームはユーザーグループとして表現されます。要件でプロジェクトチームを指定するには、entities.UserGroup を使用し、name プロパティにプロジェクトチーム名を設定します。

名前

エンティティの名前。このプロパティはオプションです。名前が設定されていない場合、エイリアスと等しいと見なされます。

特定のシステム全体のエンティティの場合、このプロパティは完全に無視されます。

  • ユーザーは、login プロパティによって識別されます。

  • 課題は、id プロパティによって識別されます。

  • 課題リンクは、inward または outward プロパティによって識別されます。

さらに、特定のエンティティタイプでのみ使用できるプロパティがあります。これらのプロパティは次のとおりです。

エンティティ

プロパティ

説明

カスタムフィールド

上記の既知のプロパティのいずれでもないエンティティに対して定義されているプロパティは、カスタムフィールドの値セットの値の要件と見なされます。各 value プロパティには、オプションの name プロパティもあります。

上記の例では、Priority カスタムフィールドの値 Majorctx.P.M または ctx.P.Major として参照できます。カスタムフィールドの値は、issue.fields.P = ctx.P.M;Major に変更できます。

マルチ

ブール型のプロパティ。true の場合、カスタムフィールドには複数の値を格納する必要があります。

課題リンク

外向き

課題リンクタイプの外部名。

内向き

課題リンクタイプの内部名。

ユーザー

ログイン

特定のユーザーのログイン。name プロパティの代わりに使用されます。

課題

id

特定の課題の ID。name プロパティの代わりに使用されます。

2026 年 7 月 06 日