@@ -182,7 +190,6 @@ const DecisionDetails = () => {
const {
id, key, name, version, versionTag, tenantId, deploymentId,
decisionRequirementsDefinitionId, historyTimeToLive,
- resource
} = definition.value.data
return
@@ -203,7 +210,11 @@ const DecisionDetails = () => {
{t("decisions.deployment-id")}
{deploymentId}
{t("decisions.decision-requirements-id")}
-
{decisionRequirementsDefinitionId}
+
+ {decisionRequirementsDefinitionId
+ ? {decisionRequirementsDefinitionId}
+ : '-'}
+
{t("decisions.history-ttl")}
{historyTimeToLive}
@@ -217,6 +228,16 @@ const DecisionDetails = () => {
signal={dmn}
on_nothing={() =>
{t("decisions.select-diagram")}
}
on_success={() =>
} />
+
+ {definition.value?.data?.decisionRequirementsDefinitionId
+ ? <>
+
{t("decisions.decision-requirements-diagram")}
+
+
} />
+ >
+ : null}
}
diff --git a/src/pages/Decisions.test.jsx b/src/pages/Decisions.test.jsx
index 9ac0a45..5a591f9 100644
--- a/src/pages/Decisions.test.jsx
+++ b/src/pages/Decisions.test.jsx
@@ -67,6 +67,20 @@ describe("DecisionsPage", () => {
expect(engine_rest.decision.get_dmn_xml).toHaveBeenCalled();
});
+ it("fetches the decision requirements xml when the selected decision belongs to a DRD", () => {
+ mockParams = { decision_id: "d1" };
+ signal_response(state.api.decision.definition, {
+ id: "d1",
+ key: "risk",
+ name: "Risk",
+ version: 1,
+ decisionRequirementsDefinitionId: "drd-1",
+ });
+ renderPage(state);
+ expect(engine_rest.decision.get_decision_requirements_xml).toHaveBeenCalled();
+ expect(engine_rest.decision.get_decision_requirements_xml.mock.lastCall[1]).toBe("drd-1");
+ });
+
it("renders the DMN viewer with the fetched xml", () => {
mockParams = { decision_id: "d1" };
signal_response(state.api.decision.definition, {
@@ -79,4 +93,19 @@ describe("DecisionsPage", () => {
const { getByTestId } = renderPage(state);
expect(getByTestId("dmn-viewer").textContent).toBe("
xml");
});
+
+ it("renders the DRD viewer with the fetched decision requirements xml", () => {
+ mockParams = { decision_id: "d1" };
+ signal_response(state.api.decision.definition, {
+ id: "d1",
+ key: "risk",
+ name: "Risk",
+ version: 1,
+ decisionRequirementsDefinitionId: "drd-1",
+ });
+ signal_response(state.api.decision.drd, { dmnXml: "
xml" });
+ const { getAllByTestId, getByText } = renderPage(state);
+ expect(getByText("decisions.decision-requirements-diagram")).toBeTruthy();
+ expect(getAllByTestId("dmn-viewer").some((node) => node.textContent === "
xml")).toBe(true);
+ });
});
diff --git a/src/state.js b/src/state.js
index f63ad2e..03a2f22 100644
--- a/src/state.js
+++ b/src/state.js
@@ -164,6 +164,7 @@ const createAppState = () => {
definitions: signal(null),
definition: signal(null),
dmn: signal(null),
+ drd: signal(null),
saved_filters: signal(null),
},
history: {