レポート系も一通り完了したため、ユーザインタフェースに対してはだいぶ出来上がってきました。
まだまだハリボテシステムなので、そろそろビジネスロジック側に手を加えていきます。
今回の作成対象は?
今回は入力規則についての移行を試みたいと思います。
入力規則を使うことによって、入力時に制約をつけることができ、ユーザの誤入力を自動的に無くし、データの精度を上げることができます。
Dyamicsではビジネスルールと呼ばれており、その中で入力規則を設定することができます。
今回は所属選手に対して、入力規則を設けることとします。
「育成選手は背番号が3桁でなければならない」というルールが存在するため、それを入力規則、ビジネスルールで作成してみます。
入力規則=ビジネスルールではない
ここで、注意点として、入力規則=ビジネスルールではありません。
ビジネスルールの中に、入力規則を設定すること以外に項目に値を設定したり、表示項目を切り替えたりと色々なことができるため、入力規則⊂ビジネスルール(部分集合)といった表現が適切かと思います。
入力規則、ビジネスルールの作成
SFDC:入力規則の作成
では、Salesforce側の入力規則を作成。
[設定]→[カスタマイズ]→[取引先責任者]→[入力規則]から[新規]ボタンで作成します。
入力規則の設定はこのように入力します。
エラー数式条件には、エラーが発生する条件を記入するので間違えないように。
育成選手にチェックがついている時に、背番号の桁数が3桁未満であればエラーを出すようにしています。
保存および有効化して、ロジックの確認。
これでバッチリです。
D365:ビジネスルールの作成
Dynamics側のビジネスルールでの入力規則ですが、結論から言うと、ビジネスロジックルールだけではできません。
出来ない理由としては、桁数をチェックする機能がないからです。
そのため、条件を再考する必要があります。
そこで考えたのが、入力された背番号に対して、以下のような計算フィールドを設けること。
この計算フィールドは、背番号の先頭2桁を削っており、3桁であればトリムしたものでも値が設定されているのでそれを条件としてしまえばと言う思惑です。
計算フィールドを作成し、ビジネスルールを作成しました。
ソリューションの[エンティティ]→[所属選手]→[ビジネスルール]の[新規]から
条件はこのように設定します。
先ほど作成した計算フィールドの値の有無を見ることで3桁か否かを確認しています。
あと、目立たない場所ですが、重要なのが右上のスコープ欄。
フォームに設定するか、エンティティ全体に設定するかが選べます。
フォームに設定した場合、画面(対応したフォーム)から入力した時にビジネスルールが適用されます。
逆に言うと、画面から入力しないケースでは適用されません。
そのため、Excelなどからインポートした場合は適用されずにビジネスロジックが無視された入力値が入ることになります。
スコープを「エンティティ」にすればフォーム、インポートのどちらからもルールが適用されるので、基本はエンティティに設定しておいてください。
(デフォルトは「すべてのフォーム」になっているので要切り替えです)
作成したら、保存とアクティブ化をします。
作ったビジネスルールでうまく動作するかを確認。
アレッ、できてない。。。
育成選手3桁背番号なのに、エラーになってますね。
失敗です!!!
なぜ失敗したかというと、計算処理の順番。
保存した時に、ビジネスルール→計算フィールドの反映の順番で動作するので、計算フィールドには背番号更新前の状態でチェックがされてしまうんですよね。
なので、結論としては、Dynamics側でビジネスロジックルールをうまく適用させるためには、スクリプト(保存時に背番号の桁数をチェックして計算用項目に値をセットなど)の力を借りないとダメだということ。
Salesforceの入力規則はある程度数式でカバーできますが、Dynamicsでの条件式はほとんど扱えないと思ってください。
ビジネスロジックルールの条件式が乏しいなぁ(泣)。
まとめ
- Dynamicsのビジネスルールは入力規則の機能を含む
- Dynamicsのビジネスルールは条件式が乏しい、スクリプトやプラグインでカバーすることを考慮しておく
コメント