Skip to content
This repository was archived by the owner on Oct 6, 2025. It is now read-only.

Commit c6cfa8c

Browse files
committed
reworked trigger process with unique instances based on BPMN signals
The new trigger process implementation uses an event based gateway to either wait for a timer to fire after 24 hours or a global signal to abort. The abort signal is send as the first step of the trigger process to stop existing instances and based on a stopDataTrigger Task resource. The new implementation does not require (and actually does not allow) to specify a business-key via Task resource. If a stopDataTrigger Task resource is send while the trigger process is searching for new/changed data, nothing happens. Stopping the trigger process is only possible while the process is sleeping but than is stopped immediately.
1 parent afcdbae commit c6cfa8c

9 files changed

Lines changed: 178 additions & 293 deletions

File tree

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/StartTimer.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/service/trigger/StopTimer.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

codex-process-data-transfer/src/main/java/de/netzwerk_universitaetsmedizin/codex/processes/data_transfer/spring/config/TriggerConfig.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,13 @@
77
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.message.StartSendProcess;
88
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.service.trigger.FindNewData;
99
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.service.trigger.SaveLastExportTo;
10-
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.service.trigger.StartTimer;
11-
import de.netzwerk_universitaetsmedizin.codex.processes.data_transfer.service.trigger.StopTimer;
1210

1311
@Configuration
1412
public class TriggerConfig
1513
{
1614
@Autowired
1715
private TransferDataConfig transferDataConfig;
1816

19-
@Bean
20-
public StartTimer startTimer()
21-
{
22-
return new StartTimer(transferDataConfig.fhirClientProvider(), transferDataConfig.taskHelper(),
23-
transferDataConfig.readAccessHelper());
24-
}
25-
2617
@Bean
2718
public FindNewData findNewData()
2819
{
@@ -39,13 +30,6 @@ public StartSendProcess startSendProcess()
3930
transferDataConfig.fhirContext());
4031
}
4132

42-
@Bean
43-
public StopTimer stopTimer()
44-
{
45-
return new StopTimer(transferDataConfig.fhirClientProvider(), transferDataConfig.taskHelper(),
46-
transferDataConfig.readAccessHelper());
47-
}
48-
4933
@Bean
5034
public SaveLastExportTo saveLastExportTo()
5135
{

codex-process-data-transfer/src/main/resources/bpe/trigger.bpmn

Lines changed: 172 additions & 185 deletions
Large diffs are not rendered by default.

codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-start-data-trigger.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
</element>
2828
<element id="Task.input">
2929
<path value="Task.input" />
30-
<min value="2" />
31-
<max value="3" />
30+
<min value="1" />
31+
<max value="2" />
3232
</element>
3333
<element id="Task.input:message-name">
3434
<path value="Task.input" />
@@ -41,7 +41,7 @@
4141
<element id="Task.input:business-key">
4242
<path value="Task.input" />
4343
<sliceName value="business-key" />
44-
<min value="1" />
44+
<max value="0" />
4545
</element>
4646
<element id="Task.input:correlation-key">
4747
<path value="Task.input" />

codex-process-data-transfer/src/main/resources/fhir/StructureDefinition/num-codex-task-stop-data-trigger.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
</element>
2828
<element id="Task.input">
2929
<path value="Task.input" />
30-
<min value="2" />
31-
<max value="2" />
30+
<min value="1" />
31+
<max value="1" />
3232
</element>
3333
<element id="Task.input:message-name">
3434
<path value="Task.input" />
@@ -41,7 +41,7 @@
4141
<element id="Task.input:business-key">
4242
<path value="Task.input" />
4343
<sliceName value="business-key" />
44-
<min value="1" />
44+
<max value="0" />
4545
</element>
4646
<element id="Task.input:correlation-key">
4747
<path value="Task.input" />

codex-process-data-transfer/src/test/java/de/netzwerk_universitaetsmedizin/codex/processes/fhir/profile/TaskProfileTest.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,6 @@ private Task createValidTaskStartDataTrigger()
170170
.setSystem(NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER).setValue("Test_DIC");
171171
task.addInput().setValue(new StringType(PROFILE_NUM_CODEX_TASK_START_DATA_TRIGGER_MESSAGE_NAME)).getType()
172172
.addCoding().setSystem(CODESYSTEM_HIGHMED_BPMN).setCode(CODESYSTEM_HIGHMED_BPMN_VALUE_MESSAGE_NAME);
173-
task.addInput().setValue(new StringType(UUID.randomUUID().toString())).getType().addCoding()
174-
.setSystem(CODESYSTEM_HIGHMED_BPMN).setCode(CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY);
175173

176174
return task;
177175
}
@@ -203,8 +201,6 @@ private Task createValidTaskStopDataTrigger()
203201
.setSystem(NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER).setValue("Test_DIC");
204202
task.addInput().setValue(new StringType(PROFILE_NUM_CODEX_TASK_STOP_DATA_TRIGGER_MESSAGE_NAME)).getType()
205203
.addCoding().setSystem(CODESYSTEM_HIGHMED_BPMN).setCode(CODESYSTEM_HIGHMED_BPMN_VALUE_MESSAGE_NAME);
206-
task.addInput().setValue(new StringType(UUID.randomUUID().toString())).getType().addCoding()
207-
.setSystem(CODESYSTEM_HIGHMED_BPMN).setCode(CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY);
208204

209205
return task;
210206
}

codex-process-data-transfer/src/test/resources/fhir/Task/TaskStartDataTrigger.xml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,6 @@
3131
</type>
3232
<valueString value="startDataTrigger"/>
3333
</input>
34-
<input>
35-
<type>
36-
<coding>
37-
<system value="http://highmed.org/fhir/CodeSystem/bpmn-message"/>
38-
<code value="business-key"/>
39-
</coding>
40-
</type>
41-
<!-- random business-key UUID, value also used in stop data trigger task, do not use the same value twice -->
42-
<valueString value="7f7fd1e7-f10f-4aeb-9ac5-c8be86fab21a"/>
43-
</input>
4434
<!-- optional date specifying what data is defined as 'new', if not defined
4535
every GECCO resource is new and triggers the send process -->
4636
<!-- <input>

codex-process-data-transfer/src/test/resources/fhir/Task/TaskStopDataTrigger.xml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,4 @@
3131
</type>
3232
<valueString value="stopDataTrigger"/>
3333
</input>
34-
<input>
35-
<type>
36-
<coding>
37-
<system value="http://highmed.org/fhir/CodeSystem/bpmn-message"/>
38-
<code value="business-key"/>
39-
</coding>
40-
</type>
41-
<!-- same business-key UUID used to start the data trigger process -->
42-
<valueString value="7f7fd1e7-f10f-4aeb-9ac5-c8be86fab21a"/>
43-
</input>
4434
</Task>

0 commit comments

Comments
 (0)