プロジェクト

全般

プロフィール

QA #311

未完了

トラッカー、ステータス、カスタムフィールドの値を見て 担当者を自動入力したい

運用 システム さんが約7年前に追加. 約7年前に更新.

ステータス:
新規
優先度:
通常
担当者:
-
カテゴリ:
-
対象バージョン:
-
開始日:
2017/03/15
期日:
進捗率:

0%

予定工数:

説明

トラッカー、ステータス、カスタムフィールドの値を見て
担当者を自動入力したいのですが、どなたか判る範囲で
構いませんのでスクリプトの書き方をご教授頂きたくお願い致します。
(一部分の書き方だけでも感謝です)

【前提】
以下、2つのプラグインを入れています。
Custom Workflowsを利用してrubyスクリプトでの対応を
考えていますが、view-customizeにてjavaスクリプトで
対応可能であればその書き方をご教授頂けると助かります。

・Custom Workflows
https://github.com/anteo/redmine_custom_workflows

・view-customize
https://github.com/onozaty/redmine-view-customize

【事前パラメータ】
・トラッカー:「system_change」
※tracker_idは「3」

・ステータス:「承認依頼」
※status_idは「7」

・Auto_Assign:「Yes」
※Auto_AssignはカスタムフィールドでIDは「5」

・案件名:「モバイルサービス」
※案件名はカスタムフィールドでIDは「1」

【自動入力(上書き)】
・担当者を「承認者」にしたい。
※assigned_to_idは「6」

◆やりたいこと
上記の事前パラメータが合致する場合は担当者を「承認者」に上書きしたいです。

◆作成中スクリプト
※知識に乏しく学習しながら考えているため稚拙で失礼します。。。
カスタムフィールドから値を取り出して比較する方法がわからず、このスクリプトも動きません。。。

if @issue.tracker_id==3 && @issue.status_id==7 && @issue.custom_field_value(5)==Yes && @issue.custom_field_value(1)==モバイルサービス
@issue.assigned_to_id=6
end

奈良 裕記 さんが約7年前に更新

https://github.com/annikoff/redmine_plugin_computed_custom_field
が使えるかもしれません。

↓に使用例があります。
https://redmine.tokyo/issues/267#note-8

設定内容によってはcrashする可能性がある様なので、
運用中システムでしたら、テスト環境で試してから入れた方が安全ですね。

運用 システム さんが約7年前に更新

コメントありがとうございます。
わからないことが多いので非常に助かります。m(__)m

redmine_plugin_computed_custom_fieldを入れて試してみます。
crashする可能性があるとのことなのでテスト環境を作成して実施します。

Tamura Shinji さんが約7年前に更新

view customizeでもできるはずですよ。
いいサンプルが見つからないですが。。。。

computed_custom_fieldの場合は、カスタムフィールド値を自動入力(チケット入力後)になるので目的の動作とは異なると思います。
既存のフィールドを更新するということはできないので。

奈良 裕記 さんが約7年前に更新

タトしましたか。。orz

一応は自分でも動作確認しようとしようとしたのですが、
テスト環境(開発中の3.4)では、computed_custom_field最新版が正常に動作しない様で確認できていません。
(computedの設定が保存されない様子)

view_customizeのサンプルは↓にまとまっていますね。

https://github.com/onozaty/redmine-view-customize-scripts
http://qiita.com/wfigo7/items/f13a89e1d3522f4a73b6

運用 システム さんが約7年前に更新

Tamuraさま、奈良さま
コメントありがとうございます。

computed_custom_fieldは試してみたのですが要領が掴めず、お恥ずかしい話ですが使い方がよくわかりませんでした。。。
カスタムフィールドの中で計算式をおいて、値を入れると計算出来るのでしょうか??
他のカスタマフィールドの値を計算して代入出来るのでしょうか??
サンプルケースがあれば教えて頂けると嬉しいです。m(__)m

私が質問していた内容ですが、javaがさっぱり判らないので、custom_workflows(ruby)をredmineのhook系の.rbファイルを何度も眺め、試行錯誤して触っていたところある程度期待するとこまでは対応出来ました。
サンプルを共有させて頂きます。

if @issue.status_id==7 && @issue.custom_field_value(5) 'Yes' && @issue.tracker_id3 && @issue.custom_field_value(1) == 'モバイルサービス'
@issue.assigned_to_id=6
end

こんな感じにするとステータスやカスタマフィールドの値などを元に判定して値を更新出来ることを確認しています。

話は変わってしまいますが、チケットのユーザ書式カスタムフィールドに
現在のユーザを入れたいのですが以下の形式ですと空白で更新されてしまいます。
※値を入れても空白に上書きされます。
※テキスト書式でやるとテキストで現在のユーザ名は入るのですが、ユーザ書式(選択)にしたいです。。。

@issue.custom_field_values = {'13' => User.current}

奈良さまとTamuraさまで以前、「#267 ユーザ情報のカスタムフィールド値をチケットにも表示させたい」にて
チケットのユーザ書式のやりとりがありますが、現在のユーザをチケットのユーザ属性のカスタムフィールドに
入れる方法が判りましたらご教授頂けないでしょうか。
チケットに書いてある記述は答えに近そうですが実際に値が入らず。。。知識が乏しくて弱く恐縮です。。。

