3.4. 交通違反 DMN デシジョン論理の定義

罰金を計算し、ドライバーが免許停止になるかどうかを判定するために、DMN デシジョンテーブルとコンテキストボックス式を使用した交通違反 DMN デシジョン論理を定義します。

図3.7 罰金のデシジョンテーブル

dmn gs fine decision table

図3.8 ドライバーを免許停止にする必要がありますか ?

dmn gs context table

前提条件

  • Business Central の交通違反 DRD で、DMN カスタムデータタイプが適切なデシジョンおよび入力ノードに割り当てられている。

手順

  1. 罰金を計算するには、DMN デザイナーキャンバスで Fine デシジョンノードを選択し、Edit をクリックして DMN ボックス式デザイナーを開きます。
  2. Select expressionDecision Table をクリックします。
  3. パラメーターフィールド Violation.DateViolation.Code、および Violation.Speed Limit で右クリックして、各フィールドで Delete を選択します。
  4. Violation.Actual Speed 列ヘッダーをクリックし、Name フィールドに Violation.Actual Speed - Violation.Speed Limit 式を入力します。
  5. Fine パラメーターフィールドを右クリックして、Insert left または Insert right を選択します。
  6. output-2 列サブヘッダーをクリックし、Name フィールドに Amount を入力し、Data Type プルダウンメニューから number を選択します。
  7. 同様に output-1 列サブヘッダーをクリックして Name フィールドに Points と入力し、Data Type フィールドから number を選択します。
  8. 次に、デシジョンテーブルの一行目に以下の値を入力します。

    • Violation.Type: "speed"
    • Violation.Actual Speed - Violation.Speed Limit: [10..30)
    • Amount: 500
    • Points: 3

      1 行目を右クリックし、Insert below を選択して新たな行を追加します。

  9. デシジョンテーブルの 2 行目に以下の値を入力します。

    • Violation.Type: "speed"
    • Violation.Actual Speed - Violation.Speed Limit: >= 30
    • Amount: 1000
    • Points: 7

      2 行目を右クリックし、Insert below を選択して新たな行を追加します。

  10. デシジョンテーブルの 3 行目に以下の値を入力します。

    • Violation.Type: "parking"
    • Violation.Actual Speed - Violation.Speed Limit: -
    • Amount: 100
    • Points: 1

      3 行目を右クリックし、Insert below を選択して新たな行を追加します。

  11. デシジョンテーブルの 4 行目に以下の値を入力します。

    • Violation.Type: "driving under the influence"
    • Violation.Actual Speed - Violation.Speed Limit: -
    • Amount: 1000
    • Points: 5
  12. Save をクリックします。
  13. ドライバーの免許停止ルールを定義するには DMN デザイナーキャンバスに戻って Should the driver be suspended? デシジョンノードを選択し、Edit をクリックして DMN ボックス式デザイナーを開きます。
  14. Select expressionContext をクリックします。
  15. ContextEntry-1 をクリックして NameTotal Points と入力し、Data Type プルダウンメニューから number を選択します。
  16. Total Points の横のセルをクリックしてコンテキストメニューから Literal Expression を選択し、Driver.Points + Fine.Points 式を入力します。
  17. Driver.Points + Fine.Points の下のセルのコンテキストメニューから Literal Expression を選択し、if Total Points >= 20 then "Yes" else "No" と入力します。
  18. Save をクリックします。

    これで罰金の計算方法とドライバーをいつ免許停止にするかを決定するコンテキストが定義されました。traffic-violation プロジェクトページに移動して Build をクリックすると、用例のプロジェクトがビルドされ、Alerts パネルのエラー (ある場合) が対処されます。