Skip to content

Commit 65f40ff

Browse files
Thierry Habarthabarthierry-hue
authored andcommitted
Ticket #9 : Manage concurrency
1 parent 081be61 commit 65f40ff

67 files changed

Lines changed: 903 additions & 270 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/CaseManagement.BPMN/ProcessInstance/Processors/BPMNEndEventProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace CaseManagement.BPMN.ProcessInstance.Processors
99
{
1010
public class BPMNEndEventProcessor : IProcessFlowElementProcessor
1111
{
12-
public Type ProcessFlowElementType => typeof(BPMNEndEvent);
12+
public string ProcessFlowElementType => "";
1313

1414
public Task Handle(WorkflowHandlerContext context, CancellationToken token)
1515
{

src/CaseManagement.BPMN/ProcessInstance/Processors/BPMNReceiveTaskProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace CaseManagement.BPMN.ProcessInstance.Processors
88
{
99
public class BPMNReceiveTaskProcessor : IProcessFlowElementProcessor
1010
{
11-
public Type ProcessFlowElementType { get => typeof(BPMNReceiveTask); }
11+
public string ProcessFlowElementType => "";
1212

1313
public Task Handle(WorkflowHandlerContext context, CancellationToken token)
1414
{

src/CaseManagement.BPMN/ProcessInstance/Processors/BPMNServiceTaskProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace CaseManagement.BPMN.ProcessInstance.Processors
88
{
99
public class BPMNServiceTaskProcessor : IProcessFlowElementProcessor
1010
{
11-
public Type ProcessFlowElementType => typeof(BPMNServiceTask);
11+
public string ProcessFlowElementType => "";
1212

1313
public Task Handle(WorkflowHandlerContext context, CancellationToken token)
1414
{

src/CaseManagement.BPMN/ProcessInstance/Processors/BPMNStartEventProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace CaseManagement.BPMN.ProcessInstance.Processors
88
{
99
public class BPMNStartEventProcessor : IProcessFlowElementProcessor
1010
{
11-
public Type ProcessFlowElementType => typeof(BPMNStartEvent);
11+
public string ProcessFlowElementType => "";
1212

1313
public Task Handle(WorkflowHandlerContext context, CancellationToken token)
1414
{

src/CaseManagement.BPMN/ProcessInstance/Processors/BPMNTaskProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace CaseManagement.BPMN.ProcessInstance.Processors
88
{
99
public class BPMNTaskProcessor : IProcessFlowElementProcessor
1010
{
11-
public Type ProcessFlowElementType => typeof(BPMNTask);
11+
public string ProcessFlowElementType => "";
1212

1313
public Task Handle(WorkflowHandlerContext context, CancellationToken token)
1414
{

src/CaseManagement.CMMN/Builders/CMMNHumanTaskBuilder.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,29 @@
22

33
namespace CaseManagement.CMMN.Builders
44
{
5-
public class CMMNHumanTaskBuilder : CMMNTaskBuilder
5+
public class CMMNHumanTaskBuilder : CMMNPlanItemBuilder
66
{
77
public CMMNHumanTaskBuilder(CMMNPlanItem planItem) : base(planItem)
88
{
99
}
1010

11+
public CMMNHumanTaskBuilder SetIsBlocking(bool isBlocking)
12+
{
13+
var cmmnTask = PlanItem.PlanItemDefinitionHumanTask;
14+
cmmnTask.IsBlocking = isBlocking;
15+
return this;
16+
}
17+
18+
public CMMNHumanTaskBuilder SetState(CMMNTaskStates state)
19+
{
20+
var cmmnTask = PlanItem.PlanItemDefinitionHumanTask;
21+
cmmnTask.State = state;
22+
return this;
23+
}
24+
1125
public CMMNHumanTaskBuilder SetFormId(string formId)
1226
{
13-
var cmmnTask = (CMMNHumanTask)PlanItem.PlanItemDefinition;
27+
var cmmnTask = PlanItem.PlanItemDefinitionHumanTask;
1428
cmmnTask.FormId = formId;
1529
return this;
1630
}

src/CaseManagement.CMMN/Builders/CMMNPlanItemBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public CMMNPlanItemBuilder AddExitCriterion(string name, Action<CMMNSEntryBuilde
3333
public CMMNPlanItemBuilder SetManualActivationRule(string name, CMMNExpression expression)
3434
{
3535
var manualActivationRule = new CMMNManualActivationRule(name, expression);
36-
PlanItem.PlanItemControl = manualActivationRule;
36+
PlanItem.SetManualActivationRule(manualActivationRule);
3737
return this;
3838
}
3939
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
using CaseManagement.CMMN.Domains;
2+
using CaseManagement.Workflow.Builders;
3+
using CaseManagement.Workflow.Domains;
4+
using System;
5+
using System.Linq;
6+
7+
namespace CaseManagement.CMMN.Builders
8+
{
9+
public class CMMNProcessFlowInstanceBuilder : ProcessFlowInstanceBuilder
10+
{
11+
private CMMNProcessFlowInstanceBuilder(string processFlowTemplateId, string processFlowName) : base(processFlowTemplateId, processFlowName) { }
12+
13+
public override ProcessFlowInstanceBuilder AddElement(ProcessFlowInstanceElement node)
14+
{
15+
return base.AddElement(node);
16+
}
17+
18+
public CMMNProcessFlowInstanceBuilder AddCMMNTask(string id, string name, Action<CMMNTaskBuilder> callback)
19+
{
20+
var planItemDef = new CMMNTask(name);
21+
var processTask = CMMNPlanItem.New(id, name, planItemDef);
22+
callback(new CMMNTaskBuilder(processTask));
23+
AddElement(processTask);
24+
return this;
25+
}
26+
27+
public CMMNProcessFlowInstanceBuilder AddCMMNHumanTask(string id, string name, Action<CMMNHumanTaskBuilder> callback)
28+
{
29+
var planItemDef = new CMMNHumanTask(name);
30+
var humanTask = CMMNPlanItem.New(id, name, planItemDef);
31+
callback(new CMMNHumanTaskBuilder(humanTask));
32+
AddElement(humanTask);
33+
return this;
34+
}
35+
36+
public CMMNProcessFlowInstanceBuilder AddCMMNProcessTask(string id, string name, Action<CMMNProcessTaskBuilder> callback)
37+
{
38+
var planItemDef = new CMMNProcessTask(name);
39+
var processTask = CMMNPlanItem.New(id, name, planItemDef);
40+
callback(new CMMNProcessTaskBuilder(processTask));
41+
AddElement(processTask);
42+
return this;
43+
}
44+
45+
public CMMNProcessFlowInstanceBuilder AddPlanItem(CMMNPlanItem planItem)
46+
{
47+
AddElement(planItem);
48+
return this;
49+
}
50+
51+
public override ProcessFlowInstance Build()
52+
{
53+
return CMMNProcessFlowInstance.NewCMMNProcess(ProcessFlowTemplateId, ProcessFlowName, Elements.Cast<CMMNPlanItem>().ToList(), Connectors);
54+
}
55+
56+
public static new CMMNProcessFlowInstanceBuilder New(string processFlowTemplateId, string processFlowName)
57+
{
58+
return new CMMNProcessFlowInstanceBuilder(processFlowTemplateId, processFlowName);
59+
}
60+
}
61+
}

src/CaseManagement.CMMN/Builders/CMMNProcessTaskBuilder.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,36 @@
22

33
namespace CaseManagement.CMMN.Builders
44
{
5-
public class CMMNProcessTaskBuilder : CMMNTaskBuilder
5+
public class CMMNProcessTaskBuilder : CMMNPlanItemBuilder
66
{
77
public CMMNProcessTaskBuilder(CMMNPlanItem planItem) : base(planItem)
88
{
99
}
1010

11+
public CMMNProcessTaskBuilder SetIsBlocking(bool isBlocking)
12+
{
13+
var cmmnTask = PlanItem.PlanItemDefinitionProcessTask;
14+
cmmnTask.IsBlocking = isBlocking;
15+
return this;
16+
}
17+
18+
public CMMNProcessTaskBuilder SetState(CMMNTaskStates state)
19+
{
20+
var cmmnTask = PlanItem.PlanItemDefinitionProcessTask;
21+
cmmnTask.State = state;
22+
return this;
23+
}
24+
1125
public CMMNProcessTaskBuilder SetProcessRef(string processRef)
1226
{
13-
var cmmnTask = (CMMNProcessTask)PlanItem.PlanItemDefinition;
27+
var cmmnTask = PlanItem.PlanItemDefinitionProcessTask;
1428
cmmnTask.ProcessRef = processRef;
1529
return this;
1630
}
1731

1832
public CMMNProcessTaskBuilder AddMapping(string sourceRef, string targetRef)
1933
{
20-
var cmmnTask = (CMMNProcessTask)PlanItem.PlanItemDefinition;
34+
var cmmnTask = PlanItem.PlanItemDefinitionProcessTask;
2135
cmmnTask.Mappings.Add(new CMMNParameterMapping
2236
{
2337
SourceRef = new CMMNParameter { Name = sourceRef },

src/CaseManagement.CMMN/Builders/CMMNTaskBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ public CMMNTaskBuilder(CMMNPlanItem planItem) : base(planItem)
1010

1111
public CMMNTaskBuilder SetIsBlocking(bool isBlocking)
1212
{
13-
var cmmnTask = (CMMNTask)PlanItem.PlanItemDefinition;
13+
var cmmnTask = PlanItem.PlanItemDefinitionTask;
1414
cmmnTask.IsBlocking = isBlocking;
1515
return this;
1616
}
1717

1818
public CMMNTaskBuilder SetState(CMMNTaskStates state)
1919
{
20-
var cmmnTask = (CMMNTask)PlanItem.PlanItemDefinition;
20+
var cmmnTask = PlanItem.PlanItemDefinitionTask;
2121
cmmnTask.State = state;
2222
return this;
2323
}

0 commit comments

Comments
 (0)