Download Clinique_C8.zip file
⤳ case study requires Spring Boot Java
│ pom.xml
│
└───src
├───main
│ │ .process-application
│ │
│ ├───java
│ │ └───com
│ │ └───BarbierDarnal
│ │ └───clinique_c8
│ │ Approuver_signer_le_consentement_eclaire.java
│ │ Clinique_C8.java
│ │ Emission_besoin_info_supp_.java
│ │ Emission_info_supp_.java
│ │ Generer_les_acces_Web.java
│ │ Information_mediation.java
│ │ Operer.java
│ │ Signer_enquete_allergies_antecedents_anesthesiques_.java
│ │ Visiter_le_medecin_chirurgien.java
│ │
│ └───resources
│ │ application.properties
│ │ Besoin_info_supp_C8.bpmn
│ │ Clinique_C8.bpmn
│ │
│ └───forms
│ N_1_Valider_le_dossier_d_admission.form
│ N_Valider_le_dossier_d_admission.form
│ Produire_le_dossier_d_admission.form
│
└───test
└───java
Operate console
Camunda 8 uses Friendly Enough Expression Language -FEEL- ☛ for expressing conditions
@org.springframework.stereotype.Component
public class Emission_besoin_info_supp_ implements io.camunda.client.api.worker.JobHandler {
// https://docs.camunda.io/docs/components/best-practices/development/routing-events-to-processes/#starting-process-instance-by-message
@org.springframework.beans.factory.annotation.Autowired
private io.camunda.client.CamundaClient _emission_besoin_info_supp_;
@io.camunda.client.annotation.JobWorker(type = "emission_besoin_info_supp_")
@Override
public void handle(final io.camunda.client.api.worker.JobClient client, final io.camunda.client.api.response.ActivatedJob job) {
assert (_emission_besoin_info_supp_ != null); // Injection succeeded...
System.out.println(job.getType());
// To be thrown message *TECHNICAL* features are passed through "Headers" (i.e., metadata) in model...
// job.getCustomHeaders().forEach((key, value) -> System.out.println("\t" + key + ": " + value));
String messageName = job.getCustomHeaders().get("messageName");
String correlationKey = job.getCustomHeaders().get("correlationKey");
_emission_besoin_info_supp_.newPublishMessageCommand()
.messageName(messageName).correlationKey(correlationKey)
.variable("patient_id", "n°SS").send().join();
}
}
@org.springframework.stereotype.Component
public class Emission_info_supp_ implements io.camunda.client.api.worker.JobHandler {
@org.springframework.beans.factory.annotation.Autowired
private io.camunda.client.CamundaClient _emission_info_supp_;
@io.camunda.client.annotation.JobWorker(type = "emission_info_supp_")
@Override
public void handle(final io.camunda.client.api.worker.JobClient client, final io.camunda.client.api.response.ActivatedJob job) {
assert (_emission_info_supp_ != null); // Injection must succeed!
System.out.println(job.getType());
String messageName = job.getCustomHeaders().get("messageName");
String correlationKey = job.getCustomHeaders().get("correlationKey");
// La variable de processus 'patient_id' a été "apportée" au "start message event"...
assert (job.getVariable("patient_id") == "n°SS");
_emission_info_supp_.newPublishMessageCommand()
.messageName(messageName).correlationKey(correlationKey)
.variables(java.util.Map.of("patient_id", job.getVariable("patient_id"), "info_supp_", "ECZéMA"))
.send().join();
}
}
@org.springframework.stereotype.Component
public class Visiter_le_medecin_chirurgien /*implements io.camunda.client.api.worker.JobHandler*/ {
@io.camunda.client.annotation.JobWorker(type = "visiter_le_medecin_chirurgien")
public java.util.Map<String, String> handle(final io.camunda.client.api.worker.JobClient client, final io.camunda.client.api.response.ActivatedJob job) {
System.out.println(job.getKind().name()); // Display is 'EXECUTION_LISTENER'
// Création d'une nouvelle variable de processus :
return java.util.Map.of("compte_rendu_de_visite", "par défaut, tout va bien...");
}
}
Identity console
Tasklist console
Tasklist console
*Script is for illustration only,
i.e., it is a random (dummy) initialization of besoin_info_supp_process variable