Skip to content

Commit 3335b81

Browse files
Ticket #106 & #105 : Pass tokens + start to manage notifications
1 parent a898957 commit 3335b81

118 files changed

Lines changed: 2134 additions & 275 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.CMMN.AspNetCore/Apis/CasePlanInstancesController.cs

Lines changed: 54 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,13 @@ public async Task<IActionResult> Launch(string id, CancellationToken token)
8787
}
8888
}
8989

90-
[HttpGet("{id}/suspend")]
90+
[HttpPost("{id}/suspend")]
9191
[Authorize("suspend_caseplaninstance")]
92-
public async Task<IActionResult> Suspend(string id, CancellationToken token)
92+
public async Task<IActionResult> Suspend(string id, [FromBody] SuspendCommand suspendCommand, CancellationToken token)
9393
{
9494
try
9595
{
96+
suspendCommand.CasePlanInstanceId = id;
9697
await _mediator.Send(new SuspendCommand(id, null), token);
9798
return new OkResult();
9899
}
@@ -123,13 +124,15 @@ public async Task<IActionResult> Suspend(string id, CancellationToken token)
123124
}
124125
}
125126

126-
[HttpGet("{id}/suspend/{elt}")]
127+
[HttpPost("{id}/suspend/{elt}")]
127128
[Authorize("suspend_caseplaninstance")]
128-
public async Task<IActionResult> Suspend(string id, string elt, CancellationToken token)
129+
public async Task<IActionResult> Suspend(string id, string elt, [FromBody] SuspendCommand suspendCommand, CancellationToken token)
129130
{
130131
try
131132
{
132-
await _mediator.Send(new SuspendCommand(id, elt), token);
133+
suspendCommand.CasePlanInstanceId = id;
134+
suspendCommand.CasePlanInstanceElementId = elt;
135+
await _mediator.Send(suspendCommand, token);
133136
return new OkResult();
134137
}
135138
catch (UnknownCasePlanInstanceException)
@@ -159,13 +162,14 @@ public async Task<IActionResult> Suspend(string id, string elt, CancellationToke
159162
}
160163
}
161164

162-
[HttpGet("{id}/reactivate")]
165+
[HttpPost("{id}/reactivate")]
163166
[Authorize("reactivate_caseplaninstance")]
164-
public async Task<IActionResult> Reactivate(string id, CancellationToken token)
167+
public async Task<IActionResult> Reactivate(string id, [FromBody] ReactivateCommand reactivateCommand, CancellationToken token)
165168
{
166169
try
167170
{
168-
await _mediator.Send(new ReactivateCommand(id, null), token);
171+
reactivateCommand.CaseInstanceId = id;
172+
await _mediator.Send(reactivateCommand, token);
169173
return new OkResult();
170174
}
171175
catch (UnknownCasePlanInstanceException)
@@ -195,13 +199,15 @@ public async Task<IActionResult> Reactivate(string id, CancellationToken token)
195199
}
196200
}
197201

198-
[HttpGet("{id}/reactivate/{elt}")]
202+
[HttpPost("{id}/reactivate/{elt}")]
199203
[Authorize("reactivate_caseplaninstance")]
200-
public async Task<IActionResult> Reactivate(string id, string elt, CancellationToken token)
204+
public async Task<IActionResult> Reactivate(string id, string elt, [FromBody] ReactivateCommand reactivateCommand, CancellationToken token)
201205
{
202206
try
203207
{
204-
await _mediator.Send(new ReactivateCommand(id, elt), token);
208+
reactivateCommand.CaseInstanceId = id;
209+
reactivateCommand.CaseInstanceElementId = elt;
210+
await _mediator.Send(reactivateCommand, token);
205211
return new OkResult();
206212
}
207213
catch (UnknownCasePlanInstanceException)
@@ -231,13 +237,14 @@ public async Task<IActionResult> Reactivate(string id, string elt, CancellationT
231237
}
232238
}
233239

234-
[HttpGet("{id}/resume")]
240+
[HttpPost("{id}/resume")]
235241
[Authorize("resume_caseplaninstance")]
236-
public async Task<IActionResult> Resume(string id, CancellationToken token)
242+
public async Task<IActionResult> Resume(string id, [FromBody] ResumeCommand resumeCommand, CancellationToken token)
237243
{
238244
try
239245
{
240-
await _mediator.Send(new ResumeCommand(id, null), token);
246+
resumeCommand.CasePlanInstanceId = id;
247+
await _mediator.Send(resumeCommand, token);
241248
return new OkResult();
242249
}
243250
catch (UnknownCasePlanInstanceException)
@@ -260,13 +267,15 @@ public async Task<IActionResult> Resume(string id, CancellationToken token)
260267
}
261268
}
262269

