org.imixs.workflow
diff --git a/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java
index ae2d4f5..449ac2b 100644
--- a/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java
+++ b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java
@@ -120,55 +120,57 @@ public class AGLAnalyticControllerDebitor implements Serializable {
link = link + "&processref=" + process.getUniqueID() + "&phrase=" + getDbtNr();
}
if ("analytic.invoices.count.all".equals(event.getKey())) {
- event.setValue("" + countAll);
- event.setLabel(formatTotals(totalAllCurrency1, totalAllCurrency2));
- event.setDescription("Total invoices");
- event.getWorkitem().setItemValue("invoices.total", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", countAll);
+ event.getData().setItemValue("label", formatTotals(totalAllCurrency1, totalAllCurrency2));
+ event.getData().setItemValue("description", "Total invoices");
+ event.getWorkitem().setItemValue("invoices.total", countAll);
+ event.getWorkitem().setItemValue("link", link);
}
if ("analytic.invoices.count.open".equals(event.getKey())) {
- event.setValue("" + countOpen);
- event.setLabel(formatTotals(totalOpenCurrency1, totalOpenCurrency2));
- event.setDescription("Total invoices not yet in due");
- event.getWorkitem().setItemValue("invoices.total.open", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", "" + countOpen);
+ event.getData().setItemValue("label", formatTotals(totalOpenCurrency1, totalOpenCurrency2));
+ event.getData().setItemValue("description", "Total invoices not yet in due");
+ event.getWorkitem().setItemValue("invoices.total.open", countOpen);
+ event.getWorkitem().setItemValue("link", link);
}
if ("analytic.invoices.count.due".equals(event.getKey())) {
- event.setValue("" + countDue);
- event.setLabel(formatTotals(totalDueCurrency1, totalDueCurrency2));
- event.setDescription("Total invoices in due");
- event.getWorkitem().setItemValue("invoices.total.due", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", "" + countDue);
+ event.getData().setItemValue("label", formatTotals(totalDueCurrency1, totalDueCurrency2));
+ event.getData().setItemValue("description", "Total invoices in due");
+ event.getWorkitem().setItemValue("invoices.total.due", countDue);
+ event.getWorkitem().setItemValue("link", link);
}
+
if ("analytic.invoices.count.dunning".equals(event.getKey())) {
- event.setValue("" + countDunning);
- event.setLabel(formatTotals(totalDunningCurrency1, totalDunningCurrency2));
- event.setDescription("Total invoices in dunning");
- event.getWorkitem().setItemValue("invoices.total.dunning", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", "" + countDunning);
+ event.getData().setItemValue("label", formatTotals(totalDunningCurrency1, totalDunningCurrency2));
+ event.getData().setItemValue("description", "Total invoices in dunning");
+ event.getWorkitem().setItemValue("invoices.total.dunning", countDunning);
+ event.getWorkitem().setItemValue("link", link);
}
if ("analytic.payment.avg.due".equals(event.getKey())) {
- event.setValue("" + averagePaymentDue);
- event.setLabel("days");
- event.setDescription("Average terms of credit in the last 12 months.");
- event.getWorkitem().setItemValue("payment.avg.due", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", "" + averagePaymentDue);
+ event.getData().setItemValue("label", "days");
+ event.getData().setItemValue("description", "Average terms of credit in the last 12 months.");
+ event.getWorkitem().setItemValue("payment.avg.due", averagePaymentDue);
+ event.getWorkitem().setItemValue("link", link);
}
+
if ("analytic.payment.avg.days".equals(event.getKey())) {
- event.setValue("" + averagePaymentDays);
- event.setLabel("days");
- event.setDescription("Average duration for payment during the last 12 months.");
- event.getWorkitem().setItemValue("payment.avg.days", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", "" + averagePaymentDays);
+ event.getData().setItemValue("label", "days");
+ event.getData().setItemValue("description", "Average duration for payment during the last 12 months.");
+ event.getWorkitem().setItemValue("payment.avg.days", averagePaymentDays);
+ event.getWorkitem().setItemValue("link", link);
}
if ("analytic.invoices.trend".equals(event.getKey())) {
- event.setValue(chartData);
- event.setLabel("Payment duration in days");
- event.setDescription("Payment practice by week");
+ event.getData().setItemValue("value", chartData);
+ event.getData().setItemValue("label", "Payment duration in days");
+ event.getData().setItemValue("description", "Payment practice by week");
}
}
diff --git a/src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java
index d20f511..76d3f7b 100644
--- a/src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java
+++ b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerOPListe.java
@@ -100,34 +100,39 @@ public class AGLAnalyticControllerOPListe implements Serializable {
+ "&spaceref=" + departmentID;
}
if ("analytic.invoices.count.all".equals(event.getKey())) {
- event.setValue("" + countAll);
- event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
- event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.all"));
- event.getWorkitem().setItemValue("invoices.total", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", "" + countAll);
+ event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices"));
+ event.getData().setItemValue("description",
+ resourceBundleHandler.findMessage("oplist.invoices.description.all"));
+ event.getWorkitem().setItemValue("invoices.total", countAll);
+ event.getWorkitem().setItemValue("link", link);
}
if ("analytic.invoices.count.open".equals(event.getKey())) {
- event.setValue("" + (countOpen));
- event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
- event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.open"));
- event.getWorkitem().setItemValue("invoices.total.open", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", "" + (countOpen));
+ event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices"));
+ event.getData().setItemValue("description",
+ resourceBundleHandler.findMessage("oplist.invoices.description.open"));
+ event.getWorkitem().setItemValue("invoices.total.open", countOpen);
+ event.getWorkitem().setItemValue("link", link);
}
if ("analytic.invoices.count.due".equals(event.getKey())) {
- event.setValue("" + countDue);
- event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
- event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.due"));
- event.getWorkitem().setItemValue("invoices.total.due", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", "" + countDue);
+ event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices"));
+ event.getData().setItemValue("description",
+ resourceBundleHandler.findMessage("oplist.invoices.description.due"));
+ event.getWorkitem().setItemValue("invoices.total.due", countDue);
+ event.getWorkitem().setItemValue("link", link);
}
+
if ("analytic.invoices.count.dunning".equals(event.getKey())) {
- event.setValue("" + countDunning);
- event.setLabel(resourceBundleHandler.findMessage("oplist.invoices"));
- event.setDescription(resourceBundleHandler.findMessage("oplist.invoices.description.dunning"));
- event.getWorkitem().setItemValue("invoices.total.dunning", event.getValue());
- event.setLink(link);
+ event.getData().setItemValue("value", "" + countDunning);
+ event.getData().setItemValue("label", resourceBundleHandler.findMessage("oplist.invoices"));
+ event.getData().setItemValue("description",
+ resourceBundleHandler.findMessage("oplist.invoices.description.dunning"));
+ event.getWorkitem().setItemValue("invoices.total.dunning", countDunning);
+ event.getWorkitem().setItemValue("link", link);
}
}
diff --git a/src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java
index 2f3682a..942cadf 100644
--- a/src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java
+++ b/src/main/java/com/alexanderlogistics/AGLAnalyticControllerSteuer.java
@@ -69,53 +69,57 @@ public class AGLAnalyticControllerSteuer implements Serializable {
link = link + "?processref=" + process.getUniqueID() + "&workflowgroup=Steuerbescheid";
}
if ("analytic.steuer.eust".equals(event.getKey())) {
- event.setValue(computeSteuerbescheideEUST());
- event.setLabel("EUR");
- event.setDescription("Gesamt Einfuhrumsatzsteuer (EUSt)");
- event.getWorkitem().setItemValue("eust.total", event.getValue());
- event.setLink(link);
+ Object eustTotal = computeSteuerbescheideEUST();
+ event.getData().setItemValue("value", eustTotal);
+ event.getData().setItemValue("label", "EUR");
+ event.getData().setItemValue("description", "Gesamt Einfuhrumsatzsteuer (EUSt)");
+ event.getWorkitem().setItemValue("eust.total", eustTotal);
+ event.getWorkitem().setItemValue("link", link);
}
+
if ("analytic.steuer.zoll".equals(event.getKey())) {
- event.setValue(computeSteuerbescheideZoll());
- event.setLabel("EUR");
- event.setDescription("Gesamt Zölle (ZOLLEU)");
- event.setLink(link);
+ event.getData().setItemValue("value", computeSteuerbescheideZoll());
+ event.getData().setItemValue("label", "EUR");
+ event.getData().setItemValue("description", "Gesamt Zölle (ZOLLEU)");
+ event.getWorkitem().setItemValue("link", link);
}
if ("analytic.steuer.total".equals(event.getKey())) {
- event.setValue(computeSteuerbescheideTotal());
- event.setLabel("EUR");
- event.setDescription("Alle Steuerbescheide die noch nicht abgerechnet wurden.");
- event.setLink(link);
+ event.getData().setItemValue("value", computeSteuerbescheideTotal());
+ event.getData().setItemValue("label", "EUR");
+ event.getData().setItemValue("description", "Alle Steuerbescheide die noch nicht abgerechnet wurden.");
+ event.getWorkitem().setItemValue("link", link);
}
if ("analytic.steuer.saldo".equals(event.getKey())) {
- event.setValue(computeSteuerbescheideSaldo());
- event.setLabel("EUR");
- event.setDescription("Saldo aller Steuerbescheide die noch nicht abgerechnet wurden.");
- event.setLink(link);
+ event.getData().setItemValue("value", computeSteuerbescheideSaldo());
+ event.getData().setItemValue("label", "EUR");
+ event.getData().setItemValue("description",
+ "Saldo aller Steuerbescheide die noch nicht abgerechnet wurden.");
+ event.getWorkitem().setItemValue("link", link);
}
if ("analytic.steuer.due".equals(event.getKey())) {
- event.setValue(computeSteuerbescheideSaldoDue());
- event.setLabel("EUR");
- event.setDescription("Saldo aller überfälligen Steuerbescheide die noch nicht abgerechnet wurden.");
- // event.setLink(link + "&task=Überfällig");
- event.setLink(link + "&task=1200");
+ event.getData().setItemValue("value", computeSteuerbescheideSaldoDue());
+ event.getData().setItemValue("label", "EUR");
+ event.getData().setItemValue("description",
+ "Saldo aller überfälligen Steuerbescheide die noch nicht abgerechnet wurden.");
+ // event.getWorkitem().setItemValue("link", link + "&task=Überfällig");
+ event.getWorkitem().setItemValue("link", link + "&task=1200");
}
// Charts
if ("analytic.steuer.trend".equals(event.getKey())) {
- event.setValue(accumulateSteuerbescheideByWeek());
- event.setLabel("Zoll & EUST");
- event.setDescription("Fälligkeiten nach KW");
+ event.getData().setItemValue("value", accumulateSteuerbescheideByWeek());
+ event.getData().setItemValue("label", "Zoll & EUST");
+ event.getData().setItemValue("description", "Fälligkeiten nach KW");
}
if ("analytic.steuer.trend.abteilung".equals(event.getKey())) {
- event.setValue(accumulateSteuerbescheideAbteilungByWeek());
- event.setLabel("Nach Abteilungen");
- event.setDescription("Offene Salden nach KW pro Abteilung");
+ event.getData().setItemValue("value", accumulateSteuerbescheideAbteilungByWeek());
+ event.getData().setItemValue("label", "Nach Abteilungen");
+ event.getData().setItemValue("description", "Offene Salden nach KW pro Abteilung");
}
}
diff --git a/src/main/java/org/imixs/workflow/office/forms/AnalyticController.java b/src/main/java/org/imixs/workflow/office/forms/AnalyticController.java
deleted file mode 100644
index 3952bd6..0000000
--- a/src/main/java/org/imixs/workflow/office/forms/AnalyticController.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package org.imixs.workflow.office.forms;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Logger;
-
-import org.imixs.workflow.ItemCollection;
-import org.imixs.workflow.faces.data.WorkflowController;
-
-import jakarta.enterprise.context.ConversationScoped;
-import jakarta.enterprise.event.Event;
-import jakarta.inject.Inject;
-import jakarta.inject.Named;
-
-/**
- * The AnalyticController is a conversationScoped controller that provides
- * values for the analytic-custom parts.
- *
- * A custom implementation can react on AnalyticEvent to compute values and
- * datasets.
- *
- * The controller implements a caching mechanism to avoid repeated calls for new
- * analytic values. If the analytic value is already stored in the current
- * workitem, no new value will be fired.
- *
- *
- * @author rsoika
- *
- */
-@Named
-@ConversationScoped
-public class AnalyticController implements Serializable {
-
- private static final long serialVersionUID = 1L;
- private static Logger logger = Logger.getLogger(AnalyticController.class.getName());
-
- @Inject
- protected Event analyticEvents;
-
- @Inject
- protected WorkflowController workflowController;
-
- /**
- * Returns a analytic value as a String for a given key.
- *
- * @param key
- * @return
- */
- public String getAsString(String key) {
- ItemCollection analyticData = computeValue(key);
- return analyticData.getItemValueString("value");
- }
-
- /**
- * Returns a analytic value as a Json String for a given key.
- *
- * @param key
- * @return
- */
- public String getAsJson(String key) {
- ItemCollection analyticData = computeValue(key);
- String jsonval = analyticData.getItemValueString("value");
- if (jsonval == null || jsonval.isEmpty()) {
- return "null";
- } else {
- return jsonval;
- }
- }
-
- /**
- * Returns a analytic value as a Double for a given key.
- *
- * @param key
- * @return
- */
- public double getAsDouble(String key) {
- ItemCollection analyticData = computeValue(key);
- return analyticData.getItemValueDouble("value");
- }
-
- /**
- * Returns the analytic label for a given key
- *
- * @param key
- * @return
- */
- public String getLabel(String key) {
- ItemCollection analyticData = computeValue(key);
- return analyticData.getItemValueString("label");
- }
-
- /**
- * Returns the analytic optional link for a given key
- *
- * @param key
- * @return
- */
- public String getLink(String key) {
- ItemCollection analyticData = computeValue(key);
- return analyticData.getItemValueString("link");
- }
-
- /**
- * Returns the analytic description for a given key
- *
- * @param key
- * @return
- */
- public String getDescription(String key) {
- ItemCollection analyticData = computeValue(key);
- return analyticData.getItemValueString("description");
- }
-
- /**
- * Computes an analytic value. The method cache the value in the item key.
- *
- * An observer controller is responsible to cache or reset the cached values if
- * needed.
- *
- * @param key
- * @return
- */
- protected ItemCollection computeValue(String key) {
- if (workflowController.getWorkitem() != null) {
- logger.fine("fire analytic event for key '" + key + "'");
- // Fire the Analytics Event for this key
- AnalyticEvent event = new AnalyticEvent(key, workflowController.getWorkitem());
- if (analyticEvents != null) {
- analyticEvents.fire(event);
- if (event.getValue() != null) {
- ItemCollection details = new ItemCollection();
- details.setItemValue("value", event.getValue());
- details.setItemValue("label", event.getLabel());
- details.setItemValue("description", event.getDescription());
- details.setItemValue("link", event.getLink());
- // cache result
- implodeDetails(key, details);
- }
- }
- }
-
- // analytic value is now already cached!
- return explodeDetails(key);
- }
-
- /**
- * Convert the List of ItemCollections back into a List of Map elements
- *
- * @param workitem
- */
- @SuppressWarnings({ "rawtypes" })
- private void implodeDetails(String key, ItemCollection details) {
- // convert the child ItemCollection elements into a List of Map
- List