Skip to content

Commit b41cd81

Browse files
committed
Merge remote-tracking branch 'origin/issue/208_209_logging' into
develop_2
2 parents 7938cff + 5ef157e commit b41cd81

File tree

104 files changed

+2331
-673
lines changed

Some content is hidden

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

104 files changed

+2331
-673
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package dev.dsf.bpe.v1.logging;
2+
3+
import java.util.Objects;
4+
import java.util.function.Function;
5+
6+
import org.camunda.bpm.engine.delegate.DelegateExecution;
7+
import org.hl7.fhir.r4.model.Coding;
8+
import org.hl7.fhir.r4.model.ResourceType;
9+
import org.hl7.fhir.r4.model.StringType;
10+
import org.hl7.fhir.r4.model.Task;
11+
import org.hl7.fhir.r4.model.Task.ParameterComponent;
12+
13+
import dev.dsf.bpe.api.Constants;
14+
import dev.dsf.bpe.api.logging.AbstractPluginMdc;
15+
import dev.dsf.bpe.v1.constants.CodeSystems.BpmnMessage;
16+
import dev.dsf.bpe.v1.variables.Variables;
17+
18+
public class PluginMdcImpl extends AbstractPluginMdc
19+
{
20+
private final String serverBaseUrl;
21+
private final Function<DelegateExecution, Variables> variablesFactory;
22+
23+
/**
24+
* @param apiVersion
25+
* @param name
26+
* not <code>null</code>
27+
* @param version
28+
* not <code>null</code>
29+
* @param jar
30+
* not <code>null</code>
31+
* @param serverBaseUrl
32+
* not <code>null</code>
33+
* @param variablesFactory
34+
* not <code>null</code>
35+
*/
36+
public PluginMdcImpl(int apiVersion, String name, String version, String jar, String serverBaseUrl,
37+
Function<DelegateExecution, Variables> variablesFactory)
38+
{
39+
super(apiVersion, name, version, jar);
40+
41+
this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
42+
this.variablesFactory = Objects.requireNonNull(variablesFactory, "variablesFactory");
43+
}
44+
45+
@Override
46+
protected ProcessValues getProcessValues(DelegateExecution delegateExecution)
47+
{
48+
Variables variables = variablesFactory.apply(delegateExecution);
49+
50+
Task startTask = variables.getStartTask();
51+
if (startTask == null)
52+
startTask = variables.getResource(Constants.TASK_VARIABLE);
53+
54+
Task latestTask = variables.getLatestTask();
55+
if (startTask == latestTask)
56+
latestTask = null;
57+
58+
return new ProcessValues(startTask == null ? null : startTask.getInstantiatesCanonical(),
59+
getLocalVersionlessAbsoluteUrl(startTask), getRequesterIdentifierValue(startTask),
60+
getFirstInputParameter(latestTask, BpmnMessage.correlationKey()),
61+
getLocalVersionlessAbsoluteUrl(latestTask), getRequesterIdentifierValue(latestTask));
62+
}
63+
64+
private String getLocalVersionlessAbsoluteUrl(Task task)
65+
{
66+
return task == null ? null
67+
: task.getIdElement().toVersionless().withServerBase(serverBaseUrl, ResourceType.Task.name())
68+
.getValue();
69+
}
70+
71+
private String getRequesterIdentifierValue(Task task)
72+
{
73+
if (task == null)
74+
return null;
75+
76+
return task.getRequester().getIdentifier().getValue();
77+
}
78+
79+
private String getFirstInputParameter(Task task, Coding code)
80+
{
81+
if (task == null || code == null)
82+
return null;
83+
84+
return task.getInput().stream().filter(ParameterComponent::hasType)
85+
.filter(c -> c.getType().getCoding().stream()
86+
.anyMatch(co -> co != null && Objects.equals(code.getSystem(), co.getSystem())
87+
&& Objects.equals(code.getCode(), co.getCode())))
88+
.filter(ParameterComponent::hasValue).map(ParameterComponent::getValue)
89+
.filter(v -> v instanceof StringType).map(v -> (StringType) v).map(StringType::getValue).findFirst()
90+
.orElse(null);
91+
}
92+
}

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginApiBuilderImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ public class ProcessPluginApiBuilderImpl implements ProcessPluginApiBuilder
1111
{
1212
@Override
1313
public ProcessPluginFactory build(ClassLoader apiClassLoader, ApplicationContext apiApplicationContext,
14-
ConfigurableEnvironment environment)
14+
ConfigurableEnvironment environment, String serverBaseUrl)
1515
{
16-
return new ProcessPluginFactoryImpl(apiClassLoader, apiApplicationContext, environment);
16+
return new ProcessPluginFactoryImpl(apiClassLoader, apiApplicationContext, environment, serverBaseUrl);
1717
}
1818

