Project

General

Profile

QA #267

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

Added by Tamura Shinji almost 4 years ago. Updated over 2 years ago.

Status:
回答済
Priority:
通常
Assignee:
-
Category:
-
Target version:
Start date:
12/19/2016
Due date:
% Done:

0%

Estimated time:

Description

■現象/要望

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

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

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

#1

Updated by 奈良 裕記 almost 4 years ago

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

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

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

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

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

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

#2

Updated by Tamura Shinji almost 4 years ago

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

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

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

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

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

#3

Updated by 奈良 裕記 almost 4 years ago

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時は、改造したプラグインで対応

#4

Updated by Tamura Shinji almost 4 years ago

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

#5

Updated by 奈良 裕記 almost 4 years ago

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

#6

Updated by Tamura Shinji almost 4 years ago

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

#7

Updated by Tamura Shinji almost 4 years ago

  • Status changed from 新規 to 回答済
  • Target version set to 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)は、ユーザのテキスト属性のカスタムフィールドです
これで、チケットからユーザの任意のフィールドを呼び出して登録できるようになりました

#8

Updated by 奈良 裕記 almost 4 years ago

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

自分のテスト環境でも試してみました。
ユーザサイドで簡単なサンプルを準備すれば、気楽に使えそうですね。
(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?

#9

Updated by Tamura Shinji almost 4 years ago

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

#10

Updated by 奈良 裕記 over 2 years ago

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

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

#11

Updated by Tamura Shinji over 2 years ago

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

Also available in: Atom PDF