プロジェクト

全般

プロフィール

QA #267

未完了

ユーザ情報のカスタムフィールド値をチケットにも表示させたい

Tamura Shinji さんが7年以上前に追加. 約6年前に更新.

ステータス:
回答済
優先度:
通常
担当者:
-
カテゴリ:
-
対象バージョン:
開始日:
2016/12/19
期日:
進捗率:

0%

予定工数:

説明

■現象/要望

社内利用において、1チケットに対して担当部署、担当者が複数フィールド存在するチケットがあります。
また、ユーザ情報には、カスタムフィールドにて部署の情報を入れています(LDAP Syncプラグインにて自動グループ作成とActive Directoryから部署情報を登録)
チケット作成時に、該当担当者を選択した場合に担当部署を自動的に入力させるようなことはできませんでしょうか?

http://www.redmine.org/plugins/computed_custom_field

でいろいろ試しているのですが、どうにもうまくいかず。。。
下手な英語でgitの方にも入れてはいますが。。。

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

所属部署を自動設定したいニーズはありますね。

画面更新の観点では、↓が参考になるかもしれません。
Redmine: カスタムフィールドを連動させる(親の値に応じて、子を絞り込む) (View customize plugin)
http://blog.enjoyxstudy.com/entry/2016/04/03/000000

識別だけでしたら、
firstname/lastnameを、姓名/所属にする方法もあります。

入力時の画面表示更新がMUSTで無ければ、
チケット保存時に、カスタムフィールドを設定する方法も考えられます。
(この場合、一旦チケット保存し、番号確定-CFアクセス可能とした方が楽)

既存Pluginの設定問題で引っかかるよりは、業務ロジックを入れ込んだ方が楽かもしれません。

サンプルが溜まれば役に立つかな・・

Tamura Shinji さんが7年以上前に更新

最初、view customizeでできるかと思い先のURLも見ていたのですが、一致させる項目がなく。。。
また、ユーザ情報のカスタムフィールドになるので、チケット上には情報としてないんですよね。

おっしゃる通り、氏名で片方を部署名にというのもあるにはあるのですが、既にカスタムフィールドで部署登録が定常化していて
複数のRedmineホストでも同様の運用をしているので変えにくく。。。。

computed custom fieldもそうなのですが、これもチケット保存時に反映されます。

チケット保存時に、カスタムフィールドを設定する方法も考えられます。
(この場合、一旦チケット保存し、番号確定-CFアクセス可能とした方が楽)

の場合はソースを変更するのでしょうか?

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

Redmineコア自体のソースを変更しなくとも対応可能です。

1. 既存プラグインの利用

redmine_custom_workflowsプラグイン

https://github.com/anteo/redmine_custom_workflows

http://forza.cocolog-nifty.com/blog/2015/07/redmineredmine_.html

設定サンプル
https://github.com/anteo/redmine_custom_workflows/wiki/Example-Workflows

2. 既存プラグインをベースに機能追加

Redmine Issue Extensions プラグイン
http://www.r-labs.org/projects/r-labs/wiki/Issue_Extensions

チケットをクローズする時、自動的に進捗を100%に変更します。

この処理部分を必要な業務処理に変更すれば対応可能。
本体のVerUp時は、改造したプラグインで対応

Tamura Shinji さんが7年以上前に更新

redmine_custom_workflowは名前だけ見てできそうにないなと無視してましたが、hookできるんですね。
だったら、どうにかなるかも。。。
すぐにコードが思いつかないですが。。。

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

まずはIssue Extensionsのソース追い掛けて感じ掴むのが良いかと思います。
特に /lib/issue_extensions_issue_hooks.rb

Tamura Shinji さんが7年以上前に更新

ありがとうございます。
勉強してみます。

Tamura Shinji さんが7年以上前に更新

  • ステータス新規 から 回答済 に変更
  • 対象バージョンPlugin対応済 にセット

Computed Custom field pluginの作者から教えてもらいましたので共有します。

user = User.find_by_id custom_field_value(24)
user.custom_field_value(1) if user.present?

でできました。
custom_field_value(24)は、チケットのユーザ属性のカスタムフィールドです
custom_field_value(1)は、ユーザのテキスト属性のカスタムフィールドです
これで、チケットからユーザの任意のフィールドを呼び出して登録できるようになりました

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

解決した様で何よりです。

自分のテスト環境でも試してみました。
ユーザサイドで簡単なサンプルを準備すれば、気楽に使えそうですね。
(Rubyの基本的な文法知識は必要ですが)

(例)定義されていない場合、代わりに担当者/作成者の情報を設定したい場合


user_cf24 = User.find_by_id custom_field_value(24)

user=author
user=assigned_to if assigned_to.present?
user=user_cf24 if user_cf24.present?

user.custom_field_value(1) if user.present?

Tamura Shinji さんが7年以上前に更新

そうですね。
view customizeと同様手軽です。
まさかここまでのコードかけるとは思ってもいませんでした。。。

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

#どこに付けるか迷いましたが。。

computedのソースとなるCFには、初期値設定した方が良さそうです。
単純な加算で、新規チケット作成時にエラー発生しました。
Error while formula computing in field "sum" — undefined method `*' for nil:NilClass

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

あぁ、たしかに。
エラー処理は必要ですね。
計算に必要なところを必須入力にするとかで工夫はしています。

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