|
@@ -1,7 +1,15 @@
|
|
|
package com.redhat.training.claims;
|
|
|
|
|
|
+import java.io.BufferedReader;
|
|
|
+import java.io.InputStreamReader;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
import java.util.Map;
|
|
|
|
|
|
+import com.redhat.training.claims.model.Claim;
|
|
|
+import com.redhat.training.claims.model.ClaimClarificationRequests;
|
|
|
+import com.redhat.training.claims.model.Vehicle;
|
|
|
+
|
|
|
import org.drools.core.process.instance.WorkItemHandler;
|
|
|
|
|
|
import org.kie.api.runtime.process.WorkItem;
|
|
@@ -10,18 +18,127 @@ import org.kie.api.runtime.process.WorkItemManager;
|
|
|
public class ClarificationTaskHandler implements WorkItemHandler {
|
|
|
@Override
|
|
|
public void executeWorkItem(WorkItem wi, WorkItemManager wim) {
|
|
|
- System.out.println("In executeWorkItem()!");
|
|
|
+ System.out.println("executeWorkItem for " + wi.getId() + " " +
|
|
|
+ "(" + wi.getName() + ", PID:" + wi.getProcessInstanceId() + ", " +
|
|
|
+ "Nod:" + wi.getParameter("NodeName") + ", " +
|
|
|
+ "Tsk:" + wi.getParameter("TaskName") + ", " +
|
|
|
+ "Skp:" + wi.getParameter("Skippable") +
|
|
|
+ ")");
|
|
|
|
|
|
Map<String, Object> params = wi.getParameters();
|
|
|
for (String key : params.keySet()) {
|
|
|
System.out.println("Got parameter: " + key + " of type " + params.get(key).getClass().getName());
|
|
|
}
|
|
|
|
|
|
+ switch((String)wi.getParameter("TaskName")) {
|
|
|
+ case "Clarify":
|
|
|
+ Claim c = (Claim)wi.getParameter("tClaim");
|
|
|
+ ClaimClarificationRequests ccr = (ClaimClarificationRequests)wi.getParameter("tClaimClarificationRequests");
|
|
|
+
|
|
|
+ System.out.println("Processing Claim no. " + c.getId() + " there are several clarification requests:");
|
|
|
+ for (String reason : ccr.getRequests()) {
|
|
|
+ System.out.println(" - " + reason);
|
|
|
+ }
|
|
|
+ System.out.println("Please provide clarifications below.\n\n" +
|
|
|
+ "Claim ID " + c.getId() + "\n" +
|
|
|
+ "=================================");
|
|
|
+
|
|
|
+ Vehicle newVehicle = new Vehicle();
|
|
|
+ if (c.getVehicle() == null)
|
|
|
+ c.setVehicle(newVehicle);
|
|
|
+
|
|
|
+ try {
|
|
|
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
|
|
|
+
|
|
|
+ System.out.print("Reason [" + c.getReason() + "]: ");
|
|
|
+ String newReason = br.readLine();
|
|
|
+ if (newReason.length() > 0)
|
|
|
+ c.setReason(newReason);
|
|
|
+
|
|
|
+ System.out.print("Amount [" + c.getAmount() + "]: ");
|
|
|
+ String newAmountStr = br.readLine();
|
|
|
+ if (newAmountStr.length() > 0) {
|
|
|
+ c.setAmount(Double.parseDouble(newAmountStr));
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.print("Date Filed [" + (c.getDateFiled() != null ? (new SimpleDateFormat("dd.MM.yyyy")).format(c.getDateFiled()) : null) + "]: ");
|
|
|
+ String newDateFiledStr = br.readLine();
|
|
|
+ if (newDateFiledStr.length() > 0) {
|
|
|
+ try {
|
|
|
+ Date newDateFiled = (new SimpleDateFormat("dd.MM.yyyy")).parse(newDateFiledStr);
|
|
|
+ c.setDateFiled(newDateFiled);
|
|
|
+ } catch (java.text.ParseException pe) {
|
|
|
+ throw new RuntimeException("Error parsing parameter 'Date Filed'", pe);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.print("Date of Event [" + (c.getDateOfEvent() != null ? (new SimpleDateFormat("dd.MM.yyyy")).format(c.getDateOfEvent()) : null) + "]: ");
|
|
|
+ String newDateOfEventStr = br.readLine();
|
|
|
+ if (newDateOfEventStr.length() > 0) {
|
|
|
+ try {
|
|
|
+ Date newDateOfEvent = (new SimpleDateFormat("dd.MM.yyyy")).parse(newDateOfEventStr);
|
|
|
+ c.setDateOfEvent(newDateOfEvent);
|
|
|
+ } catch (java.text.ParseException pe) {
|
|
|
+ throw new RuntimeException("Error parsing parameter 'Date of Event'", pe);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println("Vehicle [" + c.getVehicle().getMark() + " " + c.getVehicle().getModel() + "]:");
|
|
|
+ System.out.print(" - Make [" + c.getVehicle().getMark() + "]: ");
|
|
|
+ String newMake = br.readLine();
|
|
|
+ newVehicle.setMark(newMake.length() > 0 ? newMake : c.getVehicle().getMark());
|
|
|
+
|
|
|
+ System.out.print(" - Model [" + c.getVehicle().getModel() + "]: ");
|
|
|
+ String newModel = br.readLine();
|
|
|
+ newVehicle.setModel(newModel.length() > 0 ? newModel : c.getVehicle().getModel());
|
|
|
+
|
|
|
+ System.out.print(" - VIN [" + c.getVehicle().getVin() + "]: ");
|
|
|
+ String newVin = br.readLine();
|
|
|
+ newVehicle.setVin(newVin.length() > 0 ? newVin : c.getVehicle().getVin());
|
|
|
+
|
|
|
+ Date currProdDate = c.getVehicle().getProductionDate();
|
|
|
+ System.out.print(" - Prod Date [" + (currProdDate != null ? new SimpleDateFormat("dd.MM.yyyy").format(currProdDate) : null) + "]: ");
|
|
|
+ String newProdDateStr = br.readLine();
|
|
|
+ if (newProdDateStr.length() > 0) {
|
|
|
+ newVehicle.setProductionDate(new SimpleDateFormat("dd.MM.yyyy").parse(newProdDateStr));
|
|
|
+ } else {
|
|
|
+ newVehicle.setProductionDate(currProdDate);
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.print(" - Mileage [" + c.getVehicle().getMileage() + "]: ");
|
|
|
+ String newMileageStr = br.readLine();
|
|
|
+ if (newMileageStr.length() > 0) {
|
|
|
+ newVehicle.setMileage(Integer.parseInt(newMileageStr));
|
|
|
+ } else {
|
|
|
+ newVehicle.setMileage(c.getVehicle().getMileage());
|
|
|
+ }
|
|
|
+ System.out.print(" - Reg Number [" + c.getVehicle().getRegistrationNumber() + "]: ");
|
|
|
+ String newRegNumber = br.readLine();
|
|
|
+ newVehicle.setRegistrationNumber(newRegNumber.length() > 0 ? newRegNumber : c.getVehicle().getRegistrationNumber());
|
|
|
+ } catch (java.io.IOException ioe) {
|
|
|
+ throw new RuntimeException("Error while gathering clarifications", ioe);
|
|
|
+ } catch (java.text.ParseException pe) {
|
|
|
+ throw new RuntimeException("Error parsing parameters", pe);
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println("=================================\n");
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ System.out.println("Unknown task! ABORTING!");
|
|
|
+ wim.abortWorkItem(wi.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println("Completing WorkItem " + wi.getId());
|
|
|
+ wim.completeWorkItem(wi.getId(), params);
|
|
|
+
|
|
|
System.out.println("Leaving executeWorkItem()!");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
|
|
|
+ public void abortWorkItem(WorkItem wi, WorkItemManager wim) {
|
|
|
System.out.println("Aborting WorkItem!");
|
|
|
+ wim.abortWorkItem(wi.getId());
|
|
|
}
|
|
|
}
|