Skip to content

Commit 5b95a6f

Browse files
committed
refactor task service and user handlers in one source file
1 parent 72eaccb commit 5b95a6f

File tree

4 files changed

+46
-46
lines changed

4 files changed

+46
-46
lines changed

pkg/bpmn_engine/jobs.go

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -28,43 +28,6 @@ func (j job) Element() *BPMN20.BaseElement {
2828
return j.baseElement
2929
}
3030

31-
func (state *BpmnEngineState) handleServiceTask(process *ProcessInfo, instance *processInstanceInfo, element *BPMN20.TaskElement) (bool, *job) {
32-
job := findOrCreateJob(&state.jobs, element, instance, state.generateKey)
33-
34-
handler := state.findTaskHandler(element)
35-
if handler != nil {
36-
job.JobState = Active
37-
variableHolder := NewVarHolder(&instance.VariableHolder, nil)
38-
activatedJob := &activatedJob{
39-
processInstanceInfo: instance,
40-
failHandler: func(reason string) { job.JobState = Failed },
41-
completeHandler: func() { job.JobState = Completed },
42-
key: state.generateKey(),
43-
processInstanceKey: instance.InstanceKey,
44-
bpmnProcessId: process.BpmnProcessId,
45-
processDefinitionVersion: process.Version,
46-
processDefinitionKey: process.ProcessKey,
47-
elementId: job.ElementId,
48-
createdAt: job.CreatedAt,
49-
variableHolder: variableHolder,
50-
}
51-
if err := evaluateLocalVariables(&variableHolder, (*element).GetInputMapping()); err != nil {
52-
job.JobState = Failed
53-
instance.State = Failed
54-
return false, job
55-
}
56-
handler(activatedJob)
57-
if job.JobState == Completed {
58-
if err := propagateProcessInstanceVariables(&variableHolder, (*element).GetOutputMapping()); err != nil {
59-
job.JobState = Failed
60-
instance.State = Failed
61-
}
62-
}
63-
}
64-
65-
return job.JobState == Completed, job
66-
}
67-
6831
func findOrCreateJob(jobs *[]*job, element *BPMN20.TaskElement, instance *processInstanceInfo, generateKey func() int64) *job {
6932
be := (*element).(BPMN20.BaseElement)
7033
for _, job := range *jobs {

pkg/bpmn_engine/tasks.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package bpmn_engine
2+
3+
import "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20"
4+
5+
func (state *BpmnEngineState) handleServiceTask(process *ProcessInfo, instance *processInstanceInfo, element *BPMN20.TaskElement) (bool, *job) {
6+
job := findOrCreateJob(&state.jobs, element, instance, state.generateKey)
7+
8+
handler := state.findTaskHandler(element)
9+
if handler != nil {
10+
job.JobState = Active
11+
variableHolder := NewVarHolder(&instance.VariableHolder, nil)
12+
activatedJob := &activatedJob{
13+
processInstanceInfo: instance,
14+
failHandler: func(reason string) { job.JobState = Failed },
15+
completeHandler: func() { job.JobState = Completed },
16+
key: state.generateKey(),
17+
processInstanceKey: instance.InstanceKey,
18+
bpmnProcessId: process.BpmnProcessId,
19+
processDefinitionVersion: process.Version,
20+
processDefinitionKey: process.ProcessKey,
21+
elementId: job.ElementId,
22+
createdAt: job.CreatedAt,
23+
variableHolder: variableHolder,
24+
}
25+
if err := evaluateLocalVariables(&variableHolder, (*element).GetInputMapping()); err != nil {
26+
job.JobState = Failed
27+
instance.State = Failed
28+
return false, job
29+
}
30+
handler(activatedJob)
31+
if job.JobState == Completed {
32+
if err := propagateProcessInstanceVariables(&variableHolder, (*element).GetOutputMapping()); err != nil {
33+
job.JobState = Failed
34+
instance.State = Failed
35+
}
36+
}
37+
}
38+
39+
return job.JobState == Completed, job
40+
}
41+
42+
func (state *BpmnEngineState) handleUserTask(process *ProcessInfo, instance *processInstanceInfo, element *BPMN20.TaskElement) *job {
43+
// TODO consider different handlers, since Service Tasks are different in their definition than user tasks
44+
_, j := state.handleServiceTask(process, instance, element)
45+
return j
46+
}

pkg/bpmn_engine/usertasks.go

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

0 commit comments

Comments
 (0)