263-
[HttpGet("{id}/resume/{elt}")]
270+
[HttpPost("{id}/resume/{elt}")]
264271
[Authorize("resume_caseplaninstance")]
265-
public async Task<IActionResult> Resume(string id, string elt, CancellationToken token)
272+
public async Task<IActionResult> Resume(string id, string elt, [FromBody] ResumeCommand resumeCommand, CancellationToken token)
266273
{
267274
try
268275
{
269-
await _mediator.Send(new ResumeCommand(id, elt), token);
276+
resumeCommand.CasePlanInstanceId = id;
277+
resumeCommand.CasePlanInstanceElementId = elt;
278+
await _mediator.Send(resumeCommand, token);
270279
return new OkResult();
271280
}
272281
catch (UnknownCasePlanInstanceException)
@@ -327,13 +336,14 @@ public async Task<IActionResult> Complete(string id, string elt, [FromBody] Comp
327336
}
328337
}
329338

330-
[HttpGet("{id}/terminate")]
339+
[HttpPost("{id}/terminate")]
331340
[Authorize("terminate_caseplaninstance")]
332-
public async Task<IActionResult> Terminate(string id, CancellationToken token)
341+
public async Task<IActionResult> Terminate(string id, [FromBody] TerminateCommand terminateCommand, CancellationToken token)
333342
{
334343
try
335344
{
336-
await _mediator.Send(new TerminateCommand(id, null), token);
345+
terminateCommand.CaseInstanceId = id;
346+
await _mediator.Send(terminateCommand, token);
337347
return new OkResult();
338348
}
339349
catch (UnknownCasePlanInstanceException)
@@ -363,13 +373,15 @@ public async Task<IActionResult> Terminate(string id, CancellationToken token)
363373
}
364374
}
365375

366-
[HttpGet("{id}/terminate/{elt}")]
376+
[HttpPost("{id}/terminate/{elt}")]
367377
[Authorize("terminate_caseplaninstance")]
368-
public async Task<IActionResult> Terminate(string id, string elt, CancellationToken token)
378+
public async Task<IActionResult> Terminate(string id, string elt, [FromBody] TerminateCommand terminateCommand, CancellationToken token)
369379
{
370380
try
371381
{
372-
await _mediator.Send(new TerminateCommand(id, elt), token);
382+
terminateCommand.CaseInstanceId = id;
383+
terminateCommand.CaseInstanceElementId = elt;
384+
await _mediator.Send(terminateCommand, token);
373385
return new OkResult();
374386
}
375387
catch (UnknownCasePlanInstanceException)
@@ -399,13 +411,14 @@ public async Task<IActionResult> Terminate(string id, string elt, CancellationTo
399411
}
400412
}
401413

402-
[HttpGet("{id}/close")]
414+
[HttpPost("{id}/close")]
403415
[Authorize("close_caseplaninstance")]
404-
public async Task<IActionResult> Close(string id, CancellationToken token)
416+
public async Task<IActionResult> Close(string id, [FromBody] CloseCommand closeCommand, CancellationToken token)
405417
{
406418
try
407419
{
408-
await _mediator.Send(new CloseCommand(id), token);
420+
closeCommand.CasePlanInstanceId = id;
421+
await _mediator.Send(closeCommand, token);
409422
return new OkResult();
410423
}
411424
catch (UnknownCasePlanInstanceException)
@@ -428,13 +441,15 @@ public async Task<IActionResult> Close(string id, CancellationToken token)
428441
}
429442
}
430443

431-
[HttpGet("{id}/activate/{elt}")]
444+
[HttpPost("{id}/activate/{elt}")]
432445
[Authorize("activate_caseplaninstance")]
433-
public async Task<IActionResult> Activate(string id, string elt, CancellationToken token)
446+
public async Task<IActionResult> Activate(string id, string elt, [FromBody] ActivateCommand activateCommand, CancellationToken token)
434447
{
435448
try
436449
{
437-
await _mediator.Send(new ActivateCommand(id, elt), token);
450+
activateCommand.CasePlanInstanceId = id;
451+
activateCommand.CasePlanElementInstanceId = elt;
452+
await _mediator.Send(activateCommand, token);
438453
return new OkResult();
439454
}
440455
catch (UnknownCasePlanInstanceException)
@@ -461,13 +476,15 @@ public async Task<IActionResult> Activate(string id, string elt, CancellationTok
461476
}
462477
}
463478

