ProcessMIX Guide
  • Platform Overview
    • Introduction
    • Platform Purpose
    • Main Concepts
      • Organization Structure
      • Visual Language
      • Project Development Environment (IDE)
      • Deployment and Integration
      • Administration and Troubleshooting
    • First Steps
    • Change Log
      • 5.0.0
      • 5.0.5
      • 5.0.5.1
      • 5.0.5.2
      • 5.0.5.3
      • 5.0.5.4
  • Language Reference Guide
    • Overview
    • Data Structures and Types
      • Core Types (pdk.core)
      • Dictionary (pdk.asset.dictionary)
      • Scorecard (pdk.asset.scorecard)
      • Blockchain (pdk.blockchain)
      • Exceptions (pdk.ex)
      • Input/Output (pdk.io)
      • JSON Web Token (pdk.jwt)
      • Networking (pdk.net)
      • HTTP (pdk.net.http)
      • SOAP/Web Services (pdk.net.soap)
      • XML/DOM (pdk.net.xml)
      • S3 (pdk.s3)
      • SQL (pdk.sql)
      • Postgres (pdk.db.postgre)
      • Util (pdk.util)
      • Default Data Structure Field Values
    • Flows
      • Variables
        • Local Flow Variables
        • Node Variables
      • Flow Node Types
        • Core Nodes
          • In
          • Out
          • Assign
          • If
          • Switch
          • Iterator
          • Function Call
          • Subflow
          • Raise Exception
          • Exception Handler
          • Validator
        • Connector Nodes
          • Database Begin Transaction
          • Database Commit Transaction
          • Database Rollback Transaction
          • Database Query Executor
          • EVM Blockchain Functions
          • EVM Blockchain Smart Contract Functions
          • REST Service Executor
          • SOAP Service Executor
          • S3 Connector
          • SMB Connector
      • Expressions
      • Built-In Functions
        • Expression functions
          • pdk.util.Any
          • pdk.util.Array
          • pdk.util.Blockchain
          • pdk.util.Cast
          • pdk.util.Codec
          • pdk.util.Crypto
          • pdk.util.Date
          • pdk.util.File
          • pdk.util.Json
          • pdk.util.JWT
          • pdk.util.Map
          • pdk.util.Math
          • pdk.util.String
          • pdk.util.Util
        • Node functions
          • pdk.flow.Any
          • pdk.flow.Array
          • pdk.flow.File
          • pdk.flow.JsonArray
          • pdk.flow.JsonObject
          • pdk.flow.HttpRequest
          • pdk.flow.HttpResponse
          • pdk.flow.Logger
          • pdk.flow.Map
          • pdk.flow.Xml
            • pdk.flow.xml.XmlAttr
            • pdk.flow.xml.XmlElement
            • pdk.flow.xml.XmlNode
            • pdk.flow.xml.XmlDocument
            • pdk.flow.xml.XmlDocumentType
            • pdk.flow.xml.XmlDOMConfiguration
            • pdk.flow.xml.XmlDOMImplementation
            • pdk.flow.xml.XmlProcessingInstruction
            • pdk.flow.xml.XmlTypeInfo
            • pdk.flow.xml.XmlCharacterData
            • pdk.flow.xml.XmlText
            • pdk.flow.xml.XmlNamedNodeMap
          • pdk.node.BlockchainEth
          • pdk.node.S3
          • pdk.node.Smb
      • Exceptions
        • Checked Exceptions
        • Runtime Exceptions
    • Assets
      • Dictionary
      • Decision Table
      • Scorecard
      • PMML
    • Connectors
      • DB Connector
        • Prepared Query
        • Dynamic Query
        • Query input parameters
        • Stored Procedure
      • REST Connector
      • SOAP Connector
      • S3 Connector
      • SMB Connector
      • EVM Blockchain Connector
    • Global Variables
    • Appendices
      • Overview of Database Transactions
      • Reserved Words
  • Project Development Environment (IDE)
    • Project Explorer Panel
    • Flow Builder
    • Flow Node Editor
    • Data Structure Builder
    • Connector Builders
      • REST Connector Builder
      • SOAP Connector Builder
      • DB (Database) Connector Builder
      • EVM Blockchain Connectors Builder
      • S3 Connector Builder
    • Asset Builders
      • Dictionary Builder
      • Decision Table Builder
      • Scorecard Builder
      • PMML Asset Builder
    • Global Variables Panel
    • Expression Editor
    • Project Deployment and Execution
    • Cron Expression Generator
    • Test Helper
    • Debugging the Project
    • DB transactions
    • Team Collaboration Tools
      • Version Control
      • Conflict Resolver
    • Selectors
    • Error Panel
    • Local History
  • Home and Administration Guide
    • Organization and Subscription
    • Organization Team
    • Repositories and Projects
    • Environments
    • Deployments
    • Database Provisioning
    • Roles and Permissions
  • Logs and Troubleshooting
    • Request/Call Logs
    • Deployment Logs
    • Application Logs
  • Appendix: Example Project
    • Risk Mitigation Solution
Powered by GitBook
On this page
  1. Language Reference Guide
  2. Assets

Decision Table

PreviousDictionaryNextScorecard

Last updated 6 months ago

In ProcessMIX, a decision table is a visual metaphor that allows to quickly define large amount of decision logic (business rules) in a compact and easily manageable tabular format—a spreadsheet.

Unlike a flow, which allows to develop rules of any complexity with the help of its conditional nodes, expresions and so on, business logic that can be expressed by a decision table is simpler. Every row in it contains a set of simple property condition checks, each represented by its own condition column. If all conditions in the row a satisfied, a data structure with the rule's result is created, with properties populated from the values contained in result columns.

Below is an example of a decision table:

CreditDecisionTable

YearlyIncome    CreditScore  |  Approve    DecisionCode
--------------------------------------------------------
<20000           n/a         |   false      'LowIncome'
n/a              <600        |   false      'LowScore'
20000-40000      600-650     |   true       'TierC'
>40000           >750        |   true       'TierA'
n/a              n/a         |   true       'TierB'

It evaluates details of a credit application and makes approval decision and assignment to the credit tier. The "YearlyIncome" and "CreditScore" are condition columns, while the "Approve" and "DecisionCode" are the result columns.

In this case it is designed so that the table's evaluation stops after reaching the first row with all satisfying conditions. Decision tables can also be configured to execute every satisfactory rule until the end of the table is reached.

The n/a is a special instruction to skip the check because the value of some property is irrelevant to the logic of a given row. For example, in the first row all applications with insufficient income are automatically rejected, regardless of their credit score. And in the last row, all conditions are skipped, because it serves as a catch-all check to assign a default credit tier to all applicants not already covered by the previous rules.

When a decision table asset is created in ProcessMIX, the system automatically generates two backing —one to hold all condition properties (input data), and another one to hold the resulting properties (output data). As you edit condition and result properties in the decision table, those backing structures are automatically updated to stay in sync.

The condition and result properties must have simple data types:

  • String

  • Integer

  • Float

  • Boolean

  • Date

A flow that wants to apply a decision table needs to have a "decision table" node to be added to it. In there, input structure with condition parameters needs to be provided.

The result of the table execution (an array with execution results from all activated table rows) will become available as a in the remaining part of the flow.

You can learn more about creating and editing decision tables in the section.

data structures
node variable
Decision Table Builder