Skip to content

Commit

Permalink
kie-issues#2549: Decision Service cannot be recognized in columns of …
Browse files Browse the repository at this point in the history
…decision table (apache#2684)
  • Loading branch information
danielzhe authored and ricardozanini committed Nov 5, 2024
1 parent b8b823b commit c0f3e67
Show file tree
Hide file tree
Showing 6 changed files with 479 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,35 @@ export class VariablesRepository {
this.addVariable(id, "", FeelSyntacticSymbolNature.LocalVariable, parent);
}

private addDecisionTableEntryNode(parent: VariableContext, entryId: string) {
const ruleInputElementNode = this.addVariable(entryId, "", FeelSyntacticSymbolNature.LocalVariable, parent);
parent.children.set(ruleInputElementNode.uuid, ruleInputElementNode);
this.addVariable(ruleInputElementNode.uuid, "", FeelSyntacticSymbolNature.LocalVariable, ruleInputElementNode);
}

private addDecisionTable(parent: VariableContext, decisionTable: DmnDecisionTable) {
const variableNode = this.addVariable(
decisionTable["@_id"] ?? "",
"",
FeelSyntacticSymbolNature.LocalVariable,
parent
);
parent.children.set(variableNode.uuid, variableNode);

if (decisionTable.rule) {
for (const ruleElement of decisionTable.rule) {
ruleElement.inputEntry?.forEach((ruleInputElement) =>
this.addDecisionTableEntryNode(parent, ruleInputElement["@_id"] ?? "")
);
ruleElement.outputEntry?.forEach((ruleOutputElement) =>
this.addDecisionTableEntryNode(parent, ruleOutputElement["@_id"] ?? "")
);
}
}

this.addVariable(variableNode.uuid, "", FeelSyntacticSymbolNature.LocalVariable, parent);
}

private addInvocation(parent: VariableContext, element: DmnInvocation) {
if (element.binding) {
for (const bindingElement of element.binding) {
Expand Down Expand Up @@ -594,7 +623,8 @@ export class VariablesRepository {
break;

case "decisionTable":
// Do nothing because DecisionTable does not define variables
// It doesn't define variables but we need it to create its own context to use variables inside of Decision Table.
this.addDecisionTable(parent, expression);
break;

case "context":
Expand Down
1 change: 1 addition & 0 deletions packages/feel-input-component/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"@babel/preset-env": "^7.16.0",
"@babel/preset-react": "^7.16.0",
"@kie-tools-core/webpack-base": "workspace:*",
"@kie-tools/dmn-marshaller": "workspace:*",
"@kie-tools/eslint": "workspace:*",
"@kie-tools/jest-base": "workspace:*",
"@kie-tools/root-env": "workspace:*",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" ?>
<definitions
xmlns="https://www.omg.org/spec/DMN/20230324/MODEL/"
xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/"
xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"
xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/"
xmlns:kie="https://kie.org/dmn/extensions/1.0"
expressionLanguage="https://www.omg.org/spec/DMN/20230324/FEEL/"
namespace="https://kie.org/dmn/_B2A15CAD-A32F-461F-9BEA-4E4BC46B76D6"
id="_8D96437B-D31F-437F-8B32-CD54C071A151"
name="DMN_B739B18D-74D9-4C75-A8E9-6845E731D3EB"
>
<decisionService name="MyDS" id="_B141585F-BF2D-4A06-AD30-E2B8EC2A6D55">
<variable name="MyDS" id="_2C33EB78-3C0F-45E2-9A68-DC9BF1E09DCB" typeRef="Any" />
<outputDecision href="#_E2884578-AEA4-4CE5-8B23-00060D4C2EC9" />
<encapsulatedDecision href="#_0A37D837-F93A-4A5A-A335-E51F55D0070D" />
<inputData href="#_8ABF251F-B9D6-478E-BF18-AA8E7724CEE9" />
</decisionService>
<decision name="RemoteDecision" id="_0A37D837-F93A-4A5A-A335-E51F55D0070D">
<variable name="RemoteDecision" id="_3FEA818D-47C3-474D-A2B2-46AB7BB46B90" typeRef="Any" />
<informationRequirement id="_B64D2B58-DF44-4D4B-ADB4-4888AF677C08">
<requiredInput href="#_8ABF251F-B9D6-478E-BF18-AA8E7724CEE9" />
</informationRequirement>
<literalExpression id="_CADCEE70-2AFB-406A-8943-722C1B1DB1E6" typeRef="Any" label="RemoteDecision">
<text>Input</text>
</literalExpression>
</decision>
<inputData name="RemoteInput" id="_8ABF251F-B9D6-478E-BF18-AA8E7724CEE9">
<variable name="RemoteInput" id="_E30CE2A8-D907-489A-86FF-5E9040C85DA0" typeRef="Any" />
</inputData>
<decision name="AnotherRemoteDecision" id="_E2884578-AEA4-4CE5-8B23-00060D4C2EC9">
<variable name="AnotherRemoteDecision" id="_BCF70EC9-BB49-47F1-B978-F95120D7D6A8" />
<informationRequirement id="_A20B4362-1424-46CA-9737-5B5F812DD836">
<requiredDecision href="#_0A37D837-F93A-4A5A-A335-E51F55D0070D" />
</informationRequirement>
</decision>
<dmndi:DMNDI>
<dmndi:DMNDiagram
id="_319C4D28-9892-4521-B714-A0B607DED18F"
name="Default DRD"
useAlternativeInputDataShape="false"
>
<di:extension>
<kie:ComponentsWidthsExtension>
<kie:ComponentWidths dmnElementRef="_CADCEE70-2AFB-406A-8943-722C1B1DB1E6">
<kie:width>190</kie:width>
</kie:ComponentWidths>
</kie:ComponentsWidthsExtension>
</di:extension>
<dmndi:DMNShape
id="_B8C611D4-7FC8-46B9-BC24-B0804CC45382"
dmnElementRef="_B141585F-BF2D-4A06-AD30-E2B8EC2A6D55"
isCollapsed="false"
isListedInputData="false"
>
<dc:Bounds x="220" y="-40" width="320" height="320" />
<dmndi:DMNDecisionServiceDividerLine id="_6C99D7D5-A864-4D84-95C2-8CCF6C8D521C">
<di:waypoint x="220" y="120" />
<di:waypoint x="540" y="120" />
</dmndi:DMNDecisionServiceDividerLine>
</dmndi:DMNShape>
<dmndi:DMNShape
id="_89705EA9-4E6F-4699-A7FF-C01B433FC20E"
dmnElementRef="_0A37D837-F93A-4A5A-A335-E51F55D0070D"
isCollapsed="false"
isListedInputData="false"
>
<dc:Bounds x="300" y="160" width="160" height="80" />
</dmndi:DMNShape>
<dmndi:DMNShape
id="_40457313-1A43-4486-A369-BEE1EE1B9845"
dmnElementRef="_8ABF251F-B9D6-478E-BF18-AA8E7724CEE9"
isCollapsed="false"
isListedInputData="false"
>
<dc:Bounds x="0" y="160" width="160" height="80" />
</dmndi:DMNShape>
<dmndi:DMNEdge
id="_C802FEE9-EFE0-4F17-8A57-4C5BBB0A7CF4"
dmnElementRef="_B64D2B58-DF44-4D4B-ADB4-4888AF677C08"
sourceElement="_40457313-1A43-4486-A369-BEE1EE1B9845"
targetElement="_89705EA9-4E6F-4699-A7FF-C01B433FC20E"
>
<di:waypoint x="80" y="200" />
<di:waypoint x="380" y="200" />
</dmndi:DMNEdge>
<dmndi:DMNShape
id="_19C09A3C-ACCD-47AD-A3C7-C7EB308B053F"
dmnElementRef="_E2884578-AEA4-4CE5-8B23-00060D4C2EC9"
isCollapsed="false"
isListedInputData="false"
>
<dc:Bounds x="300" y="20" width="160" height="80" />
</dmndi:DMNShape>
<dmndi:DMNEdge
id="_A237BF8B-4CF2-4DE0-8302-9D9D3E730FFC"
dmnElementRef="_A20B4362-1424-46CA-9737-5B5F812DD836"
sourceElement="_89705EA9-4E6F-4699-A7FF-C01B433FC20E"
targetElement="_19C09A3C-ACCD-47AD-A3C7-C7EB308B053F"
>
<di:waypoint x="380" y="200" />
<di:waypoint x="380" y="60" />
</dmndi:DMNEdge>
</dmndi:DMNDiagram>
</dmndi:DMNDI>
</definitions>
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
<?xml version="1.0" encoding="UTF-8" ?>
<definitions
xmlns="https://www.omg.org/spec/DMN/20230324/MODEL/"
xmlns:included0="https://kie.org/dmn/_B2A15CAD-A32F-461F-9BEA-4E4BC46B76D6"
xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/"
xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"
xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/"
xmlns:kie="https://kie.org/dmn/extensions/1.0"
expressionLanguage="https://www.omg.org/spec/DMN/20230324/FEEL/"
namespace="https://kie.org/dmn/_628EE39C-379C-41F7-951E-F5E8269A7BC0"
id="_9BBEBC5E-BD18-4B9F-9D36-2F3E3F41E279"
name="DMN_8FFA6199-64DD-4D60-8A29-C53AFC313FA1"
>
<import
id="_C1B98160-05F8-4384-9F4C-4BF0FEE9C4A3"
name="MyIncludedModel"
importType="http://www.omg.org/spec/DMN/20180521/MODEL/"
namespace="https://kie.org/dmn/_B2A15CAD-A32F-461F-9BEA-4E4BC46B76D6"
locationURI="./included.dmn"
/>
<decision name="New Decision DT" id="_391621EF-40D7-4D35-8A53-0FF271042C70">
<variable name="New Decision DT" id="_8BF1CB89-D537-482F-BCBB-7BC4D7814E22" typeRef="Any" />
<informationRequirement id="_667BE578-F2E8-4523-B4C5-99AC38D40A80">
<requiredInput href="#_D847615D-55B2-45D9-A56F-6726F72D0744" />
</informationRequirement>
<informationRequirement id="_B347AB8A-C5C0-41D5-AAD6-1CD5068A871E">
<requiredInput
href="https://kie.org/dmn/_B2A15CAD-A32F-461F-9BEA-4E4BC46B76D6#_8ABF251F-B9D6-478E-BF18-AA8E7724CEE9"
/>
</informationRequirement>
<informationRequirement id="_AF5A04E6-0767-4A49-AF11-A26A5F665876">
<requiredDecision href="#_7C9E56B7-24A0-4B11-9A5D-2AEA8130BC72" />
</informationRequirement>
<knowledgeRequirement id="_9AEA1B2D-DE33-490D-9970-07E45332DEF3">
<requiredKnowledge
href="https://kie.org/dmn/_B2A15CAD-A32F-461F-9BEA-4E4BC46B76D6#_B141585F-BF2D-4A06-AD30-E2B8EC2A6D55"
/>
</knowledgeRequirement>
<decisionTable id="_EF887AF0-B810-4526-8450-01D9A2DF5744" typeRef="Any" hitPolicy="UNIQUE" label="New Decision DT">
<input id="_A9587AE6-ED62-4D49-9011-A98693141BEC">
<inputExpression id="_F7509AD6-2823-4164-A582-C330DE4050D2" typeRef="Any">
<text>Input</text>
</inputExpression>
</input>
<output id="_D4F60227-308A-407B-A888-C72D293D318F" name="Output-1" />
<annotation name="Annotations" />
<rule id="_746B9056-8DEE-4901-BF13-D5E675C97E74">
<inputEntry id="_4A8D53FF-B85F-421C-8ACA-9E3E8BCA08A1">
<text>-</text>
</inputEntry>
<outputEntry id="_206131ED-0B81-4013-980A-4BB2539A53D0">
<text>MyIncludedModel.MyDS(LocalInput) + MyIncludedModel.RemoteInput</text>
</outputEntry>
<annotationEntry>
<text />
</annotationEntry>
</rule>
<rule id="_7CB3952B-D4F1-4C22-BF2E-346E8AA57B77">
<inputEntry id="_FF468430-942F-46B0-B5D0-242CD58E5508">
<text>-</text>
</inputEntry>
<outputEntry id="_AEC3EEB0-8436-4767-A214-20FF5E5CB7BE">
<text>LocalInput + LocalDecision</text>
</outputEntry>
<annotationEntry>
<text />
</annotationEntry>
</rule>
<rule id="_340F549A-96DC-4E9C-A627-B2814FDE8189">
<inputEntry id="_B78FD898-21A1-4BD3-8D17-4DA284D1D00B">
<text>-</text>
</inputEntry>
<outputEntry id="_18832484-9481-49BC-BD40-927CB9872C6B">
<text>MyIncludedModel.MyDS(LocalInput) + MyIncludedModel.RemoteInput + LocalInput + LocalDecision</text>
</outputEntry>
<annotationEntry>
<text />
</annotationEntry>
</rule>
</decisionTable>
</decision>
<inputData name="LocalInput" id="_D847615D-55B2-45D9-A56F-6726F72D0744">
<variable name="LocalInput" id="_4F60511D-D7E1-4B14-9DBF-73EC28CAA547" />
</inputData>
<decision name="LocalDecision" id="_7C9E56B7-24A0-4B11-9A5D-2AEA8130BC72">
<variable name="LocalDecision" id="_4B1434EB-C78C-43EE-84B8-4355B487DB85" />
</decision>
<dmndi:DMNDI>
<dmndi:DMNDiagram
id="_57CDCAB2-EC93-427E-83AD-663AFA4B55B7"
name="Default DRD"
useAlternativeInputDataShape="false"
>
<di:extension>
<kie:ComponentsWidthsExtension>
<kie:ComponentWidths dmnElementRef="_EF887AF0-B810-4526-8450-01D9A2DF5744">
<kie:width>60</kie:width>
<kie:width>118</kie:width>
<kie:width>773</kie:width>
<kie:width>240</kie:width>
</kie:ComponentWidths>
</kie:ComponentsWidthsExtension>
</di:extension>
<dmndi:DMNShape
id="_D9924C3E-521F-4318-9140-B42E66F8C6B4"
dmnElementRef="_391621EF-40D7-4D35-8A53-0FF271042C70"
isCollapsed="false"
isListedInputData="false"
>
<dc:Bounds x="880" y="140" width="160" height="80" />
</dmndi:DMNShape>
<dmndi:DMNShape
id="_6CCFE0B6-5C49-485A-AD7E-D0B73D2BB633"
dmnElementRef="included0:_B141585F-BF2D-4A06-AD30-E2B8EC2A6D55"
>
<dc:Bounds x="420" y="20" width="320" height="320" />
<dmndi:DMNDecisionServiceDividerLine id="_412A759B-7DA9-4B0E-88C5-1FA9282572EA">
<di:waypoint x="420" y="180" />
<di:waypoint x="740" y="180" />
</dmndi:DMNDecisionServiceDividerLine>
</dmndi:DMNShape>
<dmndi:DMNShape
id="_D3C60B6D-3B89-430B-BB33-5167A3D9414D"
dmnElementRef="included0:_0A37D837-F93A-4A5A-A335-E51F55D0070D"
>
<dc:Bounds x="500" y="80" width="160" height="80" />
</dmndi:DMNShape>
<dmndi:DMNEdge
id="_B03F794E-C049-4F9C-938F-82708F632510"
dmnElementRef="_9AEA1B2D-DE33-490D-9970-07E45332DEF3"
sourceElement="_6CCFE0B6-5C49-485A-AD7E-D0B73D2BB633"
targetElement="_D9924C3E-521F-4318-9140-B42E66F8C6B4"
>
<di:waypoint x="580" y="180" />
<di:waypoint x="960" y="180" />
</dmndi:DMNEdge>
<dmndi:DMNShape
id="_B470D1CD-BA2F-4393-AF5B-2FC4F4DE462A"
dmnElementRef="_D847615D-55B2-45D9-A56F-6726F72D0744"
isCollapsed="false"
isListedInputData="false"
>
<dc:Bounds x="880" y="300" width="160" height="80" />
</dmndi:DMNShape>
<dmndi:DMNEdge
id="_DE667C39-AB67-4699-B8FE-0131522C6EED"
dmnElementRef="_667BE578-F2E8-4523-B4C5-99AC38D40A80"
sourceElement="_B470D1CD-BA2F-4393-AF5B-2FC4F4DE462A"
targetElement="_D9924C3E-521F-4318-9140-B42E66F8C6B4"
>
<di:waypoint x="960" y="340" />
<di:waypoint x="960" y="180" />
</dmndi:DMNEdge>
<dmndi:DMNShape
id="_894F72DA-9BFC-43B9-AF28-E6219A333FB9"
dmnElementRef="included0:_8ABF251F-B9D6-478E-BF18-AA8E7724CEE9"
>
<dc:Bounds x="820" y="-60" width="160" height="80" />
</dmndi:DMNShape>
<dmndi:DMNEdge
id="_CA4F2371-D04B-4059-A03A-02E20BF13F89"
dmnElementRef="_B347AB8A-C5C0-41D5-AAD6-1CD5068A871E"
sourceElement="_894F72DA-9BFC-43B9-AF28-E6219A333FB9"
targetElement="_D9924C3E-521F-4318-9140-B42E66F8C6B4"
>
<di:waypoint x="900" y="-20" />
<di:waypoint x="960" y="140" />
</dmndi:DMNEdge>
<dmndi:DMNShape
id="_C7023139-BF72-4CE9-8B42-BA52629B8ABA"
dmnElementRef="_7C9E56B7-24A0-4B11-9A5D-2AEA8130BC72"
isCollapsed="false"
isListedInputData="false"
>
<dc:Bounds x="1120" y="140" width="160" height="80" />
</dmndi:DMNShape>
<dmndi:DMNEdge
id="_35B32768-E16F-4CC7-815E-0F06CC361986"
dmnElementRef="_AF5A04E6-0767-4A49-AF11-A26A5F665876"
sourceElement="_C7023139-BF72-4CE9-8B42-BA52629B8ABA"
targetElement="_D9924C3E-521F-4318-9140-B42E66F8C6B4"
>
<di:waypoint x="1200" y="180" />
<di:waypoint x="1040" y="180" />
</dmndi:DMNEdge>
</dmndi:DMNDiagram>
</dmndi:DMNDI>
</definitions>
Loading

0 comments on commit c0f3e67

Please sign in to comment.