office-alexander-logistics/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceDispatchAdapter.java
2025-01-23 23:57:37 +01:00

94 lines
No EOL
3.4 KiB
Java

package com.alexanderlogistics;
import java.util.logging.Logger;
import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.SignalAdapter;
import org.imixs.workflow.engine.WorkflowService;
import org.imixs.workflow.exceptions.AccessDeniedException;
import org.imixs.workflow.exceptions.AdapterException;
import org.imixs.workflow.exceptions.ModelException;
import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.ProcessingErrorException;
import jakarta.inject.Inject;
/**
* Der InvoiceDispatchAdapter verteilt die vom Abteilungsleiter ausgewählten
* Rechnungen
*
* @version 1.0
* @author rsoika
*/
public class InvoiceDispatchAdapter implements SignalAdapter {
private static Logger logger = Logger.getLogger(InvoiceDispatchAdapter.class.getName());
@Inject
WorkflowService workflowService;
/**
* This method computes the cargosoft export data file
*
* @throws PluginException
*/
@Override
public ItemCollection execute(ItemCollection document, ItemCollection event)
throws AdapterException, PluginException {
logger.info("......stapelverarbeitung pruefung...");
String spaceRef = document.getItemValueString("space.ref");
String sbTeam = document.getItemValueString("sb.team");
String sbAssist = document.getItemValueString("sb.assist");
logger.info("...... space.ref=" + spaceRef);
logger.info("...... sb.team=" + sbTeam);
logger.info("...... sb.assist=" + sbAssist);
// read selection
String sSelection = document.getItemValueString("invoice.selection");
// cut first ,
if (sSelection.startsWith(",")) {
sSelection = sSelection.substring(1);
}
String[] ids = sSelection.split(",");
if (ids.length == 0 || ids[0].isEmpty()) {
throw new PluginException(InvoiceDispatchAdapter.class.getSimpleName(), "PROCESSING_ERROR",
"Es wurden keine Rechnungen zur Verteilung ausgewählt.");
}
for (String id : ids) {
// load invoice
ItemCollection invoice = workflowService.getWorkItem(id);
if (invoice != null) {
logger.info("...stapelverarbeitung : " + id);
invoice.setItemValue("space.ref", spaceRef);
invoice.setItemValue("sb.team", sbTeam);
invoice.setItemValue("sb.assist", sbAssist);
// append workitemref
document.appendItemValue("$workitemref", invoice.getUniqueID());
// now process invoice..... event = 20
try {
workflowService.processWorkItem(invoice, 20);
} catch (AccessDeniedException | ProcessingErrorException | PluginException | ModelException e) {
// Hier werfen wir keine Exception mehr sondern geben nur eine Warning auf der
// Console aus.
// Der User merkt also nicht wenn eine Rechnung nicht zugewiesen werden konnte
// throw new PluginException(InvoiceDispatchAdapter.class.getSimpleName(),
// "PROCESSING_ERROR",
// "Failed to process invoice : " + invoice.getUniqueID());
logger.info("Failed to process invoice : " + invoice.getUniqueID());
}
}
}
return document;
}
}