ワークフロー API を使用する
このページの情報を使用して、ワークフローリファレンスの他のセクションで説明されていないワークフロー API の特定のエンティティを操作する方法を学習します。
プロパティ、カスタムフィールド、課題リンクへのアクセス
これらのガイドラインに従って、課題のプロパティ、カスタムフィールドの値、課題のリンクにアクセスします。
- 事前定義された課題フィールド
summary
、description
、reporter
のような事前定義された課題フィールドは、すべてissue
エンティティのプロパティです。const summary = issue.summary; issue.summary = "Just a bug";- カスタムフィールド値
カスタムフィールドの値への参照は、フィールドが単一の値を保存するか複数の値を保存するかによって異なります。
単一の値を格納するフィールドの場合、値を直接参照できます。
const state = issue.fields.State; issue.fields.State = ctx.State.Open; if (issue.fields.State.name === ctx.State.Fixed.name) { // Do stuff }複数の値を格納するフィールドの場合、値はセットとして格納されます。セットで使用できる操作については、次のセクションで詳しく説明します。
const versions = issue.fields["Fix versions"]; versions.forEach(function (v) { subtask.fields["Fix versions"].add(v); });
- エイリアス
requirements
ステートメントでカスタムフィールドにalias
プロパティを設定した場合、このエイリアスを使用してフィールドの値にもアクセスできます。例: 修正バージョンフィールドのエイリアスがFV
に設定されている場合:issue.fields.FV.forEach(function (v) { // Do stuff });- 課題リンク
課題リンクタイプには、内部または外部の名前でアクセスします。例:
relates to
またはparent for
課題リンクは常にセットとして扱われます。const parent = issue.links["subtask of"].first(); parent.links["parent for"].add(issue);
スペースまたは他のアルファベット以外の文字を含むカスタムフィールドと課題リンクタイプは、引用符と括弧で設定する必要があることに注意してください。
セットオブジェクトの使用
複数の値(Set <value type> として返される)で実行できる操作のグループがいくつかあります。
それらに直接(
first()
、last()
、get(index)
)またはイテレータ(entries()
、values()
)でアクセスします。Set のすべての値を
forEach(visitor)
でトラバースします。find(predicate)
で値を探し、値がhas(value)
で設定されているかどうかを確認します。isEmpty()
、isNotEmpty()
、size
プロパティでサイズを確認してください。add(element)
、remove(element)
、clear()
でコンテンツを変更します。added
、removed
、isChanged
プロパティを使用して設定オブジェクトの現在の変更を取得します。
このオブジェクトの詳細な説明については、設定を参照してください。
メソッドの呼び出し
特定のエンティティを見つける
課題やユーザーなどの特定のエンティティを見つけて、ワークフロースクリプトで使用するには、次の 2 つの方法があります。
要件に追加し、コンテキストで参照します。このアプローチは最も信頼性が高いため、できるだけ頻繁に使用してください。指定されたエンティティがデータベースに見つからない場合、スクリプトは実行されません。
最初のオプションが何らかの理由で適用できない場合、ワークフロー API から
findBy*
およびfind*By*
メソッドを使用します。
findBy*
メソッドを使用して、特定のエンティティの単一出現箇所を検索します。
find*By*
メソッドを使用して、子エンティティを検索します。
複数の課題を見つける
場合によっては、特定の基準に一致する一連の課題を検索し、1 つのルールの範囲内で処理したい場合があります。例: 課題のリストを作成し、メールメッセージとして送信できます。このような状況では、検索 API が役に立ちます。簡単な例を次に示します。
関連ページ:
要件
オブジェクトには 2 つの目的があります。まず、セーフティネットとして機能します。ルールが期待どおりに機能するために存在しなければならないエンティティのセットを指定します。1 つ以上のルール要件が満たされない場合は、対応するエラーがワークフロー管理 UI に表示されます。すべての課題が修正されるまで、ルールは実行されません。次に、参照として機能します。要件の各エンティティはオブジェクトにプラグインされるため、コンテキスト依存関数(関数など)内からエンティティを参照できます。要件には、プロジェクト...
Slack との統合の構築
ワークフロー API の http モジュールを使用すると、ワークフローを使用して、Slack とのプッシュスタイルの統合をスクリプト化できます。このタイプの統合により、特定の課題イベントの通知を Slack に投稿できます。ワークフローベースの統合では、受信 Web フックを使用して、Slack と YouTrack の間の統合を可能にします。YouTrack ワークフローは、課題 ID と要約を含む JSON ペイロードを含む通常の HTTP リクエストを送信します。この統合では、Slack...