2
1
0
2 回答
- 210
自己解決しました。
事後操作の追加後に、順を変更していなかったミスによるものでした。
変更前
変更後
これで想定通りの動きになりました。
- Kengo Ohsaki
上記スクリプトだとChangeHistoryを昇順になめて、複数の場合result上書きしていくのでpost-functionの順序が重要になりますね。
そもそもトランジション時の「事後操作」で変更前の値を取得する手段は別にあるでしょうか?
より ChangeHistoryをなめずに
transientVars.get(changeItems) で取得で直近の変更が取得できたような記憶ですが、ごめんなさい間違ってたらすみません。
- RYOITO
直近が取得できればforが減らせますね!
情報ありがとうございます。
- RYOITO
動きますね。
/* 直近のchangeItemsを取得 */ java.util.List<com.atlassian.jira.issue.history.ChangeItemBean> changeItemBeans = (java.util.List<com.atlassian.jira.issue.history.ChangeItemBean>) transientVars.get("changeItems"); for (com.atlassian.jira.issue.history.ChangeItemBean changeItemBean : changeItemBeans) { /* changeItemBeanの中からchangeItemBeanがassigneeのものを抽出 */ if (changeItemBean.getField() == "assignee"){ result = changeItemBean.getFrom(); } }
Script Console等で事前確認できないのでドキドキでしたが
- Kengo Ohsaki
検証ありがとうございます!
コメントを追加... - 10-1
トランジション時の情報を持ってこれないなら
result = changeItemBean.getTo();
にすればいい。
ただ気持ち悪い。
コメントを追加...
担当者を変更(手動)する特定トランジションがあり、そのトランジションの事後操作にて旧担当者をウォッチャーに入れようとしています。
以下スクリプトをpost-functionに入れたのですが、想定通りに動きませんでした。
テストした課題ではchangelogが3つあり、履歴が以下のようになっています。(テスト後確認)
※このトランジションにて事後操作のpost-functionでスクリプトが走っている
想定
変更履歴3の情報からuser02がウォッチャーに入る。
実際の結果
user01がウォッチャーに入ってしまう。
Script Consoleでの事後確認では想定通りの動作をします…。
事後操作であれば変更履歴3の情報が取得できると思っていましたが違うのでしょうか?
上ではChangeHistoryをなめていく処理をしていますが、そもそもトランジション時の「事後操作」で変更前の値を取得する手段は別にあるでしょうか?