Skip to content

Commit

Permalink
start/end logging of processes, constructor consistency, code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
hhund committed Nov 24, 2019
1 parent 8bfa839 commit 568a636
Show file tree
Hide file tree
Showing 22 changed files with 208 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,12 @@ private void doExecutePlugin(DelegateExecution execution)
*/
protected abstract void doExecute(DelegateExecution execution) throws Exception;

protected TaskHelper getTaskHelper()
protected final TaskHelper getTaskHelper()
{
return taskHelper;
}

protected FhirWebserviceClientProvider getFhirWebserviceClientProvider()
protected final FhirWebserviceClientProvider getFhirWebserviceClientProvider()
{
return clientProvider;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ public class AbstractTaskMessageSend extends AbstractServiceDelegate implements
{
private static final Logger logger = LoggerFactory.getLogger(AbstractTaskMessageSend.class);

protected final OrganizationProvider organizationProvider;
private final OrganizationProvider organizationProvider;
private final FhirContext fhirContext;

public AbstractTaskMessageSend(OrganizationProvider organizationProvider,
FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper, FhirContext fhirContext)
public AbstractTaskMessageSend(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper,
OrganizationProvider organizationProvider, FhirContext fhirContext)
{
super(clientProvider, taskHelper);

Expand Down Expand Up @@ -75,11 +75,10 @@ public void doExecute(DelegateExecution execution) throws Exception
}
catch (Exception e)
{
String errorMessage =
"Error while sending Task (process: " + processDefinitionKey + ", version: " + versionTag
+ ", message-name: " + messageName + ", business-key: " + businessKey
+ ", correlation-key: " + target.getCorrelationKey() + ") to organization with identifier "
+ target.getTargetOrganizationIdentifierValue() + ": " + e.getMessage();
String errorMessage = "Error while sending Task (process: " + processDefinitionKey + ", version: "
+ versionTag + ", message-name: " + messageName + ", business-key: " + businessKey
+ ", correlation-key: " + target.getCorrelationKey() + ") to organization with identifier "
+ target.getTargetOrganizationIdentifierValue() + ": " + e.getMessage();
logger.warn(errorMessage);

Outputs outputs = (Outputs) execution.getVariable(Constants.VARIABLE_PROCESS_OUTPUTS);
Expand Down Expand Up @@ -125,26 +124,26 @@ protected void sendTask(String targetOrganizationIdentifierValue, String process

// http://highmed.org/bpe/Process/processDefinitionKey
// http://highmed.org/bpe/Process/processDefinitionKey/versionTag
String instantiatesUri =
Constants.PROCESS_URI_BASE + processDefinitionKey + (versionTag != null && !versionTag.isEmpty() ?
("/" + versionTag) :
"");
String instantiatesUri = Constants.PROCESS_URI_BASE + processDefinitionKey
+ (versionTag != null && !versionTag.isEmpty() ? ("/" + versionTag) : "");
task.setInstantiatesUri(instantiatesUri);

ParameterComponent messageNameInput = new ParameterComponent(new CodeableConcept(
new Coding(Constants.CODESYSTEM_HIGHMED_BPMN, Constants.CODESYSTEM_HIGHMED_BPMN_VALUE_MESSAGE_NAME,
null)), new StringType(messageName));
ParameterComponent messageNameInput = new ParameterComponent(
new CodeableConcept(new Coding(Constants.CODESYSTEM_HIGHMED_BPMN,
Constants.CODESYSTEM_HIGHMED_BPMN_VALUE_MESSAGE_NAME, null)),
new StringType(messageName));
task.getInput().add(messageNameInput);

ParameterComponent businessKeyInput = new ParameterComponent(new CodeableConcept(
new Coding(Constants.CODESYSTEM_HIGHMED_BPMN, Constants.CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY,
null)), new StringType(businessKey));
ParameterComponent businessKeyInput = new ParameterComponent(
new CodeableConcept(new Coding(Constants.CODESYSTEM_HIGHMED_BPMN,
Constants.CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY, null)),
new StringType(businessKey));
task.getInput().add(businessKeyInput);

if (correlationKey != null)
{
ParameterComponent correlationKeyInput = new ParameterComponent(new CodeableConcept(
new Coding(Constants.CODESYSTEM_HIGHMED_BPMN,
ParameterComponent correlationKeyInput = new ParameterComponent(
new CodeableConcept(new Coding(Constants.CODESYSTEM_HIGHMED_BPMN,
Constants.CODESYSTEM_HIGHMED_BPMN_VALUE_CORRELATION_KEY, null)),
new StringType(correlationKey));
task.getInput().add(correlationKeyInput);
Expand All @@ -154,8 +153,9 @@ protected void sendTask(String targetOrganizationIdentifierValue, String process

FhirWebserviceClient client = getFhirClient(task, targetOrganizationIdentifierValue);

logger.info("Sending task for process {} to organization {} (endpoint: {})", task.getInstantiatesUri(),
targetOrganizationIdentifierValue, client.getBaseUrl());
logger.info("Sending task {} to {} [message: {}, businessKey: {}, correlationKey: {}, endpoint: {}]",
task.getInstantiatesUri(), targetOrganizationIdentifierValue, messageName, businessKey, correlationKey,
client.getBaseUrl());
logger.trace("Task resource to send: {}", fhirContext.newJsonParser().encodeResourceToString(task));

client.create(task);
Expand All @@ -175,4 +175,9 @@ private FhirWebserviceClient getFhirClient(Task task, String targetOrganizationI
targetOrganizationIdentifierValue);
}
}

protected final OrganizationProvider getOrganizationProvider()
{
return organizationProvider;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,17 @@

public class SendFeasibilityRequest extends AbstractTaskMessageSend
{
private final FhirWebserviceClientProvider clientProvider;

public SendFeasibilityRequest(OrganizationProvider organizationProvider,
FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper, FhirContext fhirContext)
public SendFeasibilityRequest(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper,
OrganizationProvider organizationProvider, FhirContext fhirContext)
{
super(organizationProvider, clientProvider, taskHelper, fhirContext);
this.clientProvider = clientProvider;
super(clientProvider, taskHelper, organizationProvider, fhirContext);
}

@Override
protected Stream<Task.ParameterComponent> getAdditionalInputParameters(DelegateExecution execution)
{
ResearchStudy researchStudy = (ResearchStudy) execution.getVariable(Constants.VARIABLE_RESEARCH_STUDY);
IdType type = new IdType(clientProvider.getLocalBaseUrl() + "/" + researchStudy.getId());
IdType type = new IdType(getFhirWebserviceClientProvider().getLocalBaseUrl() + "/" + researchStudy.getId());

Task.ParameterComponent input = getTaskHelper().createInput(Constants.CODESYSTEM_HIGHMED_FEASIBILITY,
Constants.CODESYSTEM_HIGHMED_FEASIBILITY_VALUE_RESEARCH_STUDY_REFERENCE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@

public class SendFeasibilityResults extends AbstractTaskMessageSend
{
public SendFeasibilityResults(OrganizationProvider organizationProvider,
FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper, FhirContext fhirContext)
public SendFeasibilityResults(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper,
OrganizationProvider organizationProvider, FhirContext fhirContext)
{
super(organizationProvider, clientProvider, taskHelper, fhirContext);
super(clientProvider, taskHelper, organizationProvider, fhirContext);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,19 @@ public class SelectResponseMedics extends AbstractServiceDelegate implements Ini
{
private final OrganizationProvider organizationProvider;

public SelectResponseMedics(OrganizationProvider organizationProvider, FhirWebserviceClientProvider clientProvider,
TaskHelper taskHelper)
public SelectResponseMedics(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper,
OrganizationProvider organizationProvider)
{
super(clientProvider, taskHelper);

this.organizationProvider = organizationProvider;
}

@Override
public void afterPropertiesSet() throws Exception
{
super.afterPropertiesSet();

Objects.requireNonNull(organizationProvider, "organizationProvider");
}

Expand All @@ -39,14 +41,14 @@ public void doExecute(DelegateExecution execution) throws Exception
{
Task task = (Task) execution.getVariable(Constants.VARIABLE_TASK);

String correlationKey = getTaskHelper()
.getFirstInputParameterStringValue(task, Constants.CODESYSTEM_HIGHMED_BPMN,
Constants.CODESYSTEM_HIGHMED_BPMN_VALUE_CORRELATION_KEY).orElse(UUID.randomUUID().toString());
String correlationKey = getTaskHelper().getFirstInputParameterStringValue(task,
Constants.CODESYSTEM_HIGHMED_BPMN, Constants.CODESYSTEM_HIGHMED_BPMN_VALUE_CORRELATION_KEY)
.orElse(UUID.randomUUID().toString());

Identifier targetOrganizationIdentifier = organizationProvider
.getIdentifier(new IdType(task.getRequester().getReference())).orElseThrow(
() -> new IllegalStateException(
"Organization with id " + task.getRequester().getReference() + " not found"));
.getIdentifier(new IdType(task.getRequester().getReference()))
.orElseThrow(() -> new IllegalStateException(
"Organization with id " + task.getRequester().getReference() + " not found"));

execution.setVariable(Constants.VARIABLE_MULTI_INSTANCE_TARGET, MultiInstanceTargetValues
.create(new MultiInstanceTarget(targetOrganizationIdentifier.getValue(), correlationKey)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,19 @@ public class StoreFeasibilityResults extends AbstractServiceDelegate implements
{
private final OrganizationProvider organizationProvider;

public StoreFeasibilityResults(OrganizationProvider organizationProvider,
FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper)
public StoreFeasibilityResults(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper,
OrganizationProvider organizationProvider)
{
super(clientProvider, taskHelper);

this.organizationProvider = organizationProvider;
}

@Override
public void afterPropertiesSet() throws Exception
{
super.afterPropertiesSet();

Objects.requireNonNull(organizationProvider, "organizationProvider");
}

Expand All @@ -42,19 +44,20 @@ public void doExecute(DelegateExecution execution) throws Exception
Task task = (Task) execution.getVariable(Constants.VARIABLE_TASK);

Map<String, String> queryResults = new HashMap<>();
Stream<String> resultInputs = getTaskHelper()
.getInputParameterStringValues(task, Constants.CODESYSTEM_HIGHMED_FEASIBILITY,
Constants.CODESYSTEM_HIGHMED_FEASIBILITY_VALUE_SINGLE_MEDIC_RESULT);
Stream<String> resultInputs = getTaskHelper().getInputParameterStringValues(task,
Constants.CODESYSTEM_HIGHMED_FEASIBILITY,
Constants.CODESYSTEM_HIGHMED_FEASIBILITY_VALUE_SINGLE_MEDIC_RESULT);

resultInputs.forEach(input -> {
resultInputs.forEach(input ->
{
String[] resultParts = input.split("\\" + Constants.CODESYSTEM_HIGHMED_FEASIBILITY_RESULT_SEPARATOR);
queryResults.put(resultParts[Constants.CODESYSTEM_HIGHMED_FEASIBILITY_RESULT_GROUP_ID_INDEX],
resultParts[Constants.CODESYSTEM_HIGHMED_FEASIBILITY_RESULT_COHORT_SIZE_INDEX]);
});

String requesterReference = task.getRequester().getReference();
Identifier requesterIdentifier = organizationProvider.getIdentifier(new IdType(requesterReference)).orElseThrow(
() -> new IllegalStateException(
Identifier requesterIdentifier = organizationProvider.getIdentifier(new IdType(requesterReference))
.orElseThrow(() -> new IllegalStateException(
"Could not find organization reference: " + requesterReference + ", dropping received result"));

MultiInstanceResult result = new MultiInstanceResult(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,13 @@ public CheckSingleMedicFeasibilityResults checkSingleMedicFeasibilityResults()
@Bean
public SelectResponseMedics selectResponseMedics()
{
return new SelectResponseMedics(organizationProvider, fhirClientProvider, taskHelper);
return new SelectResponseMedics(fhirClientProvider, taskHelper, organizationProvider);
}

@Bean
public StoreFeasibilityResults storeFeasibilityResults()
{
return new StoreFeasibilityResults(organizationProvider, fhirClientProvider, taskHelper);
return new StoreFeasibilityResults(fhirClientProvider, taskHelper, organizationProvider);
}

@Bean
Expand All @@ -116,12 +116,12 @@ public CheckMultiMedicFeasibilityResults checkMultiMedicFeasibilityResults()
@Bean
public SendFeasibilityRequest sendFeasibilityRequest()
{
return new SendFeasibilityRequest(organizationProvider, fhirClientProvider, taskHelper, fhirContext);
return new SendFeasibilityRequest(fhirClientProvider, taskHelper, organizationProvider, fhirContext);
}

@Bean
public SendFeasibilityResults sendCohortSizeResultToMedic()
{
return new SendFeasibilityResults(organizationProvider, fhirClientProvider, taskHelper, fhirContext);
return new SendFeasibilityResults(fhirClientProvider, taskHelper, organizationProvider, fhirContext);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@

public class SendPing extends AbstractTaskMessageSend
{
public SendPing(OrganizationProvider organizationProvider, FhirWebserviceClientProvider clientProvider,
TaskHelper taskHelper, FhirContext fhirContext)
public SendPing(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper,
OrganizationProvider organizationProvider, FhirContext fhirContext)
{
super(organizationProvider, clientProvider, taskHelper, fhirContext);
super(clientProvider, taskHelper, organizationProvider, fhirContext);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@

public class SendPong extends AbstractTaskMessageSend
{
public SendPong(OrganizationProvider organizationProvider, FhirWebserviceClientProvider clientProvider,
TaskHelper taskHelper, FhirContext fhirContext)
public SendPong(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper,
OrganizationProvider organizationProvider, FhirContext fhirContext)
{
super(organizationProvider, clientProvider, taskHelper, fhirContext);
super(clientProvider, taskHelper, organizationProvider, fhirContext);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package org.highmed.dsf.bpe.service;

import java.util.Objects;

import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.highmed.dsf.bpe.Constants;
import org.highmed.dsf.bpe.delegate.AbstractServiceDelegate;
import org.highmed.dsf.fhir.client.FhirWebserviceClientProvider;
import org.highmed.dsf.fhir.organization.OrganizationProvider;
import org.highmed.dsf.fhir.task.TaskHelper;
import org.hl7.fhir.r4.model.IdType;
import org.hl7.fhir.r4.model.Identifier;
import org.hl7.fhir.r4.model.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -13,9 +18,22 @@ public class LogPing extends AbstractServiceDelegate
{
private static final Logger logger = LoggerFactory.getLogger(LogPing.class);

public LogPing(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper)
private final OrganizationProvider organizationProvider;

public LogPing(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper,
OrganizationProvider organizationProvider)
{
super(clientProvider, taskHelper);

this.organizationProvider = organizationProvider;
}

@Override
public void afterPropertiesSet() throws Exception
{
super.afterPropertiesSet();

Objects.requireNonNull(organizationProvider, "organizationProvider");
}

@Override
Expand All @@ -27,6 +45,9 @@ public void doExecute(DelegateExecution execution) throws Exception

Task task = (Task) execution.getVariable(Constants.VARIABLE_TASK);

logger.info("PING from Organization with id {}", task.getRequester().getReference());
String organization = organizationProvider.getIdentifier(new IdType(task.getRequester().getReference()))
.map(Identifier::getValue).orElse(task.getRequester().getReference());

logger.info("PING from {}", organization);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package org.highmed.dsf.bpe.service;

import java.util.Objects;

import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.highmed.dsf.bpe.Constants;
import org.highmed.dsf.bpe.delegate.AbstractServiceDelegate;
import org.highmed.dsf.fhir.client.FhirWebserviceClientProvider;
import org.highmed.dsf.fhir.organization.OrganizationProvider;
import org.highmed.dsf.fhir.task.TaskHelper;
import org.hl7.fhir.r4.model.IdType;
import org.hl7.fhir.r4.model.Identifier;
import org.hl7.fhir.r4.model.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -13,8 +18,22 @@ public class LogPong extends AbstractServiceDelegate
{
private static final Logger logger = LoggerFactory.getLogger(LogPong.class);

public LogPong(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper) {
private final OrganizationProvider organizationProvider;

public LogPong(FhirWebserviceClientProvider clientProvider, TaskHelper taskHelper,
OrganizationProvider organizationProvider)
{
super(clientProvider, taskHelper);

this.organizationProvider = organizationProvider;
}

@Override
public void afterPropertiesSet() throws Exception
{
super.afterPropertiesSet();

Objects.requireNonNull(organizationProvider, "organizationProvider");
}

@Override
Expand All @@ -26,6 +45,9 @@ public void doExecute(DelegateExecution execution) throws Exception

Task task = (Task) execution.getVariable(Constants.VARIABLE_TASK);

logger.info("PONG from Organization with id {}", task.getRequester().getReference());
String organization = organizationProvider.getIdentifier(new IdType(task.getRequester().getReference()))
.map(Identifier::getValue).orElse(task.getRequester().getReference());

logger.info("PONG from {}", organization);
}
}
Loading

0 comments on commit 568a636

Please sign in to comment.