464-
[HttpGet("{id}/disable/{elt}")]
479+
[HttpPost("{id}/disable/{elt}")]
465480
[Authorize("disable_caseplaninstance")]
466-
public async Task<IActionResult> Disable(string id, string elt, CancellationToken token)
481+
public async Task<IActionResult> Disable(string id, string elt, [FromBody] DisableCommand disableCommand, CancellationToken token)
467482
{
468483
try
469484
{
470-
await _mediator.Send(new DisableCommand(id, elt), token);
485+
disableCommand.CasePlanInstanceId = id;
486+
disableCommand.CasePlanElementInstanceId = elt;
487+
await _mediator.Send(disableCommand, token);
471488
return new OkResult();
472489
}
473490
catch (UnknownCasePlanInstanceException)
@@ -494,13 +511,15 @@ public async Task<IActionResult> Disable(string id, string elt, CancellationToke
494511
}
495512
}
496513

497-
[HttpGet("{id}/reenable/{elt}")]
514+
[HttpPost("{id}/reenable/{elt}")]
498515
[Authorize("reenable_caseplaninstance")]
499-
public async Task<IActionResult> Reenable(string id, string elt, CancellationToken token)
516+
public async Task<IActionResult> Reenable(string id, string elt, [FromBody] ReenableCommand reenableCommand, CancellationToken token)
500517
{
501518
try
502519
{
503-
await _mediator.Send(new ReenableCommand(id, elt), token);
520+
reenableCommand.CasePlanInstanceId = id;
521+
reenableCommand.CasePlanElementInstanceId = elt;
522+
await _mediator.Send(reenableCommand, token);
504523
return new OkResult();
505524
}
506525
catch (UnknownCasePlanInstanceException)

src/CaseManagement.CMMN.Persistence.EF/DomainMapping/SubscriptionMapper.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using CaseManagement.CMMN.Infrastructure.ExternalEvts;
22
using CaseManagement.CMMN.Persistence.EF.Models;
3+
using Newtonsoft.Json;
4+
using System.Collections.Generic;
35

46
namespace CaseManagement.CMMN.Persistence.EF.DomainMapping
57
{
@@ -14,7 +16,8 @@ public static Subscription ToDomain(this SubscriptionModel sub)
1416
EventName = sub.EventName,
1517
CasePlanElementInstanceId = sub.CasePlanElementInstanceId,
1618
CasePlanInstanceId = sub.CasePlanInstanceId,
17-
IsCaptured = sub.IsCaptured
19+
IsCaptured = sub.IsCaptured,
20+
Parameters = string.IsNullOrEmpty(sub.Parameters) ? new Dictionary<string, string>() : JsonConvert.DeserializeObject<Dictionary<string, string>> (sub.Parameters)
1821
};
1922
}
2023

@@ -27,7 +30,8 @@ public static SubscriptionModel ToModel(this Subscription sub)
2730
EventName = sub.EventName,
2831
CasePlanElementInstanceId = sub.CasePlanElementInstanceId,
2932
CasePlanInstanceId = sub.CasePlanInstanceId,
30-
IsCaptured = sub.IsCaptured
33+
IsCaptured = sub.IsCaptured,
34+
Parameters = sub.Parameters == null ? null : JsonConvert.SerializeObject(sub.Parameters)
3135
};
3236
}
3337
}

src/CaseManagement.CMMN.Persistence.EF/Models/SubscriptionModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class SubscriptionModel
99
public string CasePlanInstanceId { get; set; }
1010
public string CasePlanElementInstanceId { get; set; }
1111
public bool IsCaptured { get; set; }
12+
public string Parameters { get; set; }
1213
public DateTime? CaptureDateTime { get; set; }
1314
public DateTime CreationDateTime { get; set; }
1415
}

src/CaseManagement.CMMN.Persistence.EF/Persistence/SubscriberRepository.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using CaseManagement.CMMN.Persistence.EF.DomainMapping;
33
using CaseManagement.CMMN.Persistence.EF.Models;
44
using Microsoft.EntityFrameworkCore;
5+
using Newtonsoft.Json;
56
using System;
67
using System.Threading;
78
using System.Threading.Tasks;
@@ -26,20 +27,20 @@ public async Task<Subscription> Get(string casePlanInstanceId, string casePlanEl
2627
}
2728
}
2829

29-
public async Task<bool> TryReset(string casePlanInstanceId, string casePlanElementInstanceId, string evtName, CancellationToken token)
30+
public async Task<Subscription> TryReset(string casePlanInstanceId, string casePlanElementInstanceId, string evtName, CancellationToken token)
3031
{
3132
using (await _dbContext.Lock())
3233
{
3334
var result = await _dbContext.SubscriptionLst.FirstOrDefaultAsync(_ => _.CasePlanInstanceId == casePlanInstanceId && _.CasePlanElementInstanceId == casePlanElementInstanceId && _.EventName == evtName, token);
3435
if (result == null)
3536
{
36-
return false;
37+
return null;
3738
}
3839

3940
result.IsCaptured = false;
4041
result.CaptureDateTime = null;
4142
await _dbContext.SaveChangesAsync(token);
42-
return true;
43+
return result.ToDomain();
4344
}
4445
}
4546

