94 lines
No EOL
3.4 KiB
Java
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;
|
|
}
|
|
|
|
} |