From 6e46843e1adf1c2615ca8855d37f42d92c4be52d Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 11 Jul 2018 00:04:42 +0800 Subject: [PATCH 1/3] Added optional parameter 'Reference' to IWorkflowController.StartWorkflow --- .../Interface/IWorkflowController.cs | 8 ++++---- src/WorkflowCore/Services/WorkflowController.cs | 17 +++++++++-------- src/WorkflowCore/Services/WorkflowHost.cs | 16 ++++++++-------- .../Controllers/WorkflowsController.cs | 6 +++--- src/samples/WorkflowCore.Sample01/Program.cs | 2 +- src/samples/WorkflowCore.Sample02/Program.cs | 2 +- src/samples/WorkflowCore.Sample05/Program.cs | 2 +- src/samples/WorkflowCore.Sample06/Program.cs | 2 +- src/samples/WorkflowCore.Sample15/Program.cs | 2 +- 9 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/WorkflowCore/Interface/IWorkflowController.cs b/src/WorkflowCore/Interface/IWorkflowController.cs index 48b7ca405..e0639aa96 100644 --- a/src/WorkflowCore/Interface/IWorkflowController.cs +++ b/src/WorkflowCore/Interface/IWorkflowController.cs @@ -7,10 +7,10 @@ namespace WorkflowCore.Interface { public interface IWorkflowController { - Task StartWorkflow(string workflowId, object data = null); - Task StartWorkflow(string workflowId, int? version, object data = null); - Task StartWorkflow(string workflowId, TData data = null) where TData : class; - Task StartWorkflow(string workflowId, int? version, TData data = null) where TData : class; + Task StartWorkflow(string workflowId, object data = null, string reference=null); + Task StartWorkflow(string workflowId, int? version, object data = null, string reference=null); + Task StartWorkflow(string workflowId, TData data = null, string reference=null) where TData : class; + Task StartWorkflow(string workflowId, int? version, TData data = null, string reference=null) where TData : class; Task PublishEvent(string eventName, string eventKey, object eventData, DateTime? effectiveDate = null); void RegisterWorkflow() where TWorkflow : IWorkflow, new(); diff --git a/src/WorkflowCore/Services/WorkflowController.cs b/src/WorkflowCore/Services/WorkflowController.cs index 5a124728f..7b5967bb3 100644 --- a/src/WorkflowCore/Services/WorkflowController.cs +++ b/src/WorkflowCore/Services/WorkflowController.cs @@ -29,23 +29,23 @@ public WorkflowController(IPersistenceProvider persistenceStore, IDistributedLoc _logger = loggerFactory.CreateLogger(); } - public Task StartWorkflow(string workflowId, object data = null) + public Task StartWorkflow(string workflowId, object data = null, string reference=null) { - return StartWorkflow(workflowId, null, data); + return StartWorkflow(workflowId, null, data, reference); } - public Task StartWorkflow(string workflowId, int? version, object data = null) + public Task StartWorkflow(string workflowId, int? version, object data = null, string reference=null) { - return StartWorkflow(workflowId, version, data); + return StartWorkflow(workflowId, version, data, reference); } - public Task StartWorkflow(string workflowId, TData data = null) + public Task StartWorkflow(string workflowId, TData data = null, string reference=null) where TData : class { - return StartWorkflow(workflowId, null, data); + return StartWorkflow(workflowId, null, data, reference); } - public async Task StartWorkflow(string workflowId, int? version, TData data = null) + public async Task StartWorkflow(string workflowId, int? version, TData data = null, string reference=null) where TData : class { @@ -63,7 +63,8 @@ public async Task StartWorkflow(string workflowId, int? version, Description = def.Description, NextExecution = 0, CreateTime = DateTime.Now.ToUniversalTime(), - Status = WorkflowStatus.Runnable + Status = WorkflowStatus.Runnable, + Reference = reference }; if ((def.DataType != null) && (data == null)) diff --git a/src/WorkflowCore/Services/WorkflowHost.cs b/src/WorkflowCore/Services/WorkflowHost.cs index f9cc2d1e8..21cace223 100644 --- a/src/WorkflowCore/Services/WorkflowHost.cs +++ b/src/WorkflowCore/Services/WorkflowHost.cs @@ -43,27 +43,27 @@ public WorkflowHost(IPersistenceProvider persistenceStore, IQueueProvider queueP persistenceStore.EnsureStoreExists(); } - public Task StartWorkflow(string workflowId, object data = null) + public Task StartWorkflow(string workflowId, object data = null, string reference=null) { - return _workflowController.StartWorkflow(workflowId, data); + return _workflowController.StartWorkflow(workflowId, data, reference); } - public Task StartWorkflow(string workflowId, int? version, object data = null) + public Task StartWorkflow(string workflowId, int? version, object data = null, string reference=null) { - return _workflowController.StartWorkflow(workflowId, version, data); + return _workflowController.StartWorkflow(workflowId, version, data, reference); } - public Task StartWorkflow(string workflowId, TData data = null) + public Task StartWorkflow(string workflowId, TData data = null, string reference=null) where TData : class { - return _workflowController.StartWorkflow(workflowId, null, data); + return _workflowController.StartWorkflow(workflowId, null, data, reference); } - public Task StartWorkflow(string workflowId, int? version, TData data = null) + public Task StartWorkflow(string workflowId, int? version, TData data = null, string reference=null) where TData : class { - return _workflowController.StartWorkflow(workflowId, version, data); + return _workflowController.StartWorkflow(workflowId, version, data, reference); } public Task PublishEvent(string eventName, string eventKey, object eventData, DateTime? effectiveDate = null) diff --git a/src/extensions/WorkflowCore.WebAPI/Controllers/WorkflowsController.cs b/src/extensions/WorkflowCore.WebAPI/Controllers/WorkflowsController.cs index ef4da1aa3..f4200b13c 100644 --- a/src/extensions/WorkflowCore.WebAPI/Controllers/WorkflowsController.cs +++ b/src/extensions/WorkflowCore.WebAPI/Controllers/WorkflowsController.cs @@ -45,7 +45,7 @@ public async Task Get(string id) [HttpPost("{id}")] [HttpPost("{id}/{version}")] - public async Task Post(string id, int? version, [FromBody]JObject data) + public async Task Post(string id, int? version, string reference, [FromBody]JObject data) { string workflowId = null; var def = _registry.GetDefinition(id, version); @@ -55,11 +55,11 @@ public async Task Post(string id, int? version, [FromBody]JObject { var dataStr = JsonConvert.SerializeObject(data); var dataObj = JsonConvert.DeserializeObject(dataStr, def.DataType); - workflowId = await _workflowHost.StartWorkflow(id, version, dataObj); + workflowId = await _workflowHost.StartWorkflow(id, version, dataObj, reference); } else { - workflowId = await _workflowHost.StartWorkflow(id, version, null); + workflowId = await _workflowHost.StartWorkflow(id, version, null, reference); } return Ok(workflowId); diff --git a/src/samples/WorkflowCore.Sample01/Program.cs b/src/samples/WorkflowCore.Sample01/Program.cs index 2f1e6105c..1e96bd198 100644 --- a/src/samples/WorkflowCore.Sample01/Program.cs +++ b/src/samples/WorkflowCore.Sample01/Program.cs @@ -22,7 +22,7 @@ public static void Main(string[] args) host.RegisterWorkflow(); host.Start(); - host.StartWorkflow("HelloWorld", 1, null); + host.StartWorkflow("HelloWorld", 1, null, null); Console.ReadLine(); host.Stop(); diff --git a/src/samples/WorkflowCore.Sample02/Program.cs b/src/samples/WorkflowCore.Sample02/Program.cs index 49153381f..c9b87e26a 100644 --- a/src/samples/WorkflowCore.Sample02/Program.cs +++ b/src/samples/WorkflowCore.Sample02/Program.cs @@ -21,7 +21,7 @@ public static void Main(string[] args) host.RegisterWorkflow(); host.Start(); - host.StartWorkflow("Simple Decision Workflow", 1, null); + host.StartWorkflow("Simple Decision Workflow", 1, null, null); Console.ReadLine(); host.Stop(); diff --git a/src/samples/WorkflowCore.Sample05/Program.cs b/src/samples/WorkflowCore.Sample05/Program.cs index ef9f0d265..4e9f77b07 100644 --- a/src/samples/WorkflowCore.Sample05/Program.cs +++ b/src/samples/WorkflowCore.Sample05/Program.cs @@ -22,7 +22,7 @@ public static void Main(string[] args) host.RegisterWorkflow(); host.Start(); - host.StartWorkflow("DeferSampleWorkflow", 1, null); + host.StartWorkflow("DeferSampleWorkflow", 1, null, null); Console.ReadLine(); host.Stop(); diff --git a/src/samples/WorkflowCore.Sample06/Program.cs b/src/samples/WorkflowCore.Sample06/Program.cs index 1805377fb..b0bb656a4 100644 --- a/src/samples/WorkflowCore.Sample06/Program.cs +++ b/src/samples/WorkflowCore.Sample06/Program.cs @@ -22,7 +22,7 @@ public static void Main(string[] args) host.RegisterWorkflow(); host.Start(); - host.StartWorkflow("MultipleOutcomeWorkflow", 1, null); + host.StartWorkflow("MultipleOutcomeWorkflow", 1, null, null); Console.ReadLine(); host.Stop(); diff --git a/src/samples/WorkflowCore.Sample15/Program.cs b/src/samples/WorkflowCore.Sample15/Program.cs index 64675b0de..04d4c2a58 100644 --- a/src/samples/WorkflowCore.Sample15/Program.cs +++ b/src/samples/WorkflowCore.Sample15/Program.cs @@ -18,7 +18,7 @@ public static void Main(string[] args) host.RegisterWorkflow(); host.Start(); - host.StartWorkflow("HelloWorld", 1, null); + host.StartWorkflow("HelloWorld", 1, null, null); Console.ReadLine(); host.Stop(); From de7b37eca15095c9a04f4084c230b46f8736d015 Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 11 Jul 2018 00:20:48 +0800 Subject: [PATCH 2/3] Added validation to persistance of WorkflowInstance property Reference --- test/WorkflowCore.UnitTests/BasePersistenceFixture.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/WorkflowCore.UnitTests/BasePersistenceFixture.cs b/test/WorkflowCore.UnitTests/BasePersistenceFixture.cs index 0b100ce55..97cdd0fa1 100644 --- a/test/WorkflowCore.UnitTests/BasePersistenceFixture.cs +++ b/test/WorkflowCore.UnitTests/BasePersistenceFixture.cs @@ -49,7 +49,8 @@ public void GetWorkflowInstance_should_retrieve_workflow() Status = WorkflowStatus.Runnable, NextExecution = 0, Version = 1, - WorkflowDefinitionId = "My Workflow" + WorkflowDefinitionId = "My Workflow", + Reference = "My Reference" }; workflow.ExecutionPointers.Add(new ExecutionPointer() { @@ -76,7 +77,8 @@ public void PersistWorkflow() NextExecution = 0, Version = 1, WorkflowDefinitionId = "My Workflow", - CreateTime = new DateTime(2000, 1, 1).ToUniversalTime() + CreateTime = new DateTime(2000, 1, 1).ToUniversalTime(), + Reference = "My Reference" }; oldWorkflow.ExecutionPointers.Add(new ExecutionPointer() { @@ -87,6 +89,7 @@ public void PersistWorkflow() var workflowId = Subject.CreateNewWorkflow(oldWorkflow).Result; var newWorkflow = Utils.DeepCopy(oldWorkflow); newWorkflow.Data = oldWorkflow.Data; + newWorkflow.Reference = oldWorkflow.Reference; newWorkflow.NextExecution = 7; newWorkflow.ExecutionPointers.Add(new ExecutionPointer() { Id = Guid.NewGuid().ToString(), Active = true, StepId = 1 }); From 5bc845b7dc44bc58bfced70939577b337b5a0ac8 Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 18 Jul 2018 22:09:04 +0800 Subject: [PATCH 3/3] Updated version to 1.6.5 and simplified call to StartwWrkflow in samples 01 and 02 --- src/WorkflowCore/WorkflowCore.csproj | 6 +++--- src/samples/WorkflowCore.Sample01/Program.cs | 2 +- src/samples/WorkflowCore.Sample02/Program.cs | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/WorkflowCore/WorkflowCore.csproj b/src/WorkflowCore/WorkflowCore.csproj index 070a1cb65..b79394c80 100644 --- a/src/WorkflowCore/WorkflowCore.csproj +++ b/src/WorkflowCore/WorkflowCore.csproj @@ -15,9 +15,9 @@ false false Workflow Core is a light weight workflow engine targeting .NET Standard. - 1.6.4 - 1.6.4.0 - 1.6.4.0 + 1.6.5 + 1.6.5.0 + 1.6.5.0 https://github.com/danielgerlag/workflow-core/raw/master/src/logo.png diff --git a/src/samples/WorkflowCore.Sample01/Program.cs b/src/samples/WorkflowCore.Sample01/Program.cs index 1e96bd198..4a4c82bc7 100644 --- a/src/samples/WorkflowCore.Sample01/Program.cs +++ b/src/samples/WorkflowCore.Sample01/Program.cs @@ -22,7 +22,7 @@ public static void Main(string[] args) host.RegisterWorkflow(); host.Start(); - host.StartWorkflow("HelloWorld", 1, null, null); + host.StartWorkflow("HelloWorld"); Console.ReadLine(); host.Stop(); diff --git a/src/samples/WorkflowCore.Sample02/Program.cs b/src/samples/WorkflowCore.Sample02/Program.cs index c9b87e26a..77b395a26 100644 --- a/src/samples/WorkflowCore.Sample02/Program.cs +++ b/src/samples/WorkflowCore.Sample02/Program.cs @@ -21,7 +21,7 @@ public static void Main(string[] args) host.RegisterWorkflow(); host.Start(); - host.StartWorkflow("Simple Decision Workflow", 1, null, null); + host.StartWorkflow("Simple Decision Workflow"); Console.ReadLine(); host.Stop();