@@ -100,6 +101,7 @@ public async Task<bool> Update(Subscription subscription, CancellationToken canc
100101

101102
result.IsCaptured = subscription.IsCaptured;
102103
result.CaptureDateTime = subscription.CaptureDateTime;
104+
result.Parameters = subscription.Parameters == null ? null : JsonConvert.SerializeObject(subscription.Parameters);
103105
await _dbContext.SaveChangesAsync(cancellationToken);
104106
return true;
105107
}

src/CaseManagement.CMMN/Builders/CaseEltInstanceBuilder.cs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,21 @@ public BaseCaseEltInstance Build()
3333
public abstract class BaseCasePlanItemEltInstanceBuilder : CaseEltInstanceBuilder
3434
{
3535
private ICollection<CriteriaBuilder> _entryCriterions;
36+
private int _version = 0;
3637

3738
public BaseCasePlanItemEltInstanceBuilder(string casePlanInstanceId, string eltId, string name) : base(casePlanInstanceId, eltId, name)
3839
{
3940
_entryCriterions = new List<CriteriaBuilder>();
4041
}
4142

43+
protected int Version => _version;
44+
45+
public BaseCasePlanItemEltInstanceBuilder SetVersion(int version)
46+
{
47+
_version = version;
48+
return this;
49+
}
50+
4251

4352
public BaseCasePlanItemEltInstanceBuilder AddEntryCriteria(string name, Action<CriteriaBuilder> callback = null)
4453
{
@@ -98,15 +107,16 @@ protected override BaseCaseEltInstance InternalBuild()
98107
var result = new EmptyTaskElementInstance
99108
{
100109
ManualActivationRule = ManualActivationRule,
101-
RepetitionRule = RepetitionRule
110+
RepetitionRule = RepetitionRule,
111+
NbOccurrence = Version
102112
};
103113
SeedCasePlanItem(result);
104114
return result;
105115
}
106116

107117
protected override string BuildId()
108118
{
109-
return EmptyTaskElementInstance.BuildId(CasePlanInstanceId, EltId, 0);
119+
return EmptyTaskElementInstance.BuildId(CasePlanInstanceId, EltId, Version);
110120
}
111121
}
112122

@@ -126,15 +136,16 @@ protected override BaseCaseEltInstance InternalBuild()
126136
ManualActivationRule = ManualActivationRule,
127137
RepetitionRule = RepetitionRule,
128138
Implemention = Implementation,
129-
InputParameters = InputParameters
139+
InputParameters = InputParameters,
140+
NbOccurrence = Version
130141
};
131142
SeedCasePlanItem(result);
132143
return result;
133144
}
134145

135146
protected override string BuildId()
136147
{
137-
return HumanTaskElementInstance.BuildId(CasePlanInstanceId, EltId, 0);
148+
return HumanTaskElementInstance.BuildId(CasePlanInstanceId, EltId, Version);
138149
}
139150
}
140151

@@ -147,13 +158,14 @@ public MilestoneInstanceBuilder(string casePlanInstanceId, string id, string nam
147158
protected override BaseCaseEltInstance InternalBuild()
148159
{
149160
var result = new MilestoneElementInstance();
161+
result.NbOccurrence = Version;
150162
SeedCasePlanItem(result);
151163
return result;
152164
}
153165

154166
protected override string BuildId()
155167
{
156-
return MilestoneElementInstance.BuildId(CasePlanInstanceId, EltId, 0);
168+
return MilestoneElementInstance.BuildId(CasePlanInstanceId, EltId, Version);
157169
}
158170
}
159171

@@ -189,15 +201,16 @@ protected override BaseCaseEltInstance InternalBuild()
189201
{
190202
var result = new TimerEventListener
191203
{
192-
TimerExpression = TimerExpression
204+
TimerExpression = TimerExpression,
205+
NbOccurrence = Version
193206
};
194207
SeedCasePlanItem(result);
195208
return result;
196209
}
197210

198211
protected override string BuildId()
199212
{
200-
return TimerEventListener.BuildId(CasePlanInstanceId, EltId, 0);
213+
return TimerEventListener.BuildId(CasePlanInstanceId, EltId, Version);
201214
}
202215
}
203216
}

0 commit comments

Comments
 (0)