Skip to content

Commit 0d5dd73

Browse files
committed
🚧 [#3730] Missing action serializer in the backend
1 parent 537cddd commit 0d5dd73

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

src/openforms/forms/api/serializers/logic/action_serializers.py

+21
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,26 @@ class LogicFetchActionSerializer(serializers.Serializer):
7272
)
7373

7474

75+
class DMNEvaluateActionConfigSerializer(serializers.Serializer):
76+
plugin_id = serializers.CharField(label=_("Plugin ID"), required=True)
77+
decision_definition_id = serializers.CharField(
78+
label=_("Decision definition ID"), required=True
79+
)
80+
decision_definition_version = serializers.CharField(
81+
label=_("Decision definition version")
82+
)
83+
input_mapping = serializers.JSONField(
84+
label=_("Input mapping"),
85+
)
86+
output_mapping = serializers.JSONField(
87+
label=_("Output mapping"),
88+
)
89+
90+
91+
class DMNEvaluateActionSerializer(serializers.Serializer):
92+
config = DMNEvaluateActionConfigSerializer(label=_("Configuration"))
93+
94+
7595
class LogicSetRegistrationBackendActionSerializer(serializers.Serializer):
7696
value = serializers.CharField(
7797
label=_("registration_backend_key"),
@@ -94,6 +114,7 @@ class LogicActionPolymorphicSerializer(PolymorphicSerializer):
94114
str(LogicActionTypes.step_applicable): DummySerializer,
95115
str(LogicActionTypes.variable): LogicValueActionSerializer,
96116
str(LogicActionTypes.fetch_from_service): LogicFetchActionSerializer,
117+
str(LogicActionTypes.evaluate_dmn): DMNEvaluateActionSerializer,
97118
str(
98119
LogicActionTypes.set_registration_backend
99120
): LogicSetRegistrationBackendActionSerializer,

src/openforms/submissions/logic/actions.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -210,17 +210,17 @@ class DMNConfig(TypedDict):
210210
plugin_id: str
211211
input_mapping: dict[str, str]
212212
output_mapping: dict[str, str]
213-
definition_id: str
214-
definition_version: str
213+
decision_definition_id: str
214+
decision_definition_version: str
215215

216216

217217
@dataclass
218218
class EvaluateDMNAction(ActionOperation):
219219
input_mapping: dict[str, str]
220220
output_mapping: dict[str, str]
221-
definition_id: str
221+
decision_definition_id: str
222222
plugin_id: str
223-
definition_version: str = ""
223+
decision_definition_version: str = ""
224224

225225
@classmethod
226226
def from_action(cls, action: ActionDict) -> Self:
@@ -241,8 +241,8 @@ def eval(
241241

242242
# Perform DMN call
243243
dmn_outputs = evaluate_dmn(
244-
definition_id=self.definition_id,
245-
version=self.definition_version,
244+
definition_id=self.decision_definition_id,
245+
version=self.decision_definition_version,
246246
input_values=dmn_inputs,
247247
plugin_id=self.plugin_id,
248248
)
@@ -251,6 +251,7 @@ def eval(
251251
return {
252252
key_form: dmn_outputs[key_dmn]
253253
for key_form, key_dmn in self.output_mapping.items()
254+
if key_dmn in dmn_outputs
254255
}
255256

256257

0 commit comments

Comments
 (0)