運用 システム さんが約7年前に更新

運用 システム さんは書きました:

Tamuraさま、奈良さま
コメントありがとうございます。

computed_custom_fieldは試してみたのですが要領が掴めず、お恥ずかしい話ですが使い方がよくわかりませんでした。。。
カスタムフィールドの中で計算式をおいて、値を入れると計算出来るのでしょうか??
他のカスタマフィールドの値を計算して代入出来るのでしょうか??
サンプルケースがあれば教えて頂けると嬉しいです。m(__)m

私が質問していた内容ですが、javaがさっぱり判らないので、custom_workflows(ruby)をredmineのhook系の.rbファイルを何度も眺め、試行錯誤して触っていたところある程度期待するとこまでは対応出来ました。
サンプルを共有させて頂きます。

if @issue.status_id==7 && @issue.custom_field_value(5)=='Yes' && @issue.tracker_id==3 && @issue.custom_field_value(1)=='モバイルサービス'
@issue.assigned_to_id=6
end

こんな感じにするとステータスやカスタマフィールドの値などを元に判定して値を更新出来ることを確認しています。

話は変わってしまいますが、チケットのユーザ書式カスタムフィールドに
現在のユーザを入れたいのですが以下の形式ですと空白で更新されてしまいます。
※値を入れても空白に上書きされます。
※テキスト書式でやるとテキストで現在のユーザ名は入るのですが、ユーザ書式(選択)にしたいです。。。

@issue.custom_field_values = {'13' => User.current}

奈良さまとTamuraさまで以前、「#267 ユーザ情報のカスタムフィールド値をチケットにも表示させたい」にて
チケットのユーザ書式のやりとりがありますが、現在のユーザをチケットのユーザ属性のカスタムフィールドに
入れる方法が判りましたらご教授頂けないでしょうか。
チケットに書いてある記述は答えに近そうですが実際に値が入らず。。。知識が乏しくて弱く恐縮です。。。

運用 システム さんが約7年前に更新

半角スペース==半角スペース を記入すると表示から消えてしまったので
コメント編集しようとしたら同じ内容をまた入れてしまいました。編集出来ないんですね。。。失礼しました。

サンプルスクリプトの==のところは前後に半角スペースだと動くことを確認しています。
入れなくても動くのかもしれませんが試していないです。

補足でした。。。

Tamura Shinji さんが約7年前に更新

デフォルトステータスをトラッカーに応じて変更するjavascriptです。
適宜条件をいれて担当者も変えればいいと思います。
switchを使ってるとことをifで定義してあげればいいかと思います。

redmine_plugin_computed_custom_field は基本的にrubyのコードになります。
対象となるのは、computedで定義されたカスタムフィールドに対してのみ適用されます。しかも、チケット作成後です。
なので、ユーザ属性のカスタムフィールドに適用することはできないのです。
表示上、ユーザを表すものでも、computedのカスタムフィールドとして定義する必要があります。
今回は、担当者に承認者であるユーザを適用するはずなのでこれは使えないと思います。
承認者というカスタムフィールドに対して適用させるにしても、あとあとワークフローが増えて対応させるのであればview customizeであれば
ステータス等変更された場合にすぐに適用できるので使い勝手もいいと思います。

computedを使う場合は、数値計算をさせるか、チケット上に無い情報を引っ張ってくる場合に限ると思います。

// デフォルトのステータスを変更します
// Path pattern: /issues/new
// Type        : JavaScript

$(function() {
  var trackerChanged = false;

  $(document).on('change', '#issue_tracker_id', function() {
    trackerChanged = true;
  });

  var _replaceIssueFormWith = replaceIssueFormWith;
  replaceIssueFormWith = function(html){

    _replaceIssueFormWith(html);

    if (trackerChanged) {
      setDefalutStatus();
    }

    trackerChanged = false;
  };

  var setDefalutStatus = function() {

    var statusId = $('#issue_status_id').val();

    $('#issue_status_id option').removeAttr("selected");

    // tracker_id -> default status
    switch($('#issue_tracker_id').val()) {
      case "32":
        statusId = "15";
        break;
      case "37":
        statusId = "15";
        break;
      case "41":
        statusId = "18";
        break;
    }

    $('#issue_status_id option[value="' + statusId + '"]').attr("selected", "selected");
  }

  setDefalutStatus();
});

奈良 裕記 さんが約7年前に更新

「開発者」のロールに設定しましたので、今後はご自分の記入内容は編集可能です。
対応遅れてすみません。

コードを入力する場合は、

 <pre>   </pre> 
または、codeとして囲ってください。
http://redmine.jp/tech_note/textile/

運用 システム さんは書きました:

半角スペース==半角スペース を記入すると表示から消えてしまったので
コメント編集しようとしたら同じ内容をまた入れてしまいました。編集出来ないんですね。。。失礼しました。

サンプルスクリプトの==のところは前後に半角スペースだと動くことを確認しています。
入れなくても動くのかもしれませんが試していないです。

補足でした。。。

他の形式にエクスポート: Atom PDF