Skip to content

Commit ac44a40

Browse files
Thierry Habarthabarthierry-hue
authored andcommitted
Ticket #17 : Display the workflow definition
1 parent 2afe98a commit ac44a40

File tree

295 files changed

+6475
-2706
lines changed

Some content is hidden

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

295 files changed

+6475
-2706
lines changed

CaseManagement.sln

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.28307.421
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.29418.71
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04. Tests", "04. Tests", "{A632EFC3-730B-46D7-B669-91962DFA8947}"
77
EndProject

src/CaseManagement.CMMN.Benchmark/BenchmarkDotNet.Artifacts/results/CaseManagement.CMMN.Benchmark.CaseInstanceControllerBenchmark-measurements.csv

Lines changed: 102 additions & 112 deletions
Large diffs are not rendered by default.

src/CaseManagement.CMMN.Benchmark/BenchmarkDotNet.Artifacts/results/CaseManagement.CMMN.Benchmark.CaseInstanceControllerBenchmark-report-github.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Intel Core i7-8750H CPU 2.20GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical
88
Job=InProcess Toolchain=InProcessEmitToolchain
99

1010
```
11-
| Method | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
12-
|---------------------- |-----------:|----------:|----------:|------:|------:|------:|----------:|
13-
| CreateCaseWithOneTask | 2.904 ms | 0.1368 ms | 0.3968 ms | - | - | - | 7.2 KB |
14-
| LaunchCaseWithOneTask | 107.478 ms | 2.0267 ms | 1.8958 ms | - | - | - | 7.2 KB |
11+
| Method | Mean | Error | StdDev | Median | Gen 0 | Gen 1 | Gen 2 | Allocated |
12+
|---------------------- |-----------:|----------:|----------:|-----------:|----------:|------:|------:|----------:|
13+
| CreateCaseWithOneTask | 2.571 ms | 0.1334 ms | 0.3651 ms | 2.455 ms | - | - | - | 7.2 KB |
14+
| LaunchCaseWithOneTask | 106.767 ms | 1.1383 ms | 1.0648 ms | 106.901 ms | 3000.0000 | - | - | 7.2 KB |

src/CaseManagement.CMMN.Benchmark/CaseInstanceControllerBenchmark.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace CaseManagement.CMMN.Benchmark
1515
[RPlotExporter]
1616
public class CaseInstanceControllerBenchmark
1717
{
18+
private const int MS = 400;
1819
private HttpClient _client;
1920

2021
[GlobalSetup]
@@ -97,14 +98,14 @@ public async Task PollCaseInstanceCreated(string id)
9798
var httpResult = await _client.GetAsync($"http://localhost/case-instances/{id}");
9899
if (!httpResult.IsSuccessStatusCode)
99100
{
101+
Thread.Sleep(MS);
100102
await PollCaseInstanceCreated(id);
101103
return;
102104
}
103105
}
104106

105107
public async Task PollCaseInstanceCompleted(string id)
106108
{
107-
const int MS = 400;
108109
var httpResult = await _client.GetAsync($"http://localhost/case-instances/{id}");
109110
if (!httpResult.IsSuccessStatusCode)
110111
{

src/CaseManagement.CMMN.CMIS/ServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public static class ServiceCollectionExtensions
77
{
88
public static IServiceCollection AddCMIS(this IServiceCollection services)
99
{
10-
services.AddTransient<ICaseFileItemRepository, CMISDirectoryCaseFileItemRepository>();
10+
// services.AddTransient<ICaseFileItemRepository, CMISDirectoryCaseFileItemRepository>();
1111
services.AddSingleton<ICMISSessionFactory, CMISSessionFactory>();
1212
return services;
1313
}

src/CaseManagement.CMMN.Host/Startup.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
using Microsoft.AspNetCore.Hosting;
88
using Microsoft.Extensions.DependencyInjection;
99
using Microsoft.Extensions.Logging;
10+
using System;
11+
using System.Collections.Concurrent;
1012
using System.Collections.Generic;
1113
using System.IO;
1214
using System.Linq;
@@ -63,6 +65,46 @@ public void ConfigureServices(IServiceCollection services)
6365
}
6466
}
6567
}
68+
})
69+
.AddStatistics(new ConcurrentBag<DailyStatisticAggregate>
70+
{
71+
new DailyStatisticAggregate
72+
{
73+
DateTime = DateTime.UtcNow.AddDays(-8).Date,
74+
NbActiveCases = 2,
75+
NbClosedCases = 1,
76+
NbCompletedCases = 10,
77+
NbFailedCases = 11,
78+
NbSuspendedCases = 12,
79+
NbTerminatedCases = 20,
80+
NbConfirmedActivation = 2,
81+
NbCreatedActivation = 2,
82+
NbConfirmedForm = 1,
83+
NbCreatedForm = 1
84+
},
85+
new DailyStatisticAggregate
86+
{
87+
DateTime = DateTime.UtcNow.AddDays(-1).Date,
88+
NbActiveCases = 10,
89+
NbClosedCases = 10,
90+
NbCompletedCases = 10,
91+
NbFailedCases = 0,
92+
NbSuspendedCases = 0,
93+
NbTerminatedCases = 0,
94+
NbConfirmedActivation = 10,
95+
NbConfirmedForm = 2,
96+
NbCreatedForm = 0,
97+
NbCreatedActivation = 3
98+
},
99+
new DailyStatisticAggregate
100+
{
101+
DateTime = DateTime.UtcNow.Date,
102+
NbActiveCases = 2,
103+
NbConfirmedActivation = 1,
104+
NbConfirmedForm = 1,
105+
NbCreatedForm = 1,
106+
NbCreatedActivation = 1
107+
}
66108
});
67109
}
68110

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
using CaseManagement.CMMN.Domains;
2+
using CaseManagement.CMMN.Extensions;
3+
using CaseManagement.CMMN.Persistence;
4+
using CaseManagement.CMMN.Persistence.Parameters;
5+
using CaseManagement.CMMN.Persistence.Responses;
6+
using Microsoft.AspNetCore.Http;
7+
using Microsoft.AspNetCore.Mvc;
8+
using Newtonsoft.Json.Linq;
9+
using System.Collections.Generic;
10+
using System.Linq;
11+
using System.Threading.Tasks;
12+
13+
namespace CaseManagement.CMMN.Apis
14+
{
15+
[Route(CMMNConstants.RouteNames.CaseActivations)]
16+
public class CaseActivationsController : Controller
17+
{
18+
private readonly IActivationQueryRepository _activationQueryRepository;
19+
20+
public CaseActivationsController(IActivationQueryRepository activationQueryRepository)
21+
{
22+
_activationQueryRepository = activationQueryRepository;
23+
}
24+
25+
[HttpGet(".search")]
26+
public async Task<IActionResult> Search()
27+
{
28+
var query = HttpContext.Request.Query;
29+
var result = await _activationQueryRepository.Find(ExtractFindParameter(query, null));
30+
return new OkObjectResult(ToDto(result));
31+
}
32+
33+
private static JObject ToDto(FindResponse<CaseActivationAggregate> resp)
34+
{
35+
return new JObject
36+
{
37+
{ "start_index", resp.StartIndex },
38+
{ "total_length", resp.TotalLength },
39+
{ "count", resp.Count },
40+
{ "content", new JArray(resp.Content.Select(r => {
41+
var result = new JObject
42+
{
43+
{ "case_definition_id", r.WorkflowId },
44+
{ "case_instance_id", r.WorkflowInstanceId},
45+
{ "case_instance_name", r.WorkflowInstanceName },
46+
{ "case_element_id", r.WorkflowElementId },
47+
{ "case_element_instance_id", r.WorkflowElementInstanceId },
48+
{ "case_element_name", r.WorkflowElementName },
49+
{ "create_datetime", r.CreateDateTime },
50+
{ "performer", r.Performer }
51+
};
52+
return result;
53+
})) }
54+
};
55+
}
56+
57+
private static FindCaseActivationsParameter ExtractFindParameter(IQueryCollection query, IEnumerable<string> roleIds)
58+
{
59+
string caseDefinitionId;
60+
var parameter = new FindCaseActivationsParameter();
61+
parameter.ExtractFindParameter(query);
62+
if (query.TryGet("case_definition_id", out caseDefinitionId))
63+
{
64+
parameter.CaseDefinitionId = caseDefinitionId;
65+
}
66+
67+
return parameter;
68+
}
69+
}
70+
}

src/CaseManagement.CMMN/Apis/CaseDefinitionsController.cs

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ namespace CaseManagement.CMMN.Apis
1414
[Route(CMMNConstants.RouteNames.CaseDefinitions)]
1515
public class CaseDefinitionsController : Controller
1616
{
17-
private readonly ICMMNWorkflowDefinitionQueryRepository _queryRepository;
17+
private readonly IWorkflowDefinitionQueryRepository _queryRepository;
1818
private readonly IStatisticQueryRepository _staticQueryRepository;
1919

20-
public CaseDefinitionsController(ICMMNWorkflowDefinitionQueryRepository queryRepository, IStatisticQueryRepository statisticQueryRepository)
20+
public CaseDefinitionsController(IWorkflowDefinitionQueryRepository queryRepository, IStatisticQueryRepository statisticQueryRepository)
2121
{
2222
_queryRepository = queryRepository;
2323
_staticQueryRepository = statisticQueryRepository;
@@ -41,9 +41,9 @@ public async Task<IActionResult> GetHistory(string id)
4141
var result = await _staticQueryRepository.FindById(id);
4242
if (result == null)
4343
{
44-
result = new CMMNWorkflowDefinitionStatisticAggregate
44+
result = new CaseDefinitionStatisticAggregate
4545
{
46-
WorkflowDefinitionId = id,
46+
CaseDefinitionId = id,
4747
NbInstances = 0
4848
};
4949
}
@@ -59,7 +59,7 @@ public async Task<IActionResult> Search()
5959
return new OkObjectResult(ToDto(result));
6060
}
6161

62-
private static JObject ToDto(FindResponse<CMMNWorkflowDefinition> resp)
62+
private static JObject ToDto(FindResponse<CaseDefinition> resp)
6363
{
6464
return new JObject
6565
{
@@ -77,7 +77,7 @@ private static JObject ToDto(FindResponse<CMMNWorkflowDefinition> resp)
7777
};
7878
}
7979

80-
private static JObject ToDto(CMMNWorkflowDefinition def)
80+
private static JObject ToDto(CaseDefinition def)
8181
{
8282
return new JObject
8383
{
@@ -89,53 +89,36 @@ private static JObject ToDto(CMMNWorkflowDefinition def)
8989
};
9090
}
9191

92-
private static JObject ToDto(CMMNWorkflowDefinitionStatisticAggregate def)
92+
private static JObject ToDto(CaseDefinitionStatisticAggregate def)
9393
{
9494
return new JObject
9595
{
96-
{ "id", def.WorkflowDefinitionId },
96+
{ "id", def.CaseDefinitionId },
9797
{ "nb_instances", def.NbInstances },
9898
{ "elements", new JArray(def.Statistics.Select(s =>
9999
new JObject
100100
{
101101
{ "nb_instances", s.NbInstances },
102-
{ "element", s.ElementDefinitionId }
102+
{ "element", s.CaseElementDefinitionId }
103103
}
104104
))}
105105
};
106106
}
107107

108108
private static FindWorkflowDefinitionsParameter ExtractFindParameter(IQueryCollection query)
109109
{
110-
int startIndex;
111-
int count;
112-
string orderBy;
113110
string caseFile;
114-
FindOrders findOrder;
111+
string text;
115112
var parameter = new FindWorkflowDefinitionsParameter();
116-
if (query.TryGet("start_index", out startIndex))
117-
{
118-
parameter.StartIndex = startIndex;
119-
}
120-
121-
if (query.TryGet("count", out count))
122-
{
123-
parameter.Count = count;
124-
}
125-
126-
if (query.TryGet("order_by", out orderBy))
127-
{
128-
parameter.OrderBy = orderBy;
129-
}
130-
131-
if (query.TryGet("order", out findOrder))
113+
parameter.ExtractFindParameter(query);
114+
if (query.TryGet("case_file", out caseFile))
132115
{
133-
parameter.Order = findOrder;
116+
parameter.CaseFileId = caseFile;
134117
}
135118

136-
if (query.TryGet("case_file", out caseFile))
119+
if (query.TryGet("text", out text))
137120
{
138-
parameter.CaseFileId = caseFile;
121+
parameter.Text = text;
139122
}
140123

141124
return parameter;

src/CaseManagement.CMMN/Apis/CaseFilesController.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ namespace CaseManagement.CMMN.Apis
1414
[Route(CMMNConstants.RouteNames.CaseFiles)]
1515
public class CaseFilesController : Controller
1616
{
17-
private readonly ICMMNWorkflowFileQueryRepository _queryRepository;
17+
private readonly IWorkflowFileQueryRepository _queryRepository;
1818

19-
public CaseFilesController(ICMMNWorkflowFileQueryRepository queryRepository)
19+
public CaseFilesController(IWorkflowFileQueryRepository queryRepository)
2020
{
2121
_queryRepository = queryRepository;
2222
}

src/CaseManagement.CMMN/Apis/CaseFormInstancesController.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,17 @@ public CaseFormInstancesController(IFormInstanceQueryRepository formInstanceQuer
2626
_roleQueryRepository = roleQueryRepository;
2727
}
2828

29+
[HttpGet(".search")]
30+
public async Task<IActionResult> Search()
31+
{
32+
var query = HttpContext.Request.Query;
33+
var result = await _formInstanceQueryRepository.Find(ExtractFindFormInstanceParameter(query, null));
34+
return new OkObjectResult(ToDto(result));
35+
}
36+
2937
[HttpGet(".me/search")]
3038
[Authorize("IsConnected")]
31-
public async Task<IActionResult> Search()
39+
public async Task<IActionResult> SearchMyCaseFormInstances()
3240
{
3341
var nameIdentifier = this.GetNameIdentifier();
3442
var userRoles = await _roleQueryRepository.FindRolesByUser(nameIdentifier);
@@ -48,8 +56,14 @@ private static JObject ToDto(FindResponse<FormInstanceAggregate> resp)
4856
{ "content", new JArray(resp.Content.Select(r => {
4957
var result = new JObject
5058
{
59+
{ "id", r.Id },
5160
{ "create_datetime", r.CreateDateTime },
5261
{ "update_datetime", r.UpdateDateTime },
62+
{ "performer", r.RoleId },
63+
{ "case_definition_id", r.CaseDefinitionId },
64+
{ "case_instance_id", r.CaseElementInstanceId },
65+
{ "case_element_definition_id", r.CaseElementDefinitionId },
66+
{ "case_element_instance_id", r.CaseElementInstanceId },
5367
{ "status", Enum.GetName(typeof(FormInstanceStatus), r.Status).ToLowerInvariant() },
5468
{ "form_id", r.FormId }
5569
};
@@ -89,11 +103,17 @@ private static JObject ToDto(FindResponse<FormInstanceAggregate> resp)
89103

90104
private static FindFormInstanceParameter ExtractFindFormInstanceParameter(IQueryCollection query, IEnumerable<string> roleIds)
91105
{
106+
string caseDefinitionId;
92107
var parameter = new FindFormInstanceParameter
93108
{
94109
RoleIds = roleIds
95110
};
96-
// parameter.ExtractFindParameter(query);
111+
parameter.ExtractFindParameter(query);
112+
if (query.TryGet("case_definition_id", out caseDefinitionId))
113+
{
114+
parameter.CaseDefinitionId = caseDefinitionId;
115+
}
116+
97117
return parameter;
98118
}
99119
}

0 commit comments

Comments
 (0)