This is an automated email from the ASF dual-hosted git repository.
tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git
The following commit(s) were added to refs/heads/main by this push:
new 952298d7e71 kie-issues#1773: DMN Editor: Render badges with evaluation
status on Decision nodes (#2868)
952298d7e71 is described below
commit 952298d7e715e85798b3037297d4d59ffb6f058b
Author: Jozef Marko <[email protected]>
AuthorDate: Tue Feb 25 14:59:52 2025 +0100
kie-issues#1773: DMN Editor: Render badges with evaluation status on
Decision nodes (#2868)
---
packages/dmn-editor-envelope/src/DmnEditorRoot.tsx | 2 +-
packages/dmn-editor/src/DmnEditor.css | 51 ++
packages/dmn-editor/src/DmnEditor.tsx | 9 +-
packages/dmn-editor/src/DmnEditorContext.tsx | 4 +
packages/dmn-editor/src/diagram/nodes/Nodes.tsx | 13 +-
.../dmn-editor/src/overlaysPanel/OverlaysPanel.tsx | 1 +
.../EmptyWithAvailableExternalModels.mdx | 35 +-
.../evaluationHighlights/EvaluationHighlights.mdx | 25 +
.../EvaluationHighlights.stories.tsx | 850 +++++++++++++++++++++
.../dmn-editor/tests-e2e/__fixtures__/editor.ts | 4 +
.../dmn-editor/tests-e2e/__fixtures__/overlays.ts | 7 +
.../evaluation-highlights-failure.png | Bin 0 -> 2692 bytes
.../evaluation-highlights-skipped.png | Bin 0 -> 3307 bytes
.../evaluation-highlights-success.png | Bin 0 -> 2467 bytes
.../evaluation-highlights-failure.png | Bin 0 -> 2711 bytes
.../evaluation-highlights-skipped.png | Bin 0 -> 3319 bytes
.../evaluation-highlights-success.png | Bin 0 -> 2478 bytes
.../evaluation-highlights-failure.png | Bin 0 -> 2560 bytes
.../evaluation-highlights-skipped.png | Bin 0 -> 3087 bytes
.../evaluation-highlights-success.png | Bin 0 -> 2147 bytes
.../evaluationHighlights.spec.ts | 39 +
packages/form-dmn/src/FormDmnOutputs.tsx | 3 +-
packages/playwright-base/README.md | 2 +-
23 files changed, 1021 insertions(+), 24 deletions(-)
diff --git a/packages/dmn-editor-envelope/src/DmnEditorRoot.tsx
b/packages/dmn-editor-envelope/src/DmnEditorRoot.tsx
index 284178b8a07..ae20e2c5359 100644
--- a/packages/dmn-editor-envelope/src/DmnEditorRoot.tsx
+++ b/packages/dmn-editor-envelope/src/DmnEditorRoot.tsx
@@ -478,7 +478,7 @@ export class DmnEditorRoot extends
React.Component<DmnEditorRootProps, DmnEditor
originalVersion={this.state.marshaller?.originalVersion}
model={this.model}
externalModelsByNamespace={this.state.externalModelsByNamespace}
- evaluationResults={[]}
+ evaluationResults={{}}
validationMessages={[]}
externalContextName={""}
externalContextDescription={""}
diff --git a/packages/dmn-editor/src/DmnEditor.css
b/packages/dmn-editor/src/DmnEditor.css
index 5c6ec0e2821..3e3ec3996d5 100644
--- a/packages/dmn-editor/src/DmnEditor.css
+++ b/packages/dmn-editor/src/DmnEditor.css
@@ -104,6 +104,57 @@
}
/* (end) nodes */
+/* (begin) decision node evaluation status */
+.kie-dmn-editor--decision-node--evaluation-status-failure::before {
+ content: "\2716";
+ font-size: 0.8em;
+ text-align: left;
+ color: white;
+ background-color: rgb(134, 106, 212);
+ position: absolute;
+ top: 2px;
+ left: 2px;
+ height: 40px;
+ width: 40px;
+ clip-path: polygon(0% 100%, 100% 0%, 0% 0%);
+ padding-left: 7px;
+ padding-top: 2px;
+}
+
+.kie-dmn-editor--decision-node--evaluation-status-success::before {
+ content: "\2714";
+ font-size: 0.8em;
+ text-align: left;
+ color: white;
+ background-color: rgb(134, 106, 212);
+ position: absolute;
+ top: 2px;
+ left: 2px;
+ height: 40px;
+ width: 40px;
+ clip-path: polygon(0% 100%, 100% 0%, 0% 0%);
+ padding-left: 7px;
+ padding-top: 2px;
+}
+
+.kie-dmn-editor--decision-node--evaluation-status-skipped::before {
+ content: "\21B7";
+ font-size: 0.8em;
+ text-align: left;
+ color: white;
+ background-color: rgb(134, 106, 212);
+ position: absolute;
+ top: 2px;
+ left: 2px;
+ height: 40px;
+ width: 40px;
+ clip-path: polygon(0% 100%, 100% 0%, 0% 0%);
+ padding-left: 7px;
+ padding-top: 2px;
+}
+
+/* (end) decision node evaluation status */
+
/* (begin) decisionService and group nodes */
/* DECISION SERVICES AND GROUPS HAVE A SPECIFIC SELECTION MECHANISM TO ALLOW
EDITING EDGES INSIDE THEM */
.kie-dmn-editor--node-decisionService-visibleRect {
diff --git a/packages/dmn-editor/src/DmnEditor.tsx
b/packages/dmn-editor/src/DmnEditor.tsx
index e1115f7f97f..455c6629782 100644
--- a/packages/dmn-editor/src/DmnEditor.tsx
+++ b/packages/dmn-editor/src/DmnEditor.tsx
@@ -71,7 +71,14 @@ export type DmnEditorRef = {
getCommands: () => Commands;
};
-export type EvaluationResults = Record<string, any>;
+/**
+ * TODO we need to implement mapping between:
+ * - DMN Runner engine
+ * - and (extended-services-api/src/dmnResult.ts)
+ * - and (EvaluationResults)
+ * https://github.com/apache/incubator-kie-issues/issues/1823
+ */
+export type EvaluationResults = Record<string, "success" | "failure" |
"skipped">;
export type ValidationMessages = Record<string, any>;
export type OnDmnModelChange = (model: Normalized<DmnLatestModel>) => void;
diff --git a/packages/dmn-editor/src/DmnEditorContext.tsx
b/packages/dmn-editor/src/DmnEditorContext.tsx
index 21c8e4bf4bc..909182258e3 100644
--- a/packages/dmn-editor/src/DmnEditorContext.tsx
+++ b/packages/dmn-editor/src/DmnEditorContext.tsx
@@ -30,6 +30,7 @@ export type DmnEditorContextProviderProps = Pick<
| "model"
| "onRequestToJumpToPath"
| "onRequestToResolvePath"
+ | "evaluationResults"
>;
export type DmnModelBeforeEditing = DmnLatestModel;
@@ -41,6 +42,7 @@ export type DmnEditorContextType = Pick<
| "issueTrackerHref"
| "onRequestToJumpToPath"
| "onRequestToResolvePath"
+ | "evaluationResults"
> & {
dmnModelBeforeEditingRef: React.MutableRefObject<DmnModelBeforeEditing>;
dmnEditorRootElementRef: React.RefObject<HTMLDivElement>;
@@ -65,6 +67,7 @@ export function DmnEditorContextProvider(props:
React.PropsWithChildren<DmnEdito
issueTrackerHref: props.issueTrackerHref,
onRequestToJumpToPath: props.onRequestToJumpToPath,
onRequestToResolvePath: props.onRequestToResolvePath,
+ evaluationResults: props.evaluationResults,
}),
[
props.externalContextDescription,
@@ -72,6 +75,7 @@ export function DmnEditorContextProvider(props:
React.PropsWithChildren<DmnEdito
props.issueTrackerHref,
props.onRequestToJumpToPath,
props.onRequestToResolvePath,
+ props.evaluationResults,
]
);
return <DmnEditorContext.Provider
value={value}>{props.children}</DmnEditorContext.Provider>;
diff --git a/packages/dmn-editor/src/diagram/nodes/Nodes.tsx
b/packages/dmn-editor/src/diagram/nodes/Nodes.tsx
index e9b3487ecb4..fb9f15e2fc9 100644
--- a/packages/dmn-editor/src/diagram/nodes/Nodes.tsx
+++ b/packages/dmn-editor/src/diagram/nodes/Nodes.tsx
@@ -73,6 +73,7 @@ import { propsHaveSameValuesDeep } from
"../memoization/memoization";
import { useExternalModels } from
"../../includedModels/DmnEditorDependenciesContext";
import { NODE_LAYERS } from "../../store/computed/computeDiagramData";
import { useSettings } from "../../settings/DmnEditorSettingsContext";
+import { useDmnEditor } from "../../DmnEditorContext";
import { useRefactor } from "../../refactor/RefactorConfirmationDialog";
export type ElementFilter<E extends { __$$element: string }, Filter extends
string> = E extends any
@@ -390,6 +391,16 @@ export const DecisionNode = React.memo(
);
});
+ const isEvaluationHighlightsEnabled = useDmnEditorStore((s) =>
s.diagram.overlays.enableEvaluationHighlights);
+ const { evaluationResults } = useDmnEditor();
+ const evaluationResultsClassName = useMemo(
+ () =>
+ isEvaluationHighlightsEnabled && evaluationResults![decision["@_id"]]
!== undefined
+ ?
`kie-dmn-editor--decision-node--evaluation-status-${evaluationResults![decision["@_id"]]}`
+ : "",
+ [decision, evaluationResults, isEvaluationHighlightsEnabled]
+ );
+
return (
<>
{refactorConfirmationDialog}
@@ -408,7 +419,7 @@ export const DecisionNode = React.memo(
<PositionalNodeHandles isTargeted={isTargeted &&
isValidConnectionTarget} nodeId={id} />
<div
ref={ref}
- className={`kie-dmn-editor--node kie-dmn-editor--decision-node
${className}`}
+ className={`kie-dmn-editor--node kie-dmn-editor--decision-node
${className} ${evaluationResultsClassName}`}
tabIndex={-1}
onDoubleClick={triggerEditing}
onKeyDown={triggerEditingIfEnter}
diff --git a/packages/dmn-editor/src/overlaysPanel/OverlaysPanel.tsx
b/packages/dmn-editor/src/overlaysPanel/OverlaysPanel.tsx
index d95666eae26..3541b1847f2 100644
--- a/packages/dmn-editor/src/overlaysPanel/OverlaysPanel.tsx
+++ b/packages/dmn-editor/src/overlaysPanel/OverlaysPanel.tsx
@@ -167,6 +167,7 @@ export function OverlaysPanel({ availableHeight }:
OverlaysPanelProps) {
}
>
<Switch
+
data-testid={"kie-tools--dmn-editor--evaluation-highlights-control"}
isChecked={diagram.overlays.enableEvaluationHighlights}
onChange={(newValue) =>
dmnEditorStoreApi.setState((state) => {
diff --git
a/packages/dmn-editor/stories/misc/emptyWithAvailableExternalModels/EmptyWithAvailableExternalModels.mdx
b/packages/dmn-editor/stories/misc/emptyWithAvailableExternalModels/EmptyWithAvailableExternalModels.mdx
index 45f48833f50..dc0419b8c48 100644
---
a/packages/dmn-editor/stories/misc/emptyWithAvailableExternalModels/EmptyWithAvailableExternalModels.mdx
+++
b/packages/dmn-editor/stories/misc/emptyWithAvailableExternalModels/EmptyWithAvailableExternalModels.mdx
@@ -1,22 +1,19 @@
-/\*
-
-- Licensed to the Apache Software Foundation (ASF) under one
-- or more contributor license agreements. See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership. The ASF licenses this file
-- to you under the Apache License, Version 2.0 (the
-- "License"); you may not use this file except in compliance
-- with the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing,
-- software distributed under the License is distributed on an
-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-- KIND, either express or implied. See the License for the
-- specific language governing permissions and limitations
-- under the License.
- \*/
+{/* Licensed to the Apache Software Foundation (ASF) under one */}
+{/* or more contributor license agreements. See the NOTICE file */}
+{/* distributed with this work for additional information */}
+{/* regarding copyright ownership. The ASF licenses this file */}
+{/* to you under the Apache License, Version 2.0 (the */}
+{/* "License"); you may not use this file except in compliance */}
+{/* with the License. You may obtain a copy of the License at */}
+{/* */}
+{/* http://www.apache.org/licenses/LICENSE-2.0 */}
+{/* */}
+{/* Unless required by applicable law or agreed to in writing, */}
+{/* software distributed under the License is distributed on an */}
+{/* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY */}
+{/* KIND, either express or implied. See the License for the */}
+{/* specific language governing permissions and limitations */}
+{/* under the License. */}
import EmptyWithAvailableExternalModelsStories from
"./EmptyWithAvailableExternalModels.stories";
import { Meta } from "@storybook/blocks";
diff --git
a/packages/dmn-editor/stories/misc/evaluationHighlights/EvaluationHighlights.mdx
b/packages/dmn-editor/stories/misc/evaluationHighlights/EvaluationHighlights.mdx
new file mode 100644
index 00000000000..87d535868df
--- /dev/null
+++
b/packages/dmn-editor/stories/misc/evaluationHighlights/EvaluationHighlights.mdx
@@ -0,0 +1,25 @@
+{/* Licensed to the Apache Software Foundation (ASF) under one */}
+{/* or more contributor license agreements. See the NOTICE file */}
+{/* distributed with this work for additional information */}
+{/* regarding copyright ownership. The ASF licenses this file */}
+{/* to you under the Apache License, Version 2.0 (the */}
+{/* "License"); you may not use this file except in compliance */}
+{/* with the License. You may obtain a copy of the License at */}
+{/* */}
+{/* http://www.apache.org/licenses/LICENSE-2.0 */}
+{/* */}
+{/* Unless required by applicable law or agreed to in writing, */}
+{/* software distributed under the License is distributed on an */}
+{/* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY */}
+{/* KIND, either express or implied. See the License for the */}
+{/* specific language governing permissions and limitations */}
+{/* under the License. */}
+
+import EvaluationHighlights from "./EvaluationHighlights.stories";
+import { Meta } from "@storybook/blocks";
+
+<Meta title="MDX/Misc/EvaluationHighlights" of={EvaluationHighlights} />
+
+## Evaluation Highlights Status Demo
+
+Please use `Enable evaluation highlights` toggle to activate and deactivate
the evaluation highlight feature. In this story you can see the evaluation
results status directly on the Decision node shape.
diff --git
a/packages/dmn-editor/stories/misc/evaluationHighlights/EvaluationHighlights.stories.tsx
b/packages/dmn-editor/stories/misc/evaluationHighlights/EvaluationHighlights.stories.tsx
new file mode 100644
index 00000000000..55ad44b1718
--- /dev/null
+++
b/packages/dmn-editor/stories/misc/evaluationHighlights/EvaluationHighlights.stories.tsx
@@ -0,0 +1,850 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import * as React from "react";
+import { useCallback, useState } from "react";
+import type { Meta, StoryObj } from "@storybook/react";
+import { DmnLatestModel, DmnMarshaller, getMarshaller } from
"@kie-tools/dmn-marshaller";
+import { DmnEditor, DmnEditorProps, OnDmnModelChange } from
"@kie-tools/dmn-editor/dist/DmnEditor";
+import { normalize, Normalized } from
"@kie-tools/dmn-marshaller/dist/normalization/normalize";
+
+import { DmnEditorWrapper } from "../../dmnEditorStoriesWrapper";
+
+const initialModel = `<?xml version="1.0" encoding="UTF-8" ?>
+<dmn:definitions xmlns:dmn="http://www.omg.org/spec/DMN/20180521/MODEL/"
+ xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/"
+ xmlns:kie="https://kie.apache.org/dmn/extensions/1.0"
+ xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/"
+ xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"
+ xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/"
+
xmlns:included0="https://kie.apache.org/dmn/_923784BD-CD31-488A-9C31-C1A83C5483C0"
+
xmlns:included1="https://kie.apache.org/dmn/_D19B0015-2CBD-4BA8-84A9-5F554D84A9E1"
+ expressionLanguage="http://www.omg.org/spec/DMN/20180521/FEEL/"
+ typeLanguage="http://www.omg.org/spec/DMN/20211108/FEEL/"
+
namespace="https://kie.apache.org/dmn/_857FE424-BEDA-4772-AB8E-2F4CDDB864AB"
+ id="_C6CBECEB-2BBC-4E14-80B0-17F576B2CF92"
+ name="loan_pre_qualification">
+ <dmn:extensionElements />
+ <dmn:itemDefinition id="_D40B0106-62E8-4AC0-A39A-C6C9506194A9"
name="Requested_Product" isCollection="false">
+ <dmn:itemComponent id="_68b4a96c-198a-4575-b29a-a2c8b0539a2c" name="Type"
isCollection="false">
+ <dmn:typeRef>Product_Type</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_ab1647c2-cb63-4808-8d90-36d41591a40c" name="Rate"
isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_152917bb-6095-4057-8613-5b08b77db235" name="Term"
isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_e2f0e8cd-8f5a-43d4-b263-aaa5b9ae4420"
name="Amount" isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_2B4E9593-3239-4E04-A213-345F0AA0AF9D"
name="Marital_Status" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_5BD13D9D-412F-4E6B-914A-3D8AAAC6A705">
+ <dmn:text>"M","D","S"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_F090CBB7-F5C3-4C54-9905-517DC1469B52"
name="Applicant_Data" isCollection="false">
+ <dmn:itemComponent id="_f52e2b9f-544c-48ac-91e0-168a6e13fc8b" name="Age"
isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_5a20d4c2-0e66-4bb9-b5ea-3b9f2cd8e050"
name="Marital Status" isCollection="false">
+ <dmn:typeRef>Marital_Status</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_701117b8-2f8d-4e94-a5db-d503f0fba3af"
name="Employment Status" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_4A8E36FC-A40C-4CB5-9AE1-73082DA24D13">
+
<dmn:text>"Unemployed","Employed","Self-employed","Student"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_17ad2a24-425f-4df7-92fc-609e10217b8b"
name="Existing Customer" isCollection="false">
+ <dmn:typeRef>boolean</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_bb9ef72e-2e0d-4175-ba58-d613bda7e9b3"
name="Monthly" isCollection="false">
+ <dmn:itemComponent id="_32d5ea39-4bbc-4b16-88cd-f7e6e47a885e"
name="Income" isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_7850468b-173d-4162-9c7a-94453a4b02d7"
name="Repayments" isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_af578182-5c71-4b71-9027-0f0cf83770ab"
name="Expenses" isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_4a4d01be-fe97-49a2-8c4c-3a49ff27968d" name="Tax"
isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_f95dbf70-d256-4d40-a61d-c6332d864e8f"
name="Insurance" isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ </dmn:itemComponent>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_1945BD2E-C82C-4E7A-A59E-484B56A3AE46"
name="Post-Bureau_Risk_Category" isCollection="false">
+ <dmn:itemComponent id="_19ecc622-e72c-482d-9de3-6578a1c76f1e" name="Risk
Category" isCollection="false">
+ <dmn:typeRef>Risk_Category</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_2fa724d1-b276-4a3f-a2ef-2e7db3d362f3" name="Credit
Contingency Factor" isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_4816704B-AB7F-4624-8368-0BBBAFC04FB9"
name="Pre-Bureau_Risk_Category" isCollection="false">
+ <dmn:itemComponent id="_78b44e10-e166-44a4-83a3-5d12c99529e8" name="Risk
Category" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_fa41a482-a86a-4b52-a750-35170cd6bba3" name="Credit
Contingency Factor" isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ </dmn:itemComponent>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_9AEAE50E-67BF-4428-A6CD-B48D299FD73C"
name="Eligibility" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_79C7F45D-228F-437B-AF7E-615FC72A5354">
+ <dmn:text>"Ineligible","Eligible"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_FBF245E7-9A93-4D52-9F02-AF6893011A5F"
name="Strategy" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_0B005355-19D0-447B-B2DE-6D1290C7504C">
+
<dmn:text>"Decline","Bureau","Through"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_5D34E713-E94E-403E-A681-DD6948BE4F79"
name="Bureau_Call_Type" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_947DBBA1-70A0-42DA-BC37-FD2FD93BF61B">
+ <dmn:text>"Full","Mini","None"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_9AF58ED6-A526-4346-8780-0D1E6038CA6F"
name="Product_Type" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_A2554140-8060-4F66-BA16-3A8DFE12C17C">
+ <dmn:text>"Standard Loan","Special Loan"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_4D36A25E-9A37-47AE-B9BF-94338AE67609"
name="Risk_Category" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_041426C2-B9D2-4C18-9AC3-5A508D000839">
+ <dmn:text>"High","Medium","Low","Very
Low","Decline"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_46C870FC-2A99-43A0-9D1B-3D3C5516FB23"
name="Credit_Score_Rating" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_8470AE69-2814-4911-953D-3FC61A681063">
+
<dmn:text>"Poor","Bad","Fair","Good","Excellent"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_7641A6FA-BCF3-45D1-A0B6-71B0634ABB3E"
name="Back_End_Ratio" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_CA1C6F0E-186F-41DD-8D8D-D405789BA3F1">
+ <dmn:text>"Insufficient","Sufficient"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_B5E00A2D-3C95-4A9C-BCA6-BDE852939F6D"
name="Front_End_Ratio" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_B8658CA2-F472-4390-8AB0-1DD49100B20C">
+ <dmn:text>"Sufficient","Insufficient"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_B8ACE210-2C55-4C66-B3D8-4885EE1C52A0"
name="Qualification" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_1F66B8BF-6AB7-4965-8A69-897DDC1A8B34">
+ <dmn:text>"Not Qualified","Qualified"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_2CC2E8D7-1BE2-4E4A-8072-55A1EC94DB6E"
name="Credit_Score" isCollection="false">
+ <dmn:itemComponent id="_d53ce920-87f5-4a4f-baba-85c2a830d60f" name="FICO"
isCollection="false">
+ <dmn:typeRef>number</dmn:typeRef>
+ <dmn:allowedValues id="_E30AADBD-D028-475D-B8D8-B5687D454BED">
+ <dmn:text>[300..850]</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemComponent>
+ </dmn:itemDefinition>
+ <dmn:itemDefinition id="_3C37A6F1-C113-4993-BB57-E89B99C70B02"
name="Loan_Qualification" isCollection="false">
+ <dmn:itemComponent id="_e11c3ac3-7370-4378-967b-91e9cb221fe1"
name="Qualification" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ <dmn:allowedValues id="_B0AD0641-0023-461D-B20E-41CAE02F9BE4">
+ <dmn:text>"Qualified","Not Qualified"</dmn:text>
+ </dmn:allowedValues>
+ </dmn:itemComponent>
+ <dmn:itemComponent id="_b3541f82-5bc9-4fab-ba9b-c423a9a2cd6c"
name="Reason" isCollection="false">
+ <dmn:typeRef>string</dmn:typeRef>
+ </dmn:itemComponent>
+ </dmn:itemDefinition>
+ <dmn:inputData id="_4C89E59C-FDDA-438C-8D1F-0B1194EF6DAE" name="Credit
Score">
+ <dmn:extensionElements />
+ <dmn:variable id="_A97019FC-EE01-451F-A7AA-5A97ED005FB9" name="Credit
Score" typeRef="Credit_Score" />
+ </dmn:inputData>
+ <dmn:businessKnowledgeModel id="_4C788DBD-C672-4F41-9AFE-9C7D2C145734"
name="Lender Acceptable DTI">
+ <dmn:extensionElements />
+ <dmn:variable id="_85508943-7AD2-4AA0-80E5-20923CA2308D" name="Lender
Acceptable DTI" typeRef="number" />
+ <dmn:encapsulatedLogic id="_9F0257EE-CF82-49FD-AEDD-3155890864FF"
kind="FEEL">
+ <dmn:literalExpression id="_21E8FA38-C947-4733-9E52-CF81A97ADF91">
+ <dmn:text>0.36</dmn:text>
+ </dmn:literalExpression>
+ </dmn:encapsulatedLogic>
+ </dmn:businessKnowledgeModel>
+ <dmn:decision id="_F0DC8923-5FC7-4200-8BD1-461D5F3714BE" name="Front End
Ratio">
+ <dmn:extensionElements />
+ <dmn:variable id="_A0B0B032-F63F-491F-A65E-72E68A86B8FD" name="Front End
Ratio" typeRef="Front_End_Ratio" />
+ <dmn:informationRequirement id="_89EEAF9F-5A5D-4F59-91B7-EA418A7229AF">
+ <dmn:requiredInput href="#_1CF5CEFA-AF97-46F9-9CD5-9A8AEBB20B4E" />
+ </dmn:informationRequirement>
+ <dmn:informationRequirement id="_87730C5A-5648-415B-9189-EF4D8805F8C9">
+ <dmn:requiredInput href="#_6E3205AF-7E3D-4ABE-A367-96F3F6E8210E" />
+ </dmn:informationRequirement>
+ <dmn:knowledgeRequirement id="_63DE7C3B-A767-4B8A-A098-91ECB4B8D330">
+ <dmn:requiredKnowledge href="#_FAF9080E-F4EF-49F7-AEFD-0D2990D8FFDA" />
+ </dmn:knowledgeRequirement>
+ <dmn:knowledgeRequirement id="_2C95829D-FCF9-44F5-8F5A-0A6CDB60600D">
+ <dmn:requiredKnowledge href="#_C98BE939-B9C7-43E0-83E8-EE7A16C5276D" />
+ </dmn:knowledgeRequirement>
+ <dmn:context id="_08A9C33D-719F-4B05-AC42-D15464798BC4" label="Front End
Ratio" typeRef="Front_End_Ratio">
+ <dmn:contextEntry id="_C8F98D0F-218F-4B60-BD99-7FD98078FE56">
+ <dmn:invocation id="_EB658586-C3C8-488E-8118-E69E31583106"
typeRef="<Undefined>">
+ <dmn:literalExpression id="_6E79E4D9-BBFB-4E90-8AA3-A6C153C3C946">
+ <dmn:text>PITI</dmn:text>
+ </dmn:literalExpression>
+ <dmn:binding id="_4B93E8C8-A092-4EAC-B23A-CC138225ACC3">
+ <dmn:literalExpression id="_51ACEC3C-4207-4F5F-8FDD-9EDAA3270E60"
typeRef="<Undefined>">
+ <dmn:text>(Requested Product.Amount*((Requested
Product.Rate/100)/12))/(1-(1/(1+(Requested Product.Rate/100)/12)**-Requested
Product.Term))</dmn:text>
+ </dmn:literalExpression>
+ <dmn:parameter name="pmt" typeRef="<Undefined>" />
+ </dmn:binding>
+ <dmn:binding id="_B9D0FB44-605A-42DB-81F7-4DF4C4CC1CDD">
+ <dmn:literalExpression id="_5D050B8D-DF55-45FD-988B-9C56BED53D5B"
typeRef="<Undefined>">
+ <dmn:text>Applicant Data.Monthly.Tax</dmn:text>
+ </dmn:literalExpression>
+ <dmn:parameter name="tax" typeRef="<Undefined>" />
+ </dmn:binding>
+ <dmn:binding id="_67372884-0407-4812-986F-3A2CC4C3A7B1">
+ <dmn:literalExpression id="_14C44A69-56DB-4B68-B757-4225C80E4D88"
typeRef="<Undefined>">
+ <dmn:text>Applicant Data.Monthly.Insurance</dmn:text>
+ </dmn:literalExpression>
+ <dmn:parameter name="insurance" typeRef="<Undefined>" />
+ </dmn:binding>
+ <dmn:binding id="_EDE0107C-9736-4BB6-9500-173FFAFF00DB">
+ <dmn:literalExpression id="_0DB5DE05-A2AD-4013-B191-DC1D1637A132"
typeRef="<Undefined>">
+ <dmn:text>Applicant Data.Monthly.Income</dmn:text>
+ </dmn:literalExpression>
+ <dmn:parameter name="income" typeRef="<Undefined>" />
+ </dmn:binding>
+ </dmn:invocation>
+ <dmn:variable name="Client PITI" typeRef="number" />
+ </dmn:contextEntry>
+ <dmn:contextEntry id="_3F95EFD0-94D7-4D1A-9EA9-C8E12982D7E8">
+ <dmn:literalExpression id="_3F95EFD0-94D7-4D1A-9EA9-C8E12982D7E8"
typeRef="<Undefined>">
+ <dmn:text>if Client PITI <= Lender Acceptable PITI()
+then "Sufficient"
+else "Insufficient"</dmn:text>
+ </dmn:literalExpression>
+ </dmn:contextEntry>
+ </dmn:context>
+ </dmn:decision>
+ <dmn:businessKnowledgeModel id="_FAF9080E-F4EF-49F7-AEFD-0D2990D8FFDA"
name="PITI">
+ <dmn:extensionElements />
+ <dmn:variable id="_994F490E-10AC-4704-BFDA-14A3B98A981E" name="PITI"
typeRef="number" />
+ <dmn:encapsulatedLogic id="_D33D9AEA-49DF-489F-98EC-4B42FF8C2027"
label="PITI" kind="FEEL" typeRef="number">
+ <dmn:formalParameter id="_664280C1-D5E0-47BE-82EF-0A6579975A62"
name="pmt" typeRef="number" />
+ <dmn:formalParameter id="_3E7DF0B3-C48B-481D-B092-FC82EC2F6E37"
name="tax" typeRef="number" />
+ <dmn:formalParameter id="_DF691F86-AD12-46BA-B149-AC875836A116"
name="insurance" typeRef="number" />
+ <dmn:formalParameter id="_9E2E257F-90EB-4FC4-8DD9-089784E7579E"
name="income" typeRef="number" />
+ <dmn:literalExpression id="_A32ED4A5-7B89-40F7-BE25-CDB636FE071C"
typeRef="<Undefined>">
+ <dmn:text>(pmt + tax + insurance) / income</dmn:text>
+ </dmn:literalExpression>
+ </dmn:encapsulatedLogic>
+ </dmn:businessKnowledgeModel>
+ <dmn:inputData id="_1CF5CEFA-AF97-46F9-9CD5-9A8AEBB20B4E" name="Applicant
Data">
+ <dmn:extensionElements />
+ <dmn:variable id="_2BBF28D2-DF09-4201-8D7A-5820E260592B" name="Applicant
Data" typeRef="Applicant_Data" />
+ </dmn:inputData>
+ <dmn:decision id="_D6F4234F-15B3-4F5B-B814-5F6FF29D2907" name="Back End
Ratio">
+ <dmn:extensionElements />
+ <dmn:variable id="_5AF571F7-AD41-43DC-ABFD-26672585042F" name="Back End
Ratio" typeRef="Back_End_Ratio" />
+ <dmn:informationRequirement id="_77BA409B-E00D-4FBC-B522-8F656D4F6F0E">
+ <dmn:requiredInput href="#_1CF5CEFA-AF97-46F9-9CD5-9A8AEBB20B4E" />
+ </dmn:informationRequirement>
+ <dmn:knowledgeRequirement id="_4D441C11-7042-49CF-A42C-17A4348A7F29">
+ <dmn:requiredKnowledge href="#_4C788DBD-C672-4F41-9AFE-9C7D2C145734" />
+ </dmn:knowledgeRequirement>
+ <dmn:knowledgeRequirement id="_3217D655-4484-4733-A9AE-4F9CF30D9924">
+ <dmn:requiredKnowledge href="#_DA5CCF62-90A8-4CFC-A137-98B528522588" />
+ </dmn:knowledgeRequirement>
+ <dmn:context id="_5F9FEA4E-B3FC-4BC2-913E-36B8071FA777" label="Back End
Ratio" typeRef="Back_End_Ratio">
+ <dmn:contextEntry id="_F3ED9059-400F-4BE8-B250-C2ABCD9FF022">
+ <dmn:invocation id="_4A7FC8E0-25EF-4DAF-845A-93BD89C2BC8C"
typeRef="<Undefined>">
+ <dmn:literalExpression id="_F0E80900-1964-4142-9A05-73E7A2E0F2CD">
+ <dmn:text>DTI</dmn:text>
+ </dmn:literalExpression>
+ <dmn:binding>
+ <dmn:literalExpression id="_3D0A1979-E59A-483F-BDA8-138F99BA5AB3"
typeRef="<Undefined>">
+ <dmn:text>Applicant Data.Monthly.Repayments + Applicant
Data.Monthly.Expenses</dmn:text>
+ </dmn:literalExpression>
+ <dmn:parameter name="d" typeRef="<Undefined>" />
+ </dmn:binding>
+ <dmn:binding>
+ <dmn:literalExpression id="_D985F886-71C0-4F65-8808-2CEF366BECC8"
typeRef="<Undefined>">
+ <dmn:text>Applicant Data.Monthly.Income</dmn:text>
+ </dmn:literalExpression>
+ <dmn:parameter name="i" typeRef="<Undefined>" />
+ </dmn:binding>
+ </dmn:invocation>
+ <dmn:variable name="Client DTI" typeRef="number" />
+ </dmn:contextEntry>
+ <dmn:contextEntry id="_D1F96102-4158-45BB-8C9A-B7A3BE2C0206">
+ <dmn:literalExpression id="_D1F96102-4158-45BB-8C9A-B7A3BE2C0206"
typeRef="<Undefined>">
+ <dmn:text>if Client DTI <= Lender Acceptable DTI()
+then "Sufficient"
+else "Insufficient"</dmn:text>
+ </dmn:literalExpression>
+ </dmn:contextEntry>
+ </dmn:context>
+ </dmn:decision>
+ <dmn:decision id="_2FE51DB1-3083-4BF7-AA71-0B0065310E72" name="Credit Score
Rating">
+ <dmn:extensionElements />
+ <dmn:variable id="_82228E41-22D1-4758-97C3-BBFE90EDB5FB" name="Credit
Score Rating" typeRef="Credit_Score_Rating" />
+ <dmn:informationRequirement id="_31A1B6B2-A2A6-4E03-B898-26573A5CF3BA">
+ <dmn:requiredInput href="#_4C89E59C-FDDA-438C-8D1F-0B1194EF6DAE" />
+ </dmn:informationRequirement>
+ <dmn:decisionTable id="_4ACEFFF0-AD2C-4DB8-9BAD-7BCCFB03F295"
label="Credit Score Rating" typeRef="Credit_Score_Rating" hitPolicy="UNIQUE">
+ <dmn:input id="_44C93627-629C-48B8-B71A-AE2266A42674">
+ <dmn:inputExpression id="_00932A00-5ECE-4AEF-AA68-92E679CEF4AB"
typeRef="number">
+ <dmn:text>Credit Score.FICO</dmn:text>
+ </dmn:inputExpression>
+ </dmn:input>
+ <dmn:output id="_9C201FAB-B49C-4D22-900B-B4E82D5469FB" name=""
typeRef="<Undefined>" />
+ <dmn:annotation name="Annotations" />
+ <dmn:rule id="_AED703E1-8E56-4D27-A511-3875AD1D122E">
+ <dmn:inputEntry id="_E2C9F30B-D529-48D8-A51C-A2ACCC8109B3">
+ <dmn:text>>= 750</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_A1FF2B2D-EF34-42AD-A45A-5FFDFA21FA6D">
+ <dmn:text>"Excellent"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ <dmn:rule id="_1FA12B9F-288C-42E8-B77F-BE2D3702B7B6">
+ <dmn:inputEntry id="_CA5AE067-0E1A-44CA-B85C-912F9ED4594C">
+ <dmn:text>[700..750)</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_833307A2-B924-422C-A4F5-BFFAB27D86D5">
+ <dmn:text>"Good"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ <dmn:rule id="_11976EBA-60BC-421B-A270-089A45E9B167">
+ <dmn:inputEntry id="_75D612D5-D201-4932-8524-E49183F51D2D">
+ <dmn:text>[650..700)</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_E18FE2B2-729C-41F0-B5CC-0E5E5EA431E3">
+ <dmn:text>"Fair"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ <dmn:rule id="_12F8077F-E601-4882-93E1-31508B1402E1">
+ <dmn:inputEntry id="_61374E7D-4EF3-4603-97A1-9D1FABAAA3C8">
+ <dmn:text>[600..650)</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_75135F4C-6BA7-4180-B726-A0D795B3D7FF">
+ <dmn:text>"Poor"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ <dmn:rule id="_D025254C-9376-4425-8084-451E09243CE2">
+ <dmn:inputEntry id="_6C13B507-FB60-40AD-8F5C-2407F1413A5C">
+ <dmn:text>< 600</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_1FB7308A-E37B-46EA-8070-C67E2388A869">
+ <dmn:text>"Bad"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ </dmn:decisionTable>
+ </dmn:decision>
+ <dmn:decision id="_21C50763-E49F-4D83-A824-16DA6AA87C64" name="Loan
Pre-Qualification">
+ <dmn:extensionElements />
+ <dmn:variable id="_047A25F5-DEF2-44BD-95B7-FB49A433F878" name="Loan
Pre-Qualification" typeRef="Loan_Qualification" />
+ <dmn:informationRequirement id="_A3E95B32-2EFD-40AD-B5E4-0A73A1542011">
+ <dmn:requiredDecision href="#_D6F4234F-15B3-4F5B-B814-5F6FF29D2907" />
+ </dmn:informationRequirement>
+ <dmn:informationRequirement id="_0B992F01-BA77-4F06-A830-D8948B467272">
+ <dmn:requiredDecision href="#_F0DC8923-5FC7-4200-8BD1-461D5F3714BE" />
+ </dmn:informationRequirement>
+ <dmn:informationRequirement id="_B6002F33-4888-48C5-B265-636030F8C2DC">
+ <dmn:requiredDecision href="#_2FE51DB1-3083-4BF7-AA71-0B0065310E72" />
+ </dmn:informationRequirement>
+ <dmn:decisionTable id="_EF7F404A-939E-4889-95D8-E4053DD1EED9" label="Loan
Pre-Qualification" typeRef="Loan_Qualification" hitPolicy="FIRST">
+ <dmn:input id="_58ABD81B-FD16-45C3-9E64-DB271AA917C0">
+ <dmn:inputExpression id="_5262441E-F812-4554-AF02-5267BDDF80F5"
typeRef="Credit_Score_Rating">
+ <dmn:text>Credit Score Rating</dmn:text>
+ </dmn:inputExpression>
+ </dmn:input>
+ <dmn:input id="_36258DA0-E527-429C-8FA1-7DEA63647689">
+ <dmn:inputExpression id="_4E9F0E06-85F1-4D10-B30D-FB55741B90BC"
typeRef="Back_End_Ratio">
+ <dmn:text>Back End Ratio</dmn:text>
+ </dmn:inputExpression>
+ </dmn:input>
+ <dmn:input id="_A102CD8A-C38D-48E4-BC59-CA660D6FBF0A">
+ <dmn:inputExpression id="_5D79EEF5-71B2-4360-B59A-215AA5593DCB"
typeRef="Front_End_Ratio">
+ <dmn:text>Front End Ratio</dmn:text>
+ </dmn:inputExpression>
+ </dmn:input>
+ <dmn:output id="_B895B095-C3D6-48B4-8A50-D2D3B8CC6A45"
name="Qualification" typeRef="string" />
+ <dmn:output id="_A8D2D3B1-07B3-4619-8DE0-F923F511058B" name="Reason"
typeRef="string" />
+ <dmn:annotation name="Annotations" />
+ <dmn:rule id="_B49E1642-F352-4D2E-92B6-E5DFA59AAFAC">
+ <dmn:inputEntry id="_6C83C446-1A9A-4FFC-B30C-23915FF9CC43">
+ <dmn:text>"Poor", "Bad"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_0BC93CB9-FD20-45C8-A498-39E4464B6224">
+ <dmn:text>-</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_1554A983-B2C1-40A7-9614-50720420F4B2">
+ <dmn:text>-</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_7B39B964-4E25-4717-92FE-A36F2B39FAB9">
+ <dmn:text>"Not Qualified"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:outputEntry id="_A852F5B6-C5DF-4ADD-8B93-9701F0724912">
+ <dmn:text>"Credit Score too low."</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ <dmn:rule id="_214865F4-C968-438C-A385-6B2823AF1BC3">
+ <dmn:inputEntry id="_18617A2A-6DD3-41A9-87D6-68C91554620E">
+ <dmn:text>-</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_5C70BB81-CAFD-4695-A241-68F441FF9A29">
+ <dmn:text>"Insufficient"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_78A3C3A0-EEBC-448B-B1C1-5CFF6C7F2AC5">
+ <dmn:text>"Sufficient"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_3C38D181-CCA1-4678-A3DD-0A5CE6D59FDC">
+ <dmn:text>"Not Qualified"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:outputEntry id="_F4284B9F-C77A-429B-A689-E212CFB19CB7">
+ <dmn:text>"Debt to income ratio is too high."</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ <dmn:rule id="_73E96773-064E-49F6-92B2-AA76E6BF6B8A">
+ <dmn:inputEntry id="_24A825F0-B8C7-42C9-BBA2-4442CAE6F91A">
+ <dmn:text>-</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_B7F59A5C-4AF1-4E90-BB0D-83C63A8390E6">
+ <dmn:text>"Sufficient"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_09A23FD4-9A98-4C34-9E9B-9E8EE652ABBC">
+ <dmn:text>"Insufficient"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_9BF1096A-1AF3-4D21-9273-460DE555F0B6">
+ <dmn:text>"Not Qualified"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:outputEntry id="_4D805BB2-B79E-42C2-A562-674ECBDFA01C">
+ <dmn:text>"Mortgage payment to income ratio is too
high."</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ <dmn:rule id="_7C242C58-6CAB-43CF-9235-347A72AE3F9E">
+ <dmn:inputEntry id="_9DF2A026-8B87-4C75-BB3D-54FF0E2A2E36">
+ <dmn:text>-</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_FF3E9782-BE9C-4B0C-A63B-E906F6116251">
+ <dmn:text>"Insufficient"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_544687CD-F3A2-46C7-8439-E5E2E7B6483D">
+ <dmn:text>"Insufficient"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_5A958D2E-B310-4AB9-BF5B-49623BE5DB55">
+ <dmn:text>"Not Qualified"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:outputEntry id="_F0BD7DC2-A1B6-4CF4-95D0-906DBB540EFC">
+ <dmn:text>"Debt to income ratio is too high AND mortgage
payment to income ratio is too high."</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ <dmn:rule id="_C8FA33B1-AF6E-4A59-B7B9-6FDF1F495C44">
+ <dmn:inputEntry id="_82FBCEE2-C16C-4FFF-A7F3-5512C211E29B">
+ <dmn:text>"Fair", "Good",
"Excellent"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_BF7CDAE1-66E3-4B06-8729-896453AD7867">
+ <dmn:text>"Sufficient"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:inputEntry id="_41CB6123-8122-4FA4-A5C1-548B92CA31AE">
+ <dmn:text>"Sufficient"</dmn:text>
+ </dmn:inputEntry>
+ <dmn:outputEntry id="_9E0497D0-F2F2-419E-A558-366452B379A1">
+ <dmn:text>"Qualified"</dmn:text>
+ </dmn:outputEntry>
+ <dmn:outputEntry id="_113CA566-6044-4858-B8D9-5ACBA4A91CF4">
+ <dmn:text>"The borrower has been successfully prequalified for
the requested loan."</dmn:text>
+ </dmn:outputEntry>
+ <dmn:annotationEntry>
+ <dmn:text></dmn:text>
+ </dmn:annotationEntry>
+ </dmn:rule>
+ </dmn:decisionTable>
+ </dmn:decision>
+ <dmn:inputData id="_6E3205AF-7E3D-4ABE-A367-96F3F6E8210E" name="Requested
Product">
+ <dmn:extensionElements />
+ <dmn:variable id="_EE05E1C7-67ED-4A71-BDEE-8005259351E8" name="Requested
Product" typeRef="Requested_Product" />
+ </dmn:inputData>
+ <dmn:businessKnowledgeModel id="_DA5CCF62-90A8-4CFC-A137-98B528522588"
name="DTI">
+ <dmn:extensionElements />
+ <dmn:variable id="_2F8921D1-6384-4ECB-848E-CE84A20B2573" name="DTI"
typeRef="number" />
+ <dmn:encapsulatedLogic id="_478C815E-60C9-4637-AA42-195DF16B63A5"
label="DTI" kind="FEEL" typeRef="number">
+ <dmn:formalParameter id="_B7A9C222-C560-4D37-A821-0CAC88611F10" name="d"
typeRef="number" />
+ <dmn:formalParameter id="_43C04721-38F6-4ABF-9F2F-BD2956C05441" name="i"
typeRef="number" />
+ <dmn:literalExpression id="_064FA88E-B06F-4944-85C3-DA86C3F660DD"
typeRef="<Undefined>">
+ <dmn:text>d / i</dmn:text>
+ </dmn:literalExpression>
+ </dmn:encapsulatedLogic>
+ </dmn:businessKnowledgeModel>
+ <dmn:businessKnowledgeModel id="_C98BE939-B9C7-43E0-83E8-EE7A16C5276D"
name="Lender Acceptable PITI">
+ <dmn:extensionElements />
+ <dmn:variable id="_9D78214B-EC07-4360-8D1B-3D927AC90A20" name="Lender
Acceptable PITI" typeRef="number" />
+ <dmn:encapsulatedLogic id="_E312D80E-0ECE-4D66-87EB-30DE20890BBC"
kind="FEEL">
+ <dmn:literalExpression id="_EEDF2C15-7FD7-409F-B23B-F9A198E2135D">
+ <dmn:text>0.28</dmn:text>
+ </dmn:literalExpression>
+ </dmn:encapsulatedLogic>
+ </dmn:businessKnowledgeModel>
+ <dmndi:DMNDI>
+ <dmndi:DMNDiagram id="_1608585F-01C8-4A66-B3E5-F4422D4DD2CA" name="Default
DRD" useAlternativeInputDataShape="false">
+ <di:extension>
+ <kie:ComponentsWidthsExtension>
+ <kie:ComponentWidths
dmnElementRef="_21E8FA38-C947-4733-9E52-CF81A97ADF91">
+ <kie:width>209</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_9F0257EE-CF82-49FD-AEDD-3155890864FF">
+ <kie:width>50</kie:width>
+ <kie:width>209</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_08A9C33D-719F-4B05-AC42-D15464798BC4">
+ <kie:width>50</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_EB658586-C3C8-488E-8118-E69E31583106">
+ <kie:width>120</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_6E79E4D9-BBFB-4E90-8AA3-A6C153C3C946" />
+ <kie:ComponentWidths
dmnElementRef="_51ACEC3C-4207-4F5F-8FDD-9EDAA3270E60">
+ <kie:width>1036</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_5D050B8D-DF55-45FD-988B-9C56BED53D5B">
+ <kie:width>1036</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_14C44A69-56DB-4B68-B757-4225C80E4D88">
+ <kie:width>1036</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_0DB5DE05-A2AD-4013-B191-DC1D1637A132">
+ <kie:width>1036</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_3F95EFD0-94D7-4D1A-9EA9-C8E12982D7E8">
+ <kie:width>1158</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_A32ED4A5-7B89-40F7-BE25-CDB636FE071C">
+ <kie:width>454</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_D33D9AEA-49DF-489F-98EC-4B42FF8C2027">
+ <kie:width>50</kie:width>
+ <kie:width>300</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_5F9FEA4E-B3FC-4BC2-913E-36B8071FA777">
+ <kie:width>50</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_4A7FC8E0-25EF-4DAF-845A-93BD89C2BC8C">
+ <kie:width>120</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_F0E80900-1964-4142-9A05-73E7A2E0F2CD" />
+ <kie:ComponentWidths
dmnElementRef="_3D0A1979-E59A-483F-BDA8-138F99BA5AB3">
+ <kie:width>550</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_D985F886-71C0-4F65-8808-2CEF366BECC8">
+ <kie:width>550</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_D1F96102-4158-45BB-8C9A-B7A3BE2C0206">
+ <kie:width>672</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_4ACEFFF0-AD2C-4DB8-9BAD-7BCCFB03F295">
+ <kie:width>60</kie:width>
+ <kie:width>133</kie:width>
+ <kie:width>147</kie:width>
+ <kie:width>335</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_EF7F404A-939E-4889-95D8-E4053DD1EED9">
+ <kie:width>60</kie:width>
+ <kie:width>233</kie:width>
+ <kie:width>133</kie:width>
+ <kie:width>129</kie:width>
+ <kie:width>135</kie:width>
+ <kie:width>681</kie:width>
+ <kie:width>138</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_064FA88E-B06F-4944-85C3-DA86C3F660DD">
+ <kie:width>150</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_478C815E-60C9-4637-AA42-195DF16B63A5">
+ <kie:width>50</kie:width>
+ <kie:width>150</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_EEDF2C15-7FD7-409F-B23B-F9A198E2135D">
+ <kie:width>228</kie:width>
+ </kie:ComponentWidths>
+ <kie:ComponentWidths
dmnElementRef="_E312D80E-0ECE-4D66-87EB-30DE20890BBC">
+ <kie:width>50</kie:width>
+ <kie:width>228</kie:width>
+ </kie:ComponentWidths>
+ </kie:ComponentsWidthsExtension>
+ </di:extension>
+ <dmndi:DMNShape id="dmnshape-drg-_4C89E59C-FDDA-438C-8D1F-0B1194EF6DAE"
dmnElementRef="_4C89E59C-FDDA-438C-8D1F-0B1194EF6DAE" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="980" y="360" width="134" height="61" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_4C788DBD-C672-4F41-9AFE-9C7D2C145734"
dmnElementRef="_4C788DBD-C672-4F41-9AFE-9C7D2C145734" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="99.09345794392524" y="223.67105263157896" width="136"
height="63" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_F0DC8923-5FC7-4200-8BD1-461D5F3714BE"
dmnElementRef="_F0DC8923-5FC7-4200-8BD1-461D5F3714BE" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="531" y="225" width="136" height="62" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_FAF9080E-F4EF-49F7-AEFD-0D2990D8FFDA"
dmnElementRef="_FAF9080E-F4EF-49F7-AEFD-0D2990D8FFDA" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="760" y="360" width="135" height="63" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_1CF5CEFA-AF97-46F9-9CD5-9A8AEBB20B4E"
dmnElementRef="_1CF5CEFA-AF97-46F9-9CD5-9A8AEBB20B4E" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="316.0607476635514" y="361" width="134" height="61" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_D6F4234F-15B3-4F5B-B814-5F6FF29D2907"
dmnElementRef="_D6F4234F-15B3-4F5B-B814-5F6FF29D2907" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="315" y="225" width="136" height="62" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_2FE51DB1-3083-4BF7-AA71-0B0065310E72"
dmnElementRef="_2FE51DB1-3083-4BF7-AA71-0B0065310E72" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="980" y="220" width="136" height="62" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_21C50763-E49F-4D83-A824-16DA6AA87C64"
dmnElementRef="_21C50763-E49F-4D83-A824-16DA6AA87C64" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="532" y="89" width="136" height="62" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_6E3205AF-7E3D-4ABE-A367-96F3F6E8210E"
dmnElementRef="_6E3205AF-7E3D-4ABE-A367-96F3F6E8210E" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="531.1214953271028" y="360" width="134" height="61" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_DA5CCF62-90A8-4CFC-A137-98B528522588"
dmnElementRef="_DA5CCF62-90A8-4CFC-A137-98B528522588" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="99.09345794392524" y="359" width="136" height="63" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNShape id="dmnshape-drg-_C98BE939-B9C7-43E0-83E8-EE7A16C5276D"
dmnElementRef="_C98BE939-B9C7-43E0-83E8-EE7A16C5276D" isCollapsed="false">
+ <dmndi:DMNStyle>
+ <dmndi:FillColor red="255" green="255" blue="255" />
+ <dmndi:StrokeColor red="0" green="0" blue="0" />
+ <dmndi:FontColor red="0" green="0" blue="0" />
+ </dmndi:DMNStyle>
+ <dc:Bounds x="760" y="220" width="134" height="65" />
+ <dmndi:DMNLabel />
+ </dmndi:DMNShape>
+ <dmndi:DMNEdge id="dmnedge-drg-_89EEAF9F-5A5D-4F59-91B7-EA418A7229AF"
dmnElementRef="_89EEAF9F-5A5D-4F59-91B7-EA418A7229AF">
+ <di:waypoint x="383.0607476635514" y="361" />
+ <di:waypoint x="599" y="287" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_87730C5A-5648-415B-9189-EF4D8805F8C9"
dmnElementRef="_87730C5A-5648-415B-9189-EF4D8805F8C9">
+ <di:waypoint x="598.1214953271028" y="390.5" />
+ <di:waypoint x="599" y="287" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_63DE7C3B-A767-4B8A-A098-91ECB4B8D330"
dmnElementRef="_63DE7C3B-A767-4B8A-A098-91ECB4B8D330">
+ <di:waypoint x="827.5" y="360" />
+ <di:waypoint x="599" y="287" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_2C95829D-FCF9-44F5-8F5A-0A6CDB60600D"
dmnElementRef="_2C95829D-FCF9-44F5-8F5A-0A6CDB60600D">
+ <di:waypoint x="827" y="252.5" />
+ <di:waypoint x="667" y="256" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_77BA409B-E00D-4FBC-B522-8F656D4F6F0E"
dmnElementRef="_77BA409B-E00D-4FBC-B522-8F656D4F6F0E">
+ <di:waypoint x="383.0607476635514" y="391.5" />
+ <di:waypoint x="383" y="287" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_4D441C11-7042-49CF-A42C-17A4348A7F29"
dmnElementRef="_4D441C11-7042-49CF-A42C-17A4348A7F29">
+ <di:waypoint x="167.09345794392524" y="255.17105263157896" />
+ <di:waypoint x="315" y="256" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_3217D655-4484-4733-A9AE-4F9CF30D9924"
dmnElementRef="_3217D655-4484-4733-A9AE-4F9CF30D9924">
+ <di:waypoint x="167.09345794392524" y="359" />
+ <di:waypoint x="383" y="287" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_31A1B6B2-A2A6-4E03-B898-26573A5CF3BA"
dmnElementRef="_31A1B6B2-A2A6-4E03-B898-26573A5CF3BA">
+ <di:waypoint x="1047" y="390.5" />
+ <di:waypoint x="1048" y="282" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_0B992F01-BA77-4F06-A830-D8948B467272"
dmnElementRef="_0B992F01-BA77-4F06-A830-D8948B467272">
+ <di:waypoint x="599" y="256" />
+ <di:waypoint x="600" y="151" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_B6002F33-4888-48C5-B265-636030F8C2DC"
dmnElementRef="_B6002F33-4888-48C5-B265-636030F8C2DC"
sourceElement="dmnshape-drg-_2FE51DB1-3083-4BF7-AA71-0B0065310E72"
targetElement="dmnshape-drg-_21C50763-E49F-4D83-A824-16DA6AA87C64">
+ <di:waypoint x="1048" y="220" />
+ <di:waypoint x="600" y="151" />
+ </dmndi:DMNEdge>
+ <dmndi:DMNEdge id="dmnedge-drg-_A3E95B32-2EFD-40AD-B5E4-0A73A1542011"
dmnElementRef="_A3E95B32-2EFD-40AD-B5E4-0A73A1542011"
sourceElement="dmnshape-drg-_D6F4234F-15B3-4F5B-B814-5F6FF29D2907"
targetElement="dmnshape-drg-_21C50763-E49F-4D83-A824-16DA6AA87C64">
+ <di:waypoint x="383" y="225" />
+ <di:waypoint x="600" y="151" />
+ </dmndi:DMNEdge>
+ </dmndi:DMNDiagram>
+ </dmndi:DMNDI>
+ <dmn:import id="_E4562608-B14C-4845-A4C3-6C1A1FBC0219" name="sumBkm"
importType="https://www.omg.org/spec/DMN/20230324/MODEL/"
namespace="https://kie.apache.org/dmn/_923784BD-CD31-488A-9C31-C1A83C5483C0" />
+ <dmn:import id="_C726A824-9349-4CF8-91FA-F969250C8421" name="sumDiffDs"
importType="https://www.omg.org/spec/DMN/20230324/MODEL/"
namespace="https://kie.apache.org/dmn/_D19B0015-2CBD-4BA8-84A9-5F554D84A9E1" />
+ <dmn:import id="_87CDD600-7564-CF87-547E-A8B876CD0812" name="testTreePmml"
importType="https://www.dmg.org/PMML-4_2"
namespace="https://kie.org/pmml#dev-webapp/available-models-to-include/testTree.pmml"
/>
+</dmn:definitions>
+`;
+
+function EvaluationHighlights(args: DmnEditorProps) {
+ const [state, setState] = useState<{
+ marshaller: DmnMarshaller;
+ stack: Normalized<DmnLatestModel>[];
+ pointer: number;
+ }>(() => {
+ const initialDmnMarshaller = getMarshaller(initialModel, { upgradeTo:
"latest" });
+ return {
+ marshaller: initialDmnMarshaller,
+ stack: [normalize(initialDmnMarshaller.parser.parse())],
+ pointer: 0,
+ };
+ });
+
+ const currentModel = state.stack[state.pointer];
+
+ const onModelChange = useCallback<OnDmnModelChange>((model) => {
+ setState((prev) => {
+ const newStack = prev.stack.slice(0, prev.pointer + 1);
+ return {
+ ...prev,
+ stack: [...newStack, model],
+ pointer: newStack.length,
+ };
+ });
+ }, []);
+
+ return (
+ <>
+ {DmnEditorWrapper({
+ model: currentModel,
+ originalVersion: args.originalVersion,
+ onModelChange,
+ externalContextName: args.externalContextName,
+ externalContextDescription: args.externalContextDescription,
+ validationMessages: args.validationMessages,
+ evaluationResults: args.evaluationResults,
+ issueTrackerHref: args.issueTrackerHref,
+ })}
+ </>
+ );
+}
+
+const meta: Meta<DmnEditorProps> = {
+ title: "Misc/EvaluationHighlights",
+ component: DmnEditor,
+ includeStories: /^[A-Z]/,
+};
+
+export default meta;
+type Story = StoryObj<typeof EvaluationHighlights>;
+
+export const EvaluationHighlightsStory: Story = {
+ render: (args) => EvaluationHighlights(args),
+ args: {
+ model: getMarshaller(initialModel, { upgradeTo: "latest" }).parser.parse(),
+ originalVersion: "1.5",
+ evaluationResults: {
+ "_F0DC8923-5FC7-4200-8BD1-461D5F3714BE": "success",
+ "_D6F4234F-15B3-4F5B-B814-5F6FF29D2907": "failure",
+ "_2FE51DB1-3083-4BF7-AA71-0B0065310E72": "skipped",
+ },
+ externalContextDescription: "External context description",
+ externalContextName: "Storybook - DMN Editor",
+ externalModelsByNamespace: {},
+ issueTrackerHref: "",
+ validationMessages: {},
+ },
+};
diff --git a/packages/dmn-editor/tests-e2e/__fixtures__/editor.ts
b/packages/dmn-editor/tests-e2e/__fixtures__/editor.ts
index 8480637fef2..07cfcb17d4c 100644
--- a/packages/dmn-editor/tests-e2e/__fixtures__/editor.ts
+++ b/packages/dmn-editor/tests-e2e/__fixtures__/editor.ts
@@ -43,6 +43,10 @@ export class Editor {
);
}
+ public async openEvaluationHighlights() {
+ await
this.page.goto(`${this.baseURL}/iframe.html?args=&id=misc-evaluationhighlights--evaluation-highlights-story`);
+ }
+
public async setIsReadOnly(newState: boolean) {
const currentState = (await
this.page.getByTestId(STORYBOOK__DMN_EDITOR_TOGGLE_READ_ONLY).textContent())
=== "true";
if (currentState !== newState) {
diff --git a/packages/dmn-editor/tests-e2e/__fixtures__/overlays.ts
b/packages/dmn-editor/tests-e2e/__fixtures__/overlays.ts
index d8e3339bec7..fda2c3a2ab1 100644
--- a/packages/dmn-editor/tests-e2e/__fixtures__/overlays.ts
+++ b/packages/dmn-editor/tests-e2e/__fixtures__/overlays.ts
@@ -22,6 +22,13 @@ import { Page } from "@playwright/test";
export class Overlays {
constructor(public page: Page) {}
+ public async enableEvaluationHighlights() {
+ await this.page.getByTitle("Overlays").click();
+ await
this.page.getByTestId("kie-tools--dmn-editor--evaluation-highlights-control").scrollIntoViewIfNeeded();
+ await
this.page.getByTestId("kie-tools--dmn-editor--evaluation-highlights-control").check({
force: true });
+ await this.page.getByTitle("Overlays").click();
+ }
+
public async turnOffSnapping() {
await this.page.getByTitle("Overlays").click();
await this.page.getByLabel("Snapping").uncheck({ force: true });
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/evaluationHighlights/evaluation-highlights-failure.png
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/evaluationHighlights/evaluation-highlights-failure.png
new file mode 100644
index 00000000000..522da2a9543
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/evaluationHighlights/evaluation-highlights-failure.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/evaluationHighlights/evaluation-highlights-skipped.png
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/evaluationHighlights/evaluation-highlights-skipped.png
new file mode 100644
index 00000000000..f781f707e56
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/evaluationHighlights/evaluation-highlights-skipped.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/evaluationHighlights/evaluation-highlights-success.png
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/evaluationHighlights/evaluation-highlights-success.png
new file mode 100644
index 00000000000..9e1c273c2f2
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/evaluationHighlights/evaluation-highlights-success.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/chromium/evaluationHighlights/evaluation-highlights-failure.png
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/evaluationHighlights/evaluation-highlights-failure.png
new file mode 100644
index 00000000000..5e66e6d2b5c
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/evaluationHighlights/evaluation-highlights-failure.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/chromium/evaluationHighlights/evaluation-highlights-skipped.png
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/evaluationHighlights/evaluation-highlights-skipped.png
new file mode 100644
index 00000000000..ed84bb73c34
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/evaluationHighlights/evaluation-highlights-skipped.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/chromium/evaluationHighlights/evaluation-highlights-success.png
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/evaluationHighlights/evaluation-highlights-success.png
new file mode 100644
index 00000000000..9a073e010fb
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/evaluationHighlights/evaluation-highlights-success.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/webkit/evaluationHighlights/evaluation-highlights-failure.png
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/evaluationHighlights/evaluation-highlights-failure.png
new file mode 100644
index 00000000000..826902d4190
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/evaluationHighlights/evaluation-highlights-failure.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/webkit/evaluationHighlights/evaluation-highlights-skipped.png
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/evaluationHighlights/evaluation-highlights-skipped.png
new file mode 100644
index 00000000000..81bbf421259
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/evaluationHighlights/evaluation-highlights-skipped.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/webkit/evaluationHighlights/evaluation-highlights-success.png
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/evaluationHighlights/evaluation-highlights-success.png
new file mode 100644
index 00000000000..befdf171e85
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/evaluationHighlights/evaluation-highlights-success.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/evaluationHighlights/evaluationHighlights.spec.ts
b/packages/dmn-editor/tests-e2e/evaluationHighlights/evaluationHighlights.spec.ts
new file mode 100644
index 00000000000..dbc7345531c
--- /dev/null
+++
b/packages/dmn-editor/tests-e2e/evaluationHighlights/evaluationHighlights.spec.ts
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { test, expect } from "../__fixtures__/base";
+
+test.beforeEach(async ({ overlays, editor }) => {
+ await editor.openEvaluationHighlights();
+ await overlays.enableEvaluationHighlights();
+});
+
+test.describe("Evaluation Highlights on Nodes", () => {
+ test("should highlight node evaluation result - success", async ({ nodes })
=> {
+ await expect(nodes.get({ name: "Front End Ratio"
})).toHaveScreenshot("evaluation-highlights-success.png");
+ });
+
+ test("should highlight node evaluation result - failure", async ({ nodes })
=> {
+ await expect(nodes.get({ name: "Back End Ratio"
})).toHaveScreenshot("evaluation-highlights-failure.png");
+ });
+
+ test("should highlight node evaluation result - skipped", async ({ nodes })
=> {
+ await expect(nodes.get({ name: "Credit Score Rating"
})).toHaveScreenshot("evaluation-highlights-skipped.png");
+ });
+});
diff --git a/packages/form-dmn/src/FormDmnOutputs.tsx
b/packages/form-dmn/src/FormDmnOutputs.tsx
index a6f3e037568..5523a8527ba 100644
--- a/packages/form-dmn/src/FormDmnOutputs.tsx
+++ b/packages/form-dmn/src/FormDmnOutputs.tsx
@@ -19,6 +19,7 @@
import * as React from "react";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
+import { Icon } from "@patternfly/react-core/dist/js/components/Icon";
import { ArrowUpIcon } from
"@patternfly/react-icons/dist/js/icons/arrow-up-icon";
import { CheckCircleIcon } from
"@patternfly/react-icons/dist/js/icons/check-circle-icon";
import { InfoCircleIcon } from
"@patternfly/react-icons/dist/js/icons/info-circle-icon";
@@ -123,7 +124,7 @@ export function FormDmnOutputs({ openExecutionTab,
openBoxedExpressionEditor, ..
return (
<>
<div className={"kie-tools__dmn-form-result__evaluation"}>
- <InfoCircleIcon />
+ <Icon>↷</Icon>
{props.notificationsPanel ? (
<a onClick={onOpenExecutionTab}
className={"kogito--editor__dmn-form-result__evaluation-link"}>
{i18n.result.evaluation.skipped}
diff --git a/packages/playwright-base/README.md
b/packages/playwright-base/README.md
index f1455ec60a0..41dc88fd06f 100644
--- a/packages/playwright-base/README.md
+++ b/packages/playwright-base/README.md
@@ -57,7 +57,7 @@ To run tests in a container, you first need to build the
image using the Contain
# In this package folder
KIE_TOOLS_BUILD__buildContainerImages=true pnpm build:dev
# or in any folder of the kie-tools monorepo
-KIE_TOOLS_BUILD__buildContainerImages=true pnpm -F @kie-tools/plawright-base
build:dev
+KIE_TOOLS_BUILD__buildContainerImages=true pnpm -F @kie-tools/playwright-base
build:dev
```
By default, tests run on using containers. To execute them in the native OS
environment, set the `KIE_TOOLS_BUILD__containerizedEndToEndTests` environment
variable to `false`.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]