はじめに
intra-martでワークフローアプリを開発しているとき、ユーザ要望でノードに応じた処理ボタン名にしたいという、ぶっちゃけめんどくさいだけのくだらないこだわりの要望があがってきます。カスタムスクリプトを入れれば実現できることがわかりましたので、その実装方法を悩まれている同志の社内SE皆様のために簡単に紹介します。
実装時のポイント
色々やり方があるっぽいですが要件通り動けばいいので、アクション処理での実装方法とします。実装時のポイントは以下のとおりです。
- リクエストパラメータを活用(ご作法なのでこういうものと納得すること)
- アクション設定の初期表示イベントのカスタムスクリプトで制御
- カスタムスクリプトの実行を条件設定で制御
では、やっていきましょう。
実装手順
ルート定義から処理名を変更したいルートIDを確認
サイトマップ>ワークフロー>ワークフロー管理者>マスタ定義>ルート定義
処理名を変更したいノードを選択し、プロパティにあるノードIDを控えておきます。このノードIDがアクション設定の条件で利用することになります。
アクション設定(初期表示イベント)
先ほどのルート定義の2つめの承認ノードのボタンを「承認」から「対応完了」に変更したいとします。
申請ボタンの承認画面で表示される「承認処理」ラベルが変更のターゲットです。
アクション設定の初期表示イベントでアクション種別を「カスタムスクリプト」を選択し、設定を開きます。
スクリプトは以下のとおりです。
var buttonElem = $(".imui-medium-button");
//たぶんですが、ボタンサイズが1:imui-large-button、2:imui-medium-button
//3:imui-small-button、4:imui-button
for (var i=0; i<buttonElem.length; i++) {
if (buttonElem[i].value === "承認処理") {
buttonElem[i].value = "対応完了";
break;
}
}
これで初期表示イベントで承認処理から対応完了に変わりますが、このままではすべての承認画面が対象となりますので、処理が実行されるノードを固定します。
アクション設定(条件)
先ほどのアクション処理のイベント設定画面にありました条件を設定します。スクリプトは以下のとおりです。
imwNodeId="0scprq9g6tl3tml"
//変更したノードIDを指定
imwNodeIdが急に出てきますが、リクエストパラメータとして画面上で暗黙的に取得されているパラメータ値であるようです。従いまして、リクエストパラメータは外部データソースにもインプットとして渡すことができます。(その具体的な手順は脱線しますので、本記事では割愛します。機会があれば別の機会に書こうと思います。)
なんとこれだけで「画面によってボタン名を変更したい」という、ぶっちゃけどうでもいいくだらない要件を満たすことができます。
まとめ
以上で、『社内SEなら知っておきたい、intra-martワークフローの処理ボタンラベルをノードによって表示内容を変更する手順』でした。intra-martはローコード開発でも色々できてしまいますね。これがローコード開発なのか、もうわからなくなってきましたが(笑)。同じような悩みを持たれている社内SE様の参考になること祈っときます。
コメント