In any emerging area it is possible to be too early, and with DMN Method and Style, published in 2016, I plead guilty to that. It seemed like a good idea at the time. DMN 1.1 was finalized, and the bugs that had prevented implementation of DMN 1.0 were fixed. But it's one thing to have a standard be implementable and quite another for real tools actually to implement it. The best tool at that time didn't support BKMs or proper decision table syntax or FEEL, and it couldn't execute everything it could model. So yeah, it was too early for a serious book.
But times have changed! It's 2018. Even though DMN 1.2 has just gone final, the best tools already fully support it - DRDs, decision tables, BKMs, decision services, model import, etc. - all with the proper boxed expressions, XML serialization and model interchange, model execution, even one-click cloud deployment. Much better!
And back in 2016, I admit, I myself did not have enough experience in decision modeling to give good advice. Now I have a lot more, along with a better understanding of what matters, what decision modelers care about, what's too technical. A few months back, Edson Tirelli and I published the DMN Cookbook, a DMN guide for technical modelers and programmers. Now I've gone back and updated DMN Method and Style in a second edition, addressed to business users, completely rewritten and updated to DMN 1.2, and closely aligned to my DMN Basics and DMN Advanced training. It should be on Amazon in about a week. Below is the table of contents.
Preface to the Second Edition. v
- Outline of the Book. vii
- Acknowledgments. viii
- From Business Rules to Decision Models. 10
- Origins of DMN.. 12
- Ensuring Model Interoperability. 14
- The Business Value of Decision Models. 15
- Predictive Analytics, Machine Learning, and Explainable AI 16
- What Is DMN?. 19
- Decision Requirements. 19
- Decision Tables. 20
- Other Boxed Expressions. 21
- FEEL. 22
- A Language for Stateless Decision Services. 24
- A Common Language Shared by Business and IT. 24
- A Vendor-Independent Standard. 25
- Full DMN Support 25
- What’s NOT in DMN.. 26
- DMN Elements. 27
- Decisions. 27
- Datatypes. 27
- Decision Requirements. 28
- Decision Tables. 29
- Let’s Try It! 30
- Decision Requirements Diagram.. 38
- Modeling Decision Requirements. 39
- Decision Requirements by Example. 40
- Decision Table Basics. 47
- What Can You Put in a Decision Table Condition Cell?. 50
- Example: Affordability category. 52
- Literal Expressions. 52
- BKMs and Invocation. 53
- Test Execution. 57
- Bad BPMN.. 60
- Invoking a Routing Decision. 60
- Routing Decision Logic. 61
- Handling ORed Conditions. 65
- Hit Policy Overview.. 66
- A Tables Often Simpler than U Tables. 67
- Hit Policy P. 68
- Which Hit Policy Is Best?. 69
- Category with Reasons Pattern. 72
- The Problem with P Tables. 73
- Completeness. 77
- Overlaps and Table Consistency. 78
- Masked Rules. 79
- Subsumption. 80
- Normalization. 81
- First Normal Form.. 82
- Second Normal Form.. 82
- Third Normal Form.. 84
- DMN Data. 87
- Data in Decision Tables. 88
- Structured Types and Collections. 90
- Data Standardization and Reuse. 91
- Business Glossary. 92
- Model Libraries. 94
- Model Import 94
- Classification and Machine Learning. 97
- Normalizing Raw Data. 99
- Supporting Decisions as Classifications. 100
- Combining Ordered Classifications. 105
- Category-Score Pattern. 105
- Visualize Execution Steps. 109
- Wizard-Based Service Definition. 110
- Importing Services as Reusable Logic. 112
- Services as Delegated Implementation. 113
- Modeling Multistep Decisions. 117
- Decision Flows. 117
- Spec Lending Example Revisited. 118
- FEEL. 121
- Boxed Expressions. 124
- Values vs Expressions. 127
- Literal Expression Elements. 128
- Functions. 129
- Parameters. 129
- Arguments. 130
- Operators. 131
- FEEL String Functions. 132
- FEEL Number Functions. 133
- Formatting Numbers. 134
- Simplifying the Decision Logic. 139
- Creating Structured Variables. 141
- BKMs with Context. 142
- Context Entry as a Function Definition. 143
- Date and Time Components. 146
- Type Conversion. 147
- Durations. 147
- Date-Time Arithmetic. 148
- Addition. 148
- Subtraction. 148
- Multiplication. 149
- Division. 149
- Example. 149
- What Is a List?. 151
- Creating a List. 152
- List Datatypes. 152
- List Operator 152
- Collect Decision Table. 153
- Embedded Data Tables. 153
- Generating a List from Another List 154
- FEEL List Functions. 154
- Filter Expressions. 157
- Iteration. 159
- Enhanced Iteration. 160
- Adding Columns to a Table. 162
- Testing All Members of a List. 165
- Table Joins. 166
- List Membership and Set Operations. 168
- Item Membership. 168
- Set Operations. 168
- Intersection. 168
- Containment 169
- Identity. 169
- Sorting a List. 169
About the Author. 175