ビジネスルールを利用して、今日の日付を設定したかったのですが、
ビジネスルール単体では計算式が利用できないため実現できませんでした。
フィールドの計算式であれば、取得することはできますが保存時にしか値が入ってくれないので要件を満たせませんでした。
そのため今回は下記手順で実現しています
- JavaScriptを利用してフォームロード時に、「今日の日付」というフィールドに日付を設定
- ビジネスルールを利用して、「今日の日付」フィールドを指定したフィールドへコピー
目次
フォームに今日の日付フィールドを追加する
追加したいエンティティのフォームに日付のみでフィールドを追加してください。
こんな感じですね
追加したフィールドをフォームの適当なところに配置します
今日の日付を取得するスクリプトを作成する
以下のスクリプトを作成して保存します(フィールド名をnew_today_dateとかしてるところはご愛敬w)
function today_date(executionContext){ var formContext = executionContext.getFormContext(); var dt = new Date(); formContext.getAttribute("new_today_date").setValue(dt); }
Webリソースとして、保存したJSファイルを登録します
こんな感じで登録
ファイルの選択をクリックし、作成したJSファイルをアップロードします。
上書き保存後、公開をクリックします
フォームロード時に実行されるよう設定する
- 「詳細設定」→「カスタマイズ」→「システムのカスタマイズ」を開きます
- フィールドを追加したエンティティのフォームを開きます(クラッシックビューで開いてください)
- 【フォームのプロパティ】をクリックします
- イベントタブの、フォームライブラリ→【追加】をクリックします
- 追加JSファイルを検索し、【追加】をクリックします
- イベントハンドラー欄で、コントロール「フォーム」、イベント「OnLoad」を選択し、追加アイコンをクリックします
- ライブラリから追加JSファイルを選択し、関数に定義した関数名を入力します
パラメータの「実行コンテキストを最初のパラメータとして渡す」にチェックをつけ【OK】をクリックします
- フォームを保存し、公開をクリックします
- 今回設定したフォームを開き、今日の日付に正常に日付が入っていることを確認します
ビジネスルールを利用して今日の日付をコピーする
今日の日付をフィールドに設定することができたので、ビジネスルールを利用して条件に応じてこの日付を利用したいフィールドへコピーする設定を行えばOKですね
ビジネスルールのフィールド値設定で計算式が使えるようになってほしいものですね