フィールドの値に応じてステータス変更の禁止が出来るかどうか

タイトルのとおりですが、プロセス管理でフィールドの値に応じてステータス変更を禁止する方法でなにかいいものはありますでしょうか?

例えば特定のフィールドが空の場合、プロセス管理でステータスの変更ができなくするような機能をつくりたいです。

現状、レコード詳細画面で特定のフィールドに値があることを確認し、なければステータス変更のアクションボタンをDOM操作で非表示にする方法しか思いつきません。

なにか、良い事例などありますでしょうか?

プロセス管理は、条件指定ができますので、それを利用すれば可能かと思います。

https://help.cybozu.com/ja/k/user/img/set_process_img2.png

上記の画像では、金額によって承認先を変えるようなプロセスですが、条件を満たさなければどのプロセスにも遷移しないということもできます。

 


 

> 例えば特定のフィールドが空の場合、プロセス管理でステータスの変更ができなくするような機能をつくりたいです。

 

 

この場合も、一行のテキストフィールドなどであれば「空白でない場合」という指定はできるのではないでしょうか。逆に、これが複数行フィールドだと難しいですが、下記方法であればいろんなことに対応できると思いますがいかがでしょう。

  1. バリデーション用フラグフィールドを作る(ドロップダウンやチェックボックスなど)

  2. submitイベント時、JavaScriptのカスタマイズで、「空白など条件を満たしていればバリデーション用フラグをONにする」(逆に満たしていなければOFF)

  3. プロセス管理の設定で、バリデーションフラグがONの場合のみつぎのプロセスに遷移できるようにする

仲宗根さん

cstapの瀧ヶ平です。

こちらにあるとおり、レコードのプロセス管理のアクション実行時イベントではfalseをreturnすることでアクション実行をキャンセルできます。

よってイベントハンドラでレコードの特定のフィールドを確認し、それによってeventオブジェクトをreturnするかfalseをreturnするか決めるようなカスタマイズJavaScriptを書くことで対応できるのではないでしょうか?

>村濱さん

ありがとうございます。

ほとんどプログラミング無しで出来るのでこの方法は簡単に活用できそうですね。ちょうど複数行のフィールドが対象だったのでご提案いただいた方法をとりあえず試させて頂きます。

>瀧ヶ平さん

ありがとうございます。

作成中のアプリでアクション実行時イベントも結構使用しているのでこちらの方法も活用できそうです。実際の動作など確認させて頂きます。