1 回答
- 210
Workflow Enhancer for Jira は無償で使用できるアドオンで便利ですよね。JSU - Suite Utilities for Jira の代替にもなったりしますね。
Workflow Enhancer for Jira 自体をあまり使ったことはないのですが…
ぱっと簡単に実装を確認する限りですが、残念ながら セキュリティレベル には対応していないように見受けられます。そもそもフィールド選択画面にも出てこないように…。
セキュリティレベルは画面に配置するフィールドではあるものの、特殊なシステムフィールドのようなものでして、アドオンが個別に対応してないと利用はできません。
データベースとしては、jiraissue テーブルのsecurity カラムに課題に設定されているセキュリティレベルのID値が入っています。DBからクリアする方法は以下ナレッジベースに紹介されています。
とあるため、ひょっとしたらセキュリティレベルのフィールドIDが分かればセキュリティレベルも評価できるのではないかと思い、DBを見ているのですが、いろんなテーブルを見ていると似たような項目が多く、どれがここで言われているフィールドIDなのかが分かりません。
ということで残念ながらセキュリティレベルのフィールドIDはありませんね…。
Workflow Enhancer for Jira でセキュリティレベルに対応する方法としては…
別の有償アドオンを使用するとか、オープンソースなので実装を変えるという方法もありますが
有償アドオンが購入できないという事情もあるかと無償でできる方法を考えてみます。
まず、Jira Misc Custom Fields 無償 を導入します。
これは JIRAで各カスタムフィールドに設定されている値を計算して、その結果をカスタムフィールドとして表示したい の通り、スクリプトを書いて計算できるアドオンになります。
アドオンを導入すると、Calculated ... で始まるフィールドを追加できるようになるので
Calculated Number Field を選択します。
フィールド名は任意の適当な名前で説明にスクリプトを設定します。
スクリプト<!-- @@Formula: return issueObject.getSecurityLevelId(); -->
作成したフィールドは画面に紐づける必要はなく(もしセキュリティレベルのIDをテストで表示したければ配置してもいいですが…)、再インデックスをします。
これで、作成したフィールドからセキュリティレベルのIDが返却できるようになるので
セキュリティレベルのID値は、管理画面の該当のセキュリティレベルの「追加」操作でURLの
security=<ID値> で確認できます。
もしくはDBからSQLでも
SELECT * FROM schemeissuesecuritylevels,schemeissuesecurities WHERE schemeissuesecurities.id = schemeissuesecuritylevels.scheme;
あとは、Workflow Enhancer for Jira で {作成したフィールド} = <期待する課題セキュリティID> でチェックすれば実現できるかなと思います。
参考QA
- 蒼龍
Jira Misc Custom Fields アドオンを評価してみました。
使ってみた感触ですが、どうも計算結果を表示画面に返すだけの仕様になっているようで、作成/編集画面に項目を追加しても表示はされませんでした(インライン編集もできないようです)そのためか、課題作成時、ステータス遷移時に画面を表示させて入力した場合、Workflow Enhancer for JIRAの評価値は NULLもしくは空値として処理されてしまうようです。(画面を挟まないステータス遷移ではセキュリティレベルのIDを正しく評価してくれました)
課題作成時のセキュリティレベルの評価が正しくできないので、このアドオンではやりたいことは難しそうです。
Workflow Enhancer for JIRAのプラグインを触って何とかできないか少し評価してみます
- Kengo Ohsaki
蒼龍-san,
、どうも計算結果を表示画面に返すだけの仕様になっているようで、作成/編集画面に項目を追加しても表示はされませんでした(インライン編集もできないようです)
そうですね。計算結果を表示するフィールドタイプのため表示画面でしか表示されません。
ステータス遷移時に画面を表示させて入力した場合、Workflow Enhancer for JIRAの評価値は NULLもしくは空値として処理されてしまうようです。(画面を挟まないステータス遷移ではセキュリティレベルのIDを正しく評価してくれました)
確かに、画面を挟むとダメですね…。残念ながら Jira Misc Custom Fields でも難しそうですね。
裏技的にできるかと思ったんですが申し訳ございません。
もし何かよい実現方法が見つかればご共有ください。
- 蒼龍
少しアプローチを変えて、セキュリティレベルの値を他のカスタムフィールドにコピーしてから、コピーしたカスタムフィールドを評価して動作を制御する という方法を考えたのですが、実現性は高そうでしょうか?
- Kengo Ohsaki
蒼龍-san,
ソースコードは以下です。ライセンスはLICENSE.TXTをご確認ください。ぱっと見改修して問題なさそうですけど。
ただJavaCC使っていたりと結構テクニカルな実装になっているのでなかなか難しいかなと思います…。
- 蒼龍
最終的に、JSUとWorkflow Enhancer for JIRAの合わせ技で若干強引ではありますが、何とかなりそうな見込みが立ちました。
1.JSUの事後操作で、セキュリティレベルをカスタムフィールドにコピー
2.Workflow Enhancerの事後操作で、承認Noとコピーしたセキュリティレベルを評価し、外部公開なのに承認Noがなかった場合は、JSUプラグインの事後操作を使い、予め初期値を内部公開としていた別のカスタムフィールドから、セキュリティレベルに値をコピーする。という形で、承認Noを入力していなければセキュリティレベルを外部公開にしても、強制的に内部公開に変更してしまう仕組みです。
色々一緒に考えていただき、ありがとうございました
- Kengo Ohsaki
蒼龍-san,
少しアプローチを変えて、セキュリティレベルの値を他のカスタムフィールドにコピーしてから、コピーしたカスタムフィールドを評価して動作を制御する という方法を考えたのですが、実現性は高そうでしょうか?
はい。技術的にはできると思いますが…
セキュリティレベルの値を他のカスタムフィールドにコピーできるアドオンが少ないので難しいかもしれません...。
- Kengo Ohsaki
蒼龍-san,
コメントが入れ違いになり申し訳ございません。
最終的に、JSUとWorkflow Enhancer for JIRAの合わせ技で若干強引ではありますが、何とかなりそうな見込みが立ちました。
なるほど、確かにその方法であればできそうですね。実現できてよかったです。
ちなみに、JSU は有償アドオンになってしまった気もしますが…大丈夫ですかね。
- 蒼龍
こっそり1.5.4のままで使ってますw
- Kengo Ohsaki
蒼龍-san,
よかったですw
1.5.4 でもJira内部のJava APIが変わってないのでまだ使えますよね。
ちなみに無料のアドオンだと以下でJPythonのスクリプトでvalidators処理を書いてチェックするという方法も残っていましたが、スクリプトでできることを増やすのは結構運用がシンドクなるのでご紹介していませんでした…。
御社事情もあるので何とも言えませんが、今後に向けて何か有償のアドオンが購入できるといいですね。JSUとかは便利なので。
例えばJira Misc Workflow Extensions であれば、これまたGroovyスクリプトで記述することになりますが、今回の要件も簡単に実現できるかと思います。
コメントを追加...
今回はJIRA本体というより、アドオン Workflow Enhancer for JIRA に関連した質問です。
https://marketplace.atlassian.com/apps/575829/workflow-enhancer-for-jira?hosting=server&tab=overvie
アドオンはこちら
このアドオンを使うと、複数のフィールドの関係で ワークフロー遷移時や課題作成時の検証を制御できるとのことで、現在評価を進めています。
課題作成時、セキュリティレベルを "外部公開" とする場合は承認Noの入力を必須とするような運用をやりたいのですが、何故か選択肢にセキュリティレベルが表示されず困っています。
説明には
Field: {Field Name} or {fieldID} (field values will be evaluated)
とあるため、ひょっとしたらセキュリティレベルのフィールドIDが分かればセキュリティレベルも評価できるのではないかと思い、DBを見ているのですが、いろんなテーブルを見ていると似たような項目が多く、どれがここで言われているフィールドIDなのかが分かりません。
もしご存知の方が居れば教えていただけないでしょうか?