From 025b03adee1a8a41df2644e0bb714eedaec72ec6 Mon Sep 17 00:00:00 2001 From: Timo Reitz Date: Mon, 25 Sep 2023 20:46:34 +0200 Subject: [PATCH 1/7] Remove unreachable return. --- pkg/bpmn_engine/marshalling.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/bpmn_engine/marshalling.go b/pkg/bpmn_engine/marshalling.go index 2aa06c5..eef3d04 100644 --- a/pkg/bpmn_engine/marshalling.go +++ b/pkg/bpmn_engine/marshalling.go @@ -4,6 +4,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/var_holder" "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" ) @@ -243,7 +244,6 @@ func Unmarshal(data []byte) (BpmnEngineState, error) { Msg: msg, Err: err, } - return state, err } } } From 2fa613644ce0aedf2b45ecbaae5aeb0e0cb7e388 Mon Sep 17 00:00:00 2001 From: Timo Reitz Date: Mon, 25 Sep 2023 20:53:17 +0200 Subject: [PATCH 2/7] Format files according to goimports. --- pkg/bpmn_engine/conditions.go | 1 + pkg/bpmn_engine/conditions_test.go | 3 ++- pkg/bpmn_engine/engine_fork_join_test.go | 3 ++- pkg/bpmn_engine/engine_properties.go | 3 ++- pkg/bpmn_engine/engine_properties_test.go | 7 ++++--- pkg/bpmn_engine/engine_test.go | 3 ++- pkg/bpmn_engine/events.go | 3 ++- pkg/bpmn_engine/events_test.go | 3 ++- pkg/bpmn_engine/expressions.go | 3 ++- pkg/bpmn_engine/jobs.go | 3 ++- pkg/bpmn_engine/jobs_activated.go | 3 ++- pkg/bpmn_engine/key_gen.go | 3 ++- pkg/bpmn_engine/links.go | 3 ++- pkg/bpmn_engine/links_test.go | 3 ++- pkg/bpmn_engine/process_instance.go | 3 ++- pkg/bpmn_engine/timer.go | 3 ++- pkg/bpmn_engine/timer_test.go | 5 +++-- pkg/bpmn_engine/usertasks_test.go | 3 ++- pkg/bpmn_engine/xml_loader.go | 3 ++- pkg/bpmn_engine/xml_loader_test.go | 3 ++- pkg/spec/BPMN20/helper_test.go | 3 ++- tests/marshalling_test.go | 7 ++++--- 22 files changed, 48 insertions(+), 26 deletions(-) diff --git a/pkg/bpmn_engine/conditions.go b/pkg/bpmn_engine/conditions.go index 269f419..3995c8c 100644 --- a/pkg/bpmn_engine/conditions.go +++ b/pkg/bpmn_engine/conditions.go @@ -2,6 +2,7 @@ package bpmn_engine import ( "fmt" + "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" ) diff --git a/pkg/bpmn_engine/conditions_test.go b/pkg/bpmn_engine/conditions_test.go index 947fd65..f23ad3c 100644 --- a/pkg/bpmn_engine/conditions_test.go +++ b/pkg/bpmn_engine/conditions_test.go @@ -1,10 +1,11 @@ package bpmn_engine import ( + "testing" + "github.com/corbym/gocrest/has" "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" - "testing" ) func Test_exclusive_gateway_with_expressions_selects_one_and_not_the_other(t *testing.T) { diff --git a/pkg/bpmn_engine/engine_fork_join_test.go b/pkg/bpmn_engine/engine_fork_join_test.go index f1ee0c6..2a13f57 100644 --- a/pkg/bpmn_engine/engine_fork_join_test.go +++ b/pkg/bpmn_engine/engine_fork_join_test.go @@ -1,9 +1,10 @@ package bpmn_engine import ( + "testing" + "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" - "testing" ) func TestForkUncontrolledJoin(t *testing.T) { diff --git a/pkg/bpmn_engine/engine_properties.go b/pkg/bpmn_engine/engine_properties.go index 70a6cb6..584b0de 100644 --- a/pkg/bpmn_engine/engine_properties.go +++ b/pkg/bpmn_engine/engine_properties.go @@ -1,10 +1,11 @@ package bpmn_engine import ( + "sort" + "github.com/bwmarrin/snowflake" "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/exporter" "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" - "sort" ) type BpmnEngineState struct { diff --git a/pkg/bpmn_engine/engine_properties_test.go b/pkg/bpmn_engine/engine_properties_test.go index ee92302..cba6f75 100644 --- a/pkg/bpmn_engine/engine_properties_test.go +++ b/pkg/bpmn_engine/engine_properties_test.go @@ -1,12 +1,13 @@ package bpmn_engine import ( - "github.com/corbym/gocrest/has" - "github.com/corbym/gocrest/is" - "github.com/corbym/gocrest/then" "os" "strings" "testing" + + "github.com/corbym/gocrest/has" + "github.com/corbym/gocrest/is" + "github.com/corbym/gocrest/then" ) func Test_FindProcessInstance_ComfortFunction_ReturnsNilIfNoInstanceFound(t *testing.T) { diff --git a/pkg/bpmn_engine/engine_test.go b/pkg/bpmn_engine/engine_test.go index 0a296c2..00f3a66 100644 --- a/pkg/bpmn_engine/engine_test.go +++ b/pkg/bpmn_engine/engine_test.go @@ -1,10 +1,11 @@ package bpmn_engine import ( - "github.com/corbym/gocrest/has" "testing" "time" + "github.com/corbym/gocrest/has" + "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" ) diff --git a/pkg/bpmn_engine/events.go b/pkg/bpmn_engine/events.go index 4189b53..4099840 100644 --- a/pkg/bpmn_engine/events.go +++ b/pkg/bpmn_engine/events.go @@ -2,8 +2,9 @@ package bpmn_engine import ( "fmt" - "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" "time" + + "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" ) type MessageSubscription struct { diff --git a/pkg/bpmn_engine/events_test.go b/pkg/bpmn_engine/events_test.go index d588a3d..7cdf134 100644 --- a/pkg/bpmn_engine/events_test.go +++ b/pkg/bpmn_engine/events_test.go @@ -1,10 +1,11 @@ package bpmn_engine import ( + "testing" + "github.com/corbym/gocrest/has" "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" - "testing" ) func Test_creating_a_process_sets_state_to_READY(t *testing.T) { diff --git a/pkg/bpmn_engine/expressions.go b/pkg/bpmn_engine/expressions.go index 00b057f..5095adc 100644 --- a/pkg/bpmn_engine/expressions.go +++ b/pkg/bpmn_engine/expressions.go @@ -1,10 +1,11 @@ package bpmn_engine import ( + "strings" + "github.com/antonmedv/expr" "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/var_holder" "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20/extensions" - "strings" ) func evaluateExpression(expression string, variableContext map[string]interface{}) (interface{}, error) { diff --git a/pkg/bpmn_engine/jobs.go b/pkg/bpmn_engine/jobs.go index b358f48..e979697 100644 --- a/pkg/bpmn_engine/jobs.go +++ b/pkg/bpmn_engine/jobs.go @@ -1,9 +1,10 @@ package bpmn_engine import ( - "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/var_holder" "time" + "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/var_holder" + "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" ) diff --git a/pkg/bpmn_engine/jobs_activated.go b/pkg/bpmn_engine/jobs_activated.go index 68cb71e..01f0e7a 100644 --- a/pkg/bpmn_engine/jobs_activated.go +++ b/pkg/bpmn_engine/jobs_activated.go @@ -1,8 +1,9 @@ package bpmn_engine import ( - "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/var_holder" "time" + + "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/var_holder" ) // ActivatedJob is a struct to provide information for registered task handler diff --git a/pkg/bpmn_engine/key_gen.go b/pkg/bpmn_engine/key_gen.go index 08f373d..c201790 100644 --- a/pkg/bpmn_engine/key_gen.go +++ b/pkg/bpmn_engine/key_gen.go @@ -1,9 +1,10 @@ package bpmn_engine import ( - "github.com/bwmarrin/snowflake" "hash/adler32" "os" + + "github.com/bwmarrin/snowflake" ) var globalIdGenerator *snowflake.Node = nil diff --git a/pkg/bpmn_engine/links.go b/pkg/bpmn_engine/links.go index eb080ae..bc90bd5 100644 --- a/pkg/bpmn_engine/links.go +++ b/pkg/bpmn_engine/links.go @@ -2,9 +2,10 @@ package bpmn_engine import ( "fmt" + "strings" + "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/var_holder" "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" - "strings" ) func (state *BpmnEngineState) handleIntermediateThrowEvent(process *ProcessInfo, instance *processInstanceInfo, ite BPMN20.TIntermediateThrowEvent, activity activity) (nextCommands []command) { diff --git a/pkg/bpmn_engine/links_test.go b/pkg/bpmn_engine/links_test.go index 6e96fdc..da8d74d 100644 --- a/pkg/bpmn_engine/links_test.go +++ b/pkg/bpmn_engine/links_test.go @@ -1,10 +1,11 @@ package bpmn_engine import ( + "testing" + "github.com/corbym/gocrest/has" "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" - "testing" ) func Test_Link_events_are_thrown_and_caught_and_flow_continued(t *testing.T) { diff --git a/pkg/bpmn_engine/process_instance.go b/pkg/bpmn_engine/process_instance.go index 60a43a1..ec4b3b2 100644 --- a/pkg/bpmn_engine/process_instance.go +++ b/pkg/bpmn_engine/process_instance.go @@ -1,8 +1,9 @@ package bpmn_engine import ( - "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/var_holder" "time" + + "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine/var_holder" ) // FIXME: shall this be exported? diff --git a/pkg/bpmn_engine/timer.go b/pkg/bpmn_engine/timer.go index 101d840..a31fa30 100644 --- a/pkg/bpmn_engine/timer.go +++ b/pkg/bpmn_engine/timer.go @@ -2,9 +2,10 @@ package bpmn_engine import ( "fmt" + "time" + "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" "github.com/senseyeio/duration" - "time" ) // Timer is created, when a process instance reaches a Timer Intermediate Message Event. diff --git a/pkg/bpmn_engine/timer_test.go b/pkg/bpmn_engine/timer_test.go index bd3081e..d3745ee 100644 --- a/pkg/bpmn_engine/timer_test.go +++ b/pkg/bpmn_engine/timer_test.go @@ -1,11 +1,12 @@ package bpmn_engine import ( + "testing" + "time" + "github.com/corbym/gocrest/has" "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" - "testing" - "time" ) func Test_EventBasedGateway_selects_path_where_timer_occurs(t *testing.T) { diff --git a/pkg/bpmn_engine/usertasks_test.go b/pkg/bpmn_engine/usertasks_test.go index 97b3148..cf85c1e 100644 --- a/pkg/bpmn_engine/usertasks_test.go +++ b/pkg/bpmn_engine/usertasks_test.go @@ -1,9 +1,10 @@ package bpmn_engine import ( + "testing" + "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" - "testing" ) func Test_user_tasks_can_be_handled(t *testing.T) { diff --git a/pkg/bpmn_engine/xml_loader.go b/pkg/bpmn_engine/xml_loader.go index 91b805c..4ba817a 100644 --- a/pkg/bpmn_engine/xml_loader.go +++ b/pkg/bpmn_engine/xml_loader.go @@ -7,9 +7,10 @@ import ( "encoding/ascii85" "encoding/hex" "encoding/xml" - "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" "io" "os" + + "github.com/nitram509/lib-bpmn-engine/pkg/spec/BPMN20" ) // LoadFromFile loads a given BPMN file by filename into the engine diff --git a/pkg/bpmn_engine/xml_loader_test.go b/pkg/bpmn_engine/xml_loader_test.go index 18a5d48..6eef974 100644 --- a/pkg/bpmn_engine/xml_loader_test.go +++ b/pkg/bpmn_engine/xml_loader_test.go @@ -2,9 +2,10 @@ package bpmn_engine import ( "fmt" + "testing" + "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" - "testing" ) const XmlTestString = `` diff --git a/pkg/spec/BPMN20/helper_test.go b/pkg/spec/BPMN20/helper_test.go index df65b64..175803a 100644 --- a/pkg/spec/BPMN20/helper_test.go +++ b/pkg/spec/BPMN20/helper_test.go @@ -1,9 +1,10 @@ package BPMN20 import ( + "testing" + "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" - "testing" ) func Test_no_expression_when_only_blanks(t *testing.T) { diff --git a/tests/marshalling_test.go b/tests/marshalling_test.go index ad482df..08d5880 100644 --- a/tests/marshalling_test.go +++ b/tests/marshalling_test.go @@ -1,13 +1,14 @@ package tests import ( + "os" + "testing" + "time" + "github.com/corbym/gocrest/has" "github.com/corbym/gocrest/is" "github.com/corbym/gocrest/then" "github.com/nitram509/lib-bpmn-engine/pkg/bpmn_engine" - "os" - "testing" - "time" ) type CallPath struct { From c53b607ed45184ab0559b0cd9f9d30bf0687cc04 Mon Sep 17 00:00:00 2001 From: Timo Reitz Date: Mon, 25 Sep 2023 20:55:18 +0200 Subject: [PATCH 3/7] Remove unused field. --- pkg/bpmn_engine/command.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/bpmn_engine/command.go b/pkg/bpmn_engine/command.go index aadb227..1ea7637 100644 --- a/pkg/bpmn_engine/command.go +++ b/pkg/bpmn_engine/command.go @@ -43,7 +43,6 @@ func (a activityCommand) Type() commandType { // --------------------------------------------------------------------- type continueActivityCommand struct { - sourceId string activity activity originActivity activity } From 8e35576d530add7fa0d50f2ebfa90d207fb8b127 Mon Sep 17 00:00:00 2001 From: Timo Reitz Date: Mon, 25 Sep 2023 21:05:18 +0200 Subject: [PATCH 4/7] Simplify findDurationValue - the check was against a pointer that could never be nil, so the if statement was basically dead code. Removed some cruft afterwards. --- pkg/bpmn_engine/timer.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pkg/bpmn_engine/timer.go b/pkg/bpmn_engine/timer.go index a31fa30..a692905 100644 --- a/pkg/bpmn_engine/timer.go +++ b/pkg/bpmn_engine/timer.go @@ -125,10 +125,5 @@ func findExistingTimerNotYetTriggered(state *BpmnEngineState, id string, instanc } func findDurationValue(ice BPMN20.TIntermediateCatchEvent) (duration.Duration, error) { - durationStr := &ice.TimerEventDefinition.TimeDuration.XMLText - if durationStr == nil { - return duration.Duration{}, newEngineErrorf("Can't find 'timeDuration' value for INTERMEDIATE_CATCH_EVENT with id=%s", ice.Id) - } - d, err := duration.ParseISO8601(*durationStr) - return d, err + return duration.ParseISO8601(ice.TimerEventDefinition.TimeDuration.XMLText) } From f465bf4bb6ce2396d398c883de8ad47d84aa8d8e Mon Sep 17 00:00:00 2001 From: Timo Reitz Date: Mon, 25 Sep 2023 21:06:38 +0200 Subject: [PATCH 5/7] Remove function that is unused and untested. --- pkg/bpmn_engine/utils.go | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/pkg/bpmn_engine/utils.go b/pkg/bpmn_engine/utils.go index bec760e..987f4b2 100644 --- a/pkg/bpmn_engine/utils.go +++ b/pkg/bpmn_engine/utils.go @@ -17,14 +17,3 @@ func contains(strings []string, s string) bool { } return false } - -func remove(strings []string, s string) []string { - for i, aString := range strings { - if aString == s { - strings[i] = strings[0] - strings = strings[1:] - break - } - } - return strings -} From f564f2e14835328b2b1cf9aae4c6130dcb41a7d2 Mon Sep 17 00:00:00 2001 From: Timo Reitz Date: Mon, 25 Sep 2023 21:09:46 +0200 Subject: [PATCH 6/7] Merge declarations and assignments for more idomatic code. --- pkg/bpmn_engine/links.go | 3 +-- tests/marshalling_test.go | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/pkg/bpmn_engine/links.go b/pkg/bpmn_engine/links.go index bc90bd5..e997a96 100644 --- a/pkg/bpmn_engine/links.go +++ b/pkg/bpmn_engine/links.go @@ -28,8 +28,7 @@ func (state *BpmnEngineState) handleIntermediateThrowEvent(process *ProcessInfo, elementName: ite.Name, }} } else { - var element BPMN20.BaseElement - element = ice + var element BPMN20.BaseElement = ice nextCommands = []command{activityCommand{ sourceId: ice.Id, element: &element, diff --git a/tests/marshalling_test.go b/tests/marshalling_test.go index 08d5880..1190294 100644 --- a/tests/marshalling_test.go +++ b/tests/marshalling_test.go @@ -239,8 +239,7 @@ func Test_Unmarshal_restores_processKey(t *testing.T) { // when bpmnEngine, err = bpmn_engine.Unmarshal(bytes) then.AssertThat(t, err, is.Nil()) - var processes []*bpmn_engine.ProcessInfo - processes = bpmnEngine.FindProcessesById("Simple_Task_Process") + processes := bpmnEngine.FindProcessesById("Simple_Task_Process") // then then.AssertThat(t, processes, has.Length(1)) From 7c3a348adb1bcfc64060b1619503ba127eea8b81 Mon Sep 17 00:00:00 2001 From: Timo Reitz Date: Mon, 25 Sep 2023 21:16:16 +0200 Subject: [PATCH 7/7] Make type switch more idiomatic by introducing a variable for the typed value. See https://go.dev/tour/methods/16. --- pkg/bpmn_engine/marshalling.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/bpmn_engine/marshalling.go b/pkg/bpmn_engine/marshalling.go index eef3d04..9b79042 100644 --- a/pkg/bpmn_engine/marshalling.go +++ b/pkg/bpmn_engine/marshalling.go @@ -157,11 +157,11 @@ func (pii *processInstanceInfo) MarshalJSON() ([]byte, error) { ProcessInstanceInfoAlias: (*ProcessInstanceInfoAlias)(pii), } for _, a := range pii.activities { - switch a.(type) { + switch activity := a.(type) { case *gatewayActivity: - piia.ActivityAdapters = append(piia.ActivityAdapters, createGatewayActivityAdapter(a.(*gatewayActivity))) + piia.ActivityAdapters = append(piia.ActivityAdapters, createGatewayActivityAdapter(activity)) case *eventBasedGatewayActivity: - piia.ActivityAdapters = append(piia.ActivityAdapters, createEventBasedGatewayActivityAdapter(a.(*eventBasedGatewayActivity))) + piia.ActivityAdapters = append(piia.ActivityAdapters, createEventBasedGatewayActivityAdapter(activity)) default: panic(fmt.Sprintf("[invariant check] missing activity adapter for the type %T", a)) } @@ -299,11 +299,11 @@ func recoverProcessInstanceActivitiesPart1(pii *processInstanceInfo, adapter *pr func recoverProcessInstanceActivitiesPart2(state *BpmnEngineState) { for _, pi := range state.processInstances { for _, a := range pi.activities { - switch a.(type) { + switch activity := a.(type) { case *eventBasedGatewayActivity: - a.(*eventBasedGatewayActivity).element = BPMN20.FindBaseElementsById(&pi.ProcessInfo.definitions, (*a.Element()).GetId())[0] + activity.element = BPMN20.FindBaseElementsById(&pi.ProcessInfo.definitions, (*a.Element()).GetId())[0] case *gatewayActivity: - a.(*gatewayActivity).element = BPMN20.FindBaseElementsById(&pi.ProcessInfo.definitions, (*a.Element()).GetId())[0] + activity.element = BPMN20.FindBaseElementsById(&pi.ProcessInfo.definitions, (*a.Element()).GetId())[0] default: panic(fmt.Sprintf("[invariant check] missing case for activity type=%T", a)) }