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/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/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..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); + host.StartWorkflow("HelloWorld"); Console.ReadLine(); host.Stop(); diff --git a/src/samples/WorkflowCore.Sample02/Program.cs b/src/samples/WorkflowCore.Sample02/Program.cs index 49153381f..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); + host.StartWorkflow("Simple Decision Workflow"); 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(); 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 });