1919
@Override

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginFactoryImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,18 @@ public class ProcessPluginFactoryImpl extends AbstractProcessPluginFactory imple
1919
public static final int API_VERSION = 1;
2020

2121
public ProcessPluginFactoryImpl(ClassLoader apiClassLoader, ApplicationContext apiApplicationContext,
22-
ConfigurableEnvironment environment)
22+
ConfigurableEnvironment environment, String serverBaseUrl)
2323
{
24-
super(API_VERSION, apiClassLoader, apiApplicationContext, environment, ProcessPluginDefinition.class);
24+
super(API_VERSION, apiClassLoader, apiApplicationContext, environment, serverBaseUrl,
25+
ProcessPluginDefinition.class);
2526
}
2627

2728
@Override
2829
protected ProcessPlugin createProcessPlugin(Object processPluginDefinition, boolean draft, Path jarFile,
2930
URLClassLoader pluginClassLoader)
3031
{
3132
return new ProcessPluginImpl((ProcessPluginDefinition) processPluginDefinition, API_VERSION, draft, jarFile,
32-
pluginClassLoader, environment, apiApplicationContext);
33+
pluginClassLoader, environment, apiApplicationContext, serverBaseUrl);
3334
}
3435

3536
@Override

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginImpl.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343

4444
import ca.uhn.fhir.context.FhirContext;
4545
import ca.uhn.fhir.parser.IParser;
46+
import dev.dsf.bpe.api.logging.PluginMdc;
4647
import dev.dsf.bpe.api.plugin.AbstractProcessPlugin;
4748
import dev.dsf.bpe.api.plugin.FhirResourceModifier;
4849
import dev.dsf.bpe.api.plugin.ProcessPlugin;
@@ -55,7 +56,9 @@
5556
import dev.dsf.bpe.v1.constants.CodeSystems.BpmnMessage;
5657
import dev.dsf.bpe.v1.constants.NamingSystems.OrganizationIdentifier;
5758
import dev.dsf.bpe.v1.constants.NamingSystems.TaskIdentifier;
59+
import dev.dsf.bpe.v1.logging.PluginMdcImpl;
5860
import dev.dsf.bpe.v1.variables.FhirResourceValues;
61+
import dev.dsf.bpe.v1.variables.VariablesImpl;
5962

6063
public class ProcessPluginImpl extends AbstractProcessPlugin<TaskListener> implements ProcessPlugin
6164
{
@@ -64,9 +67,11 @@ public class ProcessPluginImpl extends AbstractProcessPlugin<TaskListener> imple
6467
private final ProcessPluginDefinition processPluginDefinition;
6568
private final ProcessPluginApi processPluginApi;
6669

70+
private final PluginMdcImpl pluginMdc;
71+
6772
public ProcessPluginImpl(ProcessPluginDefinition processPluginDefinition, int processPluginApiVersion,
6873
boolean draft, Path jarFile, ClassLoader classLoader, ConfigurableEnvironment environment,
69-
ApplicationContext apiApplicationContext)
74+
ApplicationContext apiApplicationContext, String serverBaseUrl)
7075
{
7176
super(ProcessPluginDefinition.class, processPluginApiVersion, draft, jarFile, classLoader, environment,
7277
apiApplicationContext, ApiServicesSpringConfiguration.class, JavaDelegate.class, JavaDelegate.class,
@@ -75,6 +80,15 @@ public ProcessPluginImpl(ProcessPluginDefinition processPluginDefinition, int pr
7580

7681
this.processPluginDefinition = processPluginDefinition;
7782
processPluginApi = apiApplicationContext.getBean(ProcessPluginApi.class);
83+
84+
pluginMdc = new PluginMdcImpl(processPluginApiVersion, processPluginDefinition.getName(),
85+
processPluginDefinition.getVersion(), jarFile.toString(), serverBaseUrl, VariablesImpl::new);
86+
}
87+
88+
@Override
89+
public PluginMdc getPluginMdc()
90+
{
91+
return pluginMdc;
7892
}
7993

8094
@Override
@@ -245,6 +259,12 @@ protected List<String> getDefinitionProcessModels()
245259
return processPluginDefinition.getProcessModels();
246260
}
247261

262+
@Override
263+
public String getPluginDefinitionPackageName()
264+
{
265+
return processPluginDefinition.getClass().getPackageName();
266+
}
267+
248268
@Override
249269
public PrimitiveValue<?> createFhirTaskVariable(String taskJson)
250270
{

dsf-bpe/dsf-bpe-process-api-v1-impl/src/test/java/dev/dsf/bpe/v1/plugin/ProcessPluginImplTest.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ public ProcessPluginImplTest()
171171
@Test
172172
public void testInitializeAndValidateResourcesAllNull() throws Exception
173173
{
174-
var definition = createPluginDefinition(null, null, null, null, null);
174+
var definition = createPluginDefinition(null, null, null);
175175
ProcessPluginImpl plugin = createPlugin(definition, false);
176176

177177
assertFalse(plugin.initializeAndValidateResources(null));
@@ -205,7 +205,7 @@ public void testInitializeAndValidateResourcesAllNull() throws Exception
205205
@Test
206206
public void testInitializeAndValidateResourcesEmptySpringConfigBpmnAndFhirResources() throws Exception
207207
{
208-
var definition = createPluginDefinition("1.0.0.0", LocalDate.now(), List.of(), List.of(), Map.of());
208+
var definition = createPluginDefinition(List.of(), List.of(), Map.of());
209209
ProcessPluginImpl plugin = createPlugin(definition, false);
210210

211211
assertFalse(plugin.initializeAndValidateResources(null));
@@ -239,8 +239,7 @@ public void testInitializeAndValidateResourcesEmptySpringConfigBpmnAndFhirResour
239239
@Test
240240
public void testInitializeAndValidateResourcesNotExistingModelAndFhirResources() throws Exception
241241
{
242-
var definition = createPluginDefinition("1.0.0.0", LocalDate.now(), List.of(TestConfig.class),
243-
List.of("test-plugin/does_not_exist.bpmn"),
242+
var definition = createPluginDefinition(List.of(TestConfig.class), List.of("test-plugin/does_not_exist.bpmn"),
244243
Map.of("testorg_test", List.of("test-plugin/does_not_exist.xml")));
245244
ProcessPluginImpl plugin = createPlugin(definition, false);
246245

@@ -275,8 +274,8 @@ public void testInitializeAndValidateResourcesNotExistingModelAndFhirResources()
275274
@Test
276275
public void testInitializeAndValidateResourcesNotExistingFhirResources() throws Exception
277276
{
278-
var definition = createPluginDefinition("1.0.0.0", LocalDate.now(), List.of(TestConfig.class),
279-
List.of("test-plugin/test.bpmn"), Map.of("testorg_test", List.of("test-plugin/does_not_exist.xml")));
277+
var definition = createPluginDefinition(List.of(TestConfig.class), List.of("test-plugin/test.bpmn"),
278+
Map.of("testorg_test", List.of("test-plugin/does_not_exist.xml")));
280279
ProcessPluginImpl plugin = createPlugin(definition, false);
281280

282281
assertFalse(plugin.initializeAndValidateResources(null));
@@ -303,8 +302,7 @@ public void testInitializeAndValidateResourcesNotExistingFhirResources() throws
303302
@Test
304303
public void testInitializeAndValidateResources() throws Exception
305304
{
306-
var definition = createPluginDefinition("1.0.0.0", LocalDate.now(), List.of(TestConfig.class),
307-
List.of("test-plugin/test.bpmn"),
305+
var definition = createPluginDefinition(List.of(TestConfig.class), List.of("test-plugin/test.bpmn"),
308306
Map.of("testorg_test", List.of("test-plugin/ActivityDefinition_test.xml")));
309307
ProcessPluginImpl plugin = createPlugin(definition, false);
310308

@@ -336,16 +334,17 @@ public void testInitializeAndValidateResources() throws Exception
336334
assertEquals(ProcessPluginFactoryImpl.API_VERSION, Integer.parseInt(property.getCamundaValue()));
337335
}
338336

339-
private ProcessPluginDefinition createPluginDefinition(String version, LocalDate releaseDate,
340-
List<Class<?>> springConfigurations, List<String> processModels, Map<String, List<String>> fhirResources)
337+
private ProcessPluginDefinition createPluginDefinition(List<Class<?>> springConfigurations,
338+
List<String> processModels, Map<String, List<String>> fhirResources)
341339
{
342-
return new TestProcessPluginDefinition(fhirResources, processModels, version, springConfigurations,
343-
releaseDate);
340+
return new TestProcessPluginDefinition(fhirResources, processModels, "1.0.0.0", springConfigurations,
341+
LocalDate.now());
344342
}
345343

346344
private ProcessPluginImpl createPlugin(ProcessPluginDefinition processPluginDefinition, boolean draft)
347345
{
348346
return new ProcessPluginImpl(processPluginDefinition, ProcessPluginFactoryImpl.API_VERSION, draft,
349-
Paths.get("test.jar"), getClass().getClassLoader(), environment, apiApplicationContext);
347+
Paths.get("test.jar"), getClass().getClassLoader(), environment, apiApplicationContext,
348+
"https://localhost/fhir");
350349
}
351350
}

dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/ProcessPluginApiImpl.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
import ca.uhn.fhir.context.FhirContext;
1010
import dev.dsf.bpe.v2.config.ProxyConfig;
1111
import dev.dsf.bpe.v2.service.CryptoService;
12+
import dev.dsf.bpe.v2.service.DataLogger;
1213
import dev.dsf.bpe.v2.service.DsfClientProvider;
1314
import dev.dsf.bpe.v2.service.EndpointProvider;
1415
import dev.dsf.bpe.v2.service.FhirClientProvider;
1516
import dev.dsf.bpe.v2.service.MailService;
16-
import dev.dsf.bpe.v2.service.MimetypeService;
17+
import dev.dsf.bpe.v2.service.MimeTypeService;
1718
import dev.dsf.bpe.v2.service.OidcClientProvider;
1819
import dev.dsf.bpe.v2.service.OrganizationProvider;
1920
import dev.dsf.bpe.v2.service.QuestionnaireResponseHelper;
@@ -31,8 +32,7 @@ public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
3132
private final FhirClientProvider fhirClientProvider;
3233
private final OidcClientProvider oidcClientProvider;
3334
private final MailService mailService;
34-
35-
private final MimetypeService mimetypeService;
35+
private final MimeTypeService mimeTypeService;
3636
private final ObjectMapper objectMapper;
3737
private final OrganizationProvider organizationProvider;
3838
private final ProcessAuthorizationHelper processAuthorizationHelper;
@@ -41,14 +41,15 @@ public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
4141
private final TaskHelper taskHelper;
4242
private final CryptoService cryptoService;
4343
private final TargetProvider targetProvider;
44+
private final DataLogger dataLogger;
4445

4546
public ProcessPluginApiImpl(ProxyConfig proxyConfig, EndpointProvider endpointProvider, FhirContext fhirContext,
4647
DsfClientProvider dsfClientProvider, FhirClientProvider fhirClientProvider,
47-
OidcClientProvider oidcClientProvider, MailService mailService, MimetypeService mimetypeService,
48+
OidcClientProvider oidcClientProvider, MailService mailService, MimeTypeService mimeTypeService,
4849
ObjectMapper objectMapper, OrganizationProvider organizationProvider,
4950
ProcessAuthorizationHelper processAuthorizationHelper,
5051
QuestionnaireResponseHelper questionnaireResponseHelper, ReadAccessHelper readAccessHelper,
51-
TaskHelper taskHelper, CryptoService cryptoService, TargetProvider targetProvider)
52+
TaskHelper taskHelper, CryptoService cryptoService, TargetProvider targetProvider, DataLogger dataLogger)
5253
{
5354
this.proxyConfig = proxyConfig;
5455
this.endpointProvider = endpointProvider;
@@ -57,7 +58,7 @@ public ProcessPluginApiImpl(ProxyConfig proxyConfig, EndpointProvider endpointPr
5758
this.fhirClientProvider = fhirClientProvider;
5859
this.oidcClientProvider = oidcClientProvider;
5960
this.mailService = mailService;
60-
this.mimetypeService = mimetypeService;
61+
this.mimeTypeService = mimeTypeService;
6162
this.objectMapper = objectMapper;
6263
this.organizationProvider = organizationProvider;
6364
this.processAuthorizationHelper = processAuthorizationHelper;
@@ -66,6 +67,7 @@ public ProcessPluginApiImpl(ProxyConfig proxyConfig, EndpointProvider endpointPr
6667
this.taskHelper = taskHelper;
6768
this.cryptoService = cryptoService;
6869
this.targetProvider = targetProvider;
70+
this.dataLogger = dataLogger;
6971
}
7072

7173
@Override
@@ -78,6 +80,7 @@ public void afterPropertiesSet() throws Exception
7880
Objects.requireNonNull(fhirClientProvider, "fhirClientProvider");
7981
Objects.requireNonNull(oidcClientProvider, "oidcClientProvider");
8082
Objects.requireNonNull(mailService, "mailService");
83+
Objects.requireNonNull(mimeTypeService, "mimeTypeService");
8184
Objects.requireNonNull(objectMapper, "objectMapper");
8285
Objects.requireNonNull(organizationProvider, "organizationProvider");
8386
Objects.requireNonNull(processAuthorizationHelper, "processAuthorizationHelper");
@@ -86,6 +89,7 @@ public void afterPropertiesSet() throws Exception
8689
Objects.requireNonNull(taskHelper, "taskHelper");
8790
Objects.requireNonNull(cryptoService, "cryptoService");
8891
Objects.requireNonNull(targetProvider, "targetProvider");
92+
Objects.requireNonNull(dataLogger, "dataLogger");
8993
}
9094

9195
@Override
@@ -131,9 +135,9 @@ public MailService getMailService()
131135
}
132136

133137
@Override
134-
public MimetypeService getMimetypeService()
138+
public MimeTypeService getMimeTypeService()
135139
{
136-
return mimetypeService;
140+
return mimeTypeService;
137141
}
138142

139143
@Override
@@ -183,4 +187,10 @@ public TargetProvider getTargetProvider()
183187
{
184188
return targetProvider;
185189
}
190+
191+
@Override
192+
public DataLogger getDataLogger()
193+
{
194+
return dataLogger;
195+
}
186196
}

dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/activity/AbstractMessageDelegate.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
package dev.dsf.bpe.v2.activity;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
3+
import java.util.function.Function;
4+
5+
import org.camunda.bpm.engine.delegate.DelegateExecution;
46

57
import dev.dsf.bpe.v2.ProcessPluginApi;
68
import dev.dsf.bpe.v2.activity.values.SendTaskValues;
9+
import dev.dsf.bpe.v2.variables.Variables;
710

811
public class AbstractMessageDelegate<D> extends AbstractProcessPluginDelegate<D>
912
{
1013
protected final SendTaskValues sendTaskValues;
1114

12-
public AbstractMessageDelegate(ProcessPluginApi api, ObjectMapper objectMapper, D delegate,
13-
SendTaskValues sendTaskValues)
15+
public AbstractMessageDelegate(ProcessPluginApi api, Function<DelegateExecution, Variables> variablesFactory,
16+
D delegate, SendTaskValues sendTaskValues)
1417
{
15-
super(api, objectMapper, delegate);
18+
super(api, variablesFactory, delegate);
1619

1720
this.sendTaskValues = sendTaskValues;
1821
}

0 commit comments

Comments
 (0)