optimierung Debitor Statistic

This commit is contained in:
Ralph Soika 2024-10-09 09:04:04 +02:00
parent a5a17927ee
commit 8a0e3b1e26
3 changed files with 534 additions and 55 deletions

View file

@ -1,6 +1,7 @@
package com.alexanderlogistics;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
@ -12,7 +13,7 @@ import org.imixs.workflow.faces.data.WorkflowController;
import org.imixs.workflow.office.forms.AnalyticController;
import org.imixs.workflow.office.forms.AnalyticEvent;
import jakarta.enterprise.context.RequestScoped;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.enterprise.event.Observes;
import jakarta.inject.Inject;
import jakarta.inject.Named;
@ -25,7 +26,8 @@ import jakarta.inject.Named;
*
*/
@Named
@RequestScoped
// @RequestScoped
@ConversationScoped
public class AGLAnalyticControllerDebitor implements Serializable {
private static final long serialVersionUID = 1L;
@ -40,14 +42,27 @@ public class AGLAnalyticControllerDebitor implements Serializable {
@Inject
TeamService teamService;
// @Inject
// protected DebitorStatistikController debitorStatistikController;
List<ItemCollection> steuerbescheide = null;
List<ItemCollection> invoices = null;
public void onEvent(@Observes AnalyticEvent event) {
logger.info("...debitor analysis....");
if (!"workitem".equals(event.getWorkitem().getType())) {
// no op
return;
}
String dbtrNumber = event.getWorkitem().getItemValueString("dbtr.number");
String dbtrNumberLast = event.getWorkitem().getItemValueString("dbtr.number.last");
// Recompute only if last dbtr.number has changed or no values yet computed
// load all invoices?
if (invoices == null || (!dbtrNumber.isEmpty() && !dbtrNumber.equals(dbtrNumberLast))) {
logger.info("Analyse new debitor data for : " + dbtrNumber);
loadRechnungen();
event.getWorkitem().setItemValue("dbtr.number.last", dbtrNumber);
}
ItemCollection process = teamService.getProcessByName("Mahnwesen");
String link = "/pages/workitems/worklist.xhtml?processref=" + process.getUniqueID()
+ "&workflowgroup=Steuerbescheid";
@ -75,6 +90,23 @@ public class AGLAnalyticControllerDebitor implements Serializable {
event.getWorkitem().setItemValue("invoices.total.due", event.getValue());
event.setLink(link);
}
}
private void loadRechnungen() {
if (getDbtNr().isEmpty()) {
invoices = new ArrayList();
} else {
String query = "(type:workitem) AND dbtr.number:" + getDbtNr()
+ " AND $modelversion:rechnungsausgang-*";
try {
logger.info("...debitor analysis for " + getDbtNr() + "....");
invoices = documentService.find(query, 999, 0, "$created", false);
} catch (QueryException e) {
logger.warning("Failed to query invoices: " + query + " - Error: " + e.getMessage());
invoices = new ArrayList();
}
}
}
@ -85,15 +117,8 @@ public class AGLAnalyticControllerDebitor implements Serializable {
*/
public int getRechnungen() {
int result = 0;
if (getDbtNr().isEmpty()) {
return 0;
}
try {
result = documentService
.count("(type:workitem OR type:workitemarchive) AND dbtr.number:" + getDbtNr()
+ " AND $workflowgroup:\"Rechnungsausgang\"");
} catch (QueryException e) {
logger.severe("Failed to get statistic: " + e.getMessage());
if (invoices != null) {
result = invoices.size();
}
return result;
}
@ -104,16 +129,21 @@ public class AGLAnalyticControllerDebitor implements Serializable {
* @return
*/
public int getRechnungenOffen() {
// int result = 0;
// if (getDbtNr().isEmpty()) {
// return 0;
// }
// try {
// result = documentService
// .count("(type:workitem) AND dbtr.number:" + getDbtNr()
// + " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5000 TO 5099])");
// } catch (QueryException e) {
// logger.severe("Failed to get statistic: " + e.getMessage());
// }
// return result;
int result = 0;
if (getDbtNr().isEmpty()) {
return 0;
}
try {
result = documentService
.count("(type:workitem) AND dbtr.number:" + getDbtNr()
+ " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5000 TO 5099])");
} catch (QueryException e) {
logger.severe("Failed to get statistic: " + e.getMessage());
if (invoices != null) {
result = invoices.size();
}
return result;
}
@ -124,16 +154,21 @@ public class AGLAnalyticControllerDebitor implements Serializable {
* @return
*/
public int getRechnungenFaellig() {
// int result = 0;
// if (getDbtNr().isEmpty()) {
// return 0;
// }
// try {
// result = documentService
// .count("(type:workitem) AND dbtr.number:" + getDbtNr()
// + " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5100 TO 5199])");
// } catch (QueryException e) {
// logger.severe("Failed to get statistic: " + e.getMessage());
// }
// return result;
int result = 0;
if (getDbtNr().isEmpty()) {
return 0;
}
try {
result = documentService
.count("(type:workitem) AND dbtr.number:" + getDbtNr()
+ " AND $workflowgroup:\"Rechnungsausgang\" AND ($taskid:[5100 TO 5199])");
} catch (QueryException e) {
logger.severe("Failed to get statistic: " + e.getMessage());
if (invoices != null) {
result = invoices.size();
}
return result;
}

View file

@ -106,35 +106,36 @@ public class AnalyticController implements Serializable {
*/
protected ItemCollection computeValue(String key) {
if (workflowController.getWorkitem() != null) {
// try to fetch value from cache
if (!workflowController.getWorkitem().hasItem("analytic." + key)) {
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);
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());
implodeDetails(key, details);
return details;
}
if (event.getValue() == null) {
// set dummy value
ItemCollection details = new ItemCollection();
details.setItemValue("value", "");
details.setItemValue("label", "");
details.setItemValue("description", "No data available");
implodeDetails(key, details);
return details;
}
}
// try loading from cache
ItemCollection details = explodeDetails(key);
if (details == null) {
// set dummy value
details = new ItemCollection();
details.setItemValue("value", "");
details.setItemValue("label", "");
details.setItemValue("description", "No data available");
implodeDetails(key, details);
}
}
// analytic value is already cached!
// analytic value is now already cached!
return explodeDetails(key);
}
@ -144,7 +145,7 @@ public class AnalyticController implements Serializable {
* @param workitem
*/
@SuppressWarnings({ "rawtypes" })
public void implodeDetails(String key, ItemCollection details) {
private void implodeDetails(String key, ItemCollection details) {
// convert the child ItemCollection elements into a List of Map
List<Map> detailsList = new ArrayList<Map>();
detailsList.add(details.getAllItems());
@ -155,7 +156,7 @@ public class AnalyticController implements Serializable {
* converts the Map List of a workitem into a List of ItemCollectons
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public ItemCollection explodeDetails(String key) {
private ItemCollection explodeDetails(String key) {
// convert current list of childItems into ItemCollection elements
List<Object> mapOrderItems = workflowController.getWorkitem().getItemValue(key);
if (mapOrderItems != null && mapOrderItems.size() > 0) {

View file

@ -0,0 +1,443 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- origin at X=0.0 Y=0.0 --><bpmn2:definitions xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:imixs="http://www.imixs.org/bpmn2" xmlns:open-bpmn="http://open-bpmn.org/XMLSchema" xmlns:tl="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exporter="org.eclipse.bpmn2.modeler.core" exporterVersion="1.5.4.RC1-v20220528-0836-B1" id="Definitions_1" name="Definitions 1" targetNamespace="http://www.imixs.org/bpmn2">
<bpmn2:extensionElements>
<imixs:item name="txtworkflowmodelversion" type="xs:string">
<imixs:value><![CDATA[analyse-steuerbescheid-de-1.0]]></imixs:value>
</imixs:item>
<imixs:item name="txtfieldmapping" type="xs:string">
<imixs:value><![CDATA[Prozess-Verantwortliche|namprocessmanager]]></imixs:value>
<imixs:value><![CDATA[Prozess-Assistenz|namprocessassist]]></imixs:value>
<imixs:value><![CDATA[Buchhaltung|namprocessteam]]></imixs:value>
<imixs:value><![CDATA[Debitor-Mail|dbtr.mail]]></imixs:value>
</imixs:item>
<imixs:item name="txttimefieldmapping" type="xs:string">
<imixs:value><![CDATA[Wiedervorlage|datDate]]></imixs:value>
<imixs:value><![CDATA[Start|datFrom]]></imixs:value>
<imixs:value><![CDATA[Ende|datTo]]></imixs:value>
</imixs:item>
<imixs:item name="txtplugins" type="xs:string">
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.ResultPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.RulePlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.profile.ProfilePlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.plugins.SequenceNumberPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.team.TeamPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.profile.DeputyPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.OwnerPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.HistoryPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.LogPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.ApplicationPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.plugins.CommentPlugin]]></imixs:value>
<imixs:value><![CDATA[org.imixs.marty.profile.MailPlugin]]></imixs:value>
</imixs:item>
<open-bpmn:auto-align>true</open-bpmn:auto-align>
</bpmn2:extensionElements>
<bpmn2:signal id="Signal_1" name="com.alexanderlogistics.AGLAnalyticExcelAdapter"/>
<bpmn2:message id="Message_2" name="Html-Header">
<bpmn2:documentation id="Documentation_22"><![CDATA[<html>
<head>
<style type="text/css">
html, body, div, p, pre, h1, h2, h3, ul, ol, span, a, table, td, form, img,
li {
font-family: Arial;
font-style: normal;
font-variant: normal;
font-weight: normal;
font-size: 11pt;
}
body {
margin: 0;
padding: 1em;
min-width: 41em;
}
h2 {
font-size: 12pt;
font-weight: bold;
}
th {
border-bottom: 1px solid #ccc;
}
td { border:none;min-width:120px; }
th { font-weight: bold;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><itemvalue>$workflowstatus</itemvalue></title>
</head>
<body>]]></bpmn2:documentation>
</bpmn2:message>
<bpmn2:message id="Message_7" name="Html-Footer">
<bpmn2:documentation id="Documentation_15"><![CDATA[</body>
</html>]]></bpmn2:documentation>
</bpmn2:message>
<bpmn2:collaboration id="Collaboration_1" name="Mahnlauf">
<bpmn2:participant id="Participant_1" name="Steuerbescheid - Analyse " processRef="Process_1">
<bpmn2:documentation id="documentation_sqQYFQ"/>
</bpmn2:participant>
<bpmn2:participant id="Participant_2" name="SEPA-Export Pool" processRef="eingangsrechnung-de"/>
</bpmn2:collaboration>
<bpmn2:process id="eingangsrechnung-de" isExecutable="false" name="Default Process">
<bpmn2:documentation id="documentation_sxNNHw"/>
</bpmn2:process>
<bpmn2:process definitionalCollaborationRef="Collaboration_1" id="Process_1" isExecutable="false" name="Steuerbescheid - Analyse ">
<bpmn2:laneSet id="LaneSet_1" name="Lane Set 1">
<bpmn2:lane id="Lane_1" name="Buchhaltung">
<bpmn2:flowNodeRef>StartEvent_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>EndEvent_3</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>Task_2</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_8</bpmn2:flowNodeRef>
<bpmn2:documentation id="documentation_WBGJTA"/>
<bpmn2:flowNodeRef>DataObject_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_HrHS9A</bpmn2:flowNodeRef>
</bpmn2:lane>
</bpmn2:laneSet>
<bpmn2:startEvent id="StartEvent_1" name="Start">
<bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
<bpmn2:documentation id="documentation_5CHRCQ"/>
</bpmn2:startEvent>
<bpmn2:task id="Task_2" imixs:processid="1900" name="Archiviert">
<bpmn2:extensionElements>
<imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[<itemvalue format="EEE. dd. MMM. yyyy">$lasteventdate</itemvalue>]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>true</imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="keyaddreadfields" type="xs:string"/>
<imixs:item name="txtimageurl" type="xs:string">
<imixs:value><![CDATA[typcn-chart-pie||||typcn-tick,imixs-success]]></imixs:value>
</imixs:item>
<imixs:item name="txttype" type="xs:string">
<imixs:value><![CDATA[workitemarchive]]></imixs:value>
</imixs:item>
<imixs:item name="namaddreadaccess" type="xs:string">
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
</imixs:item>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[form_basic_read]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_4"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_OL83kQ</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_P5vJKg</bpmn2:incoming>
</bpmn2:task>
<bpmn2:sequenceFlow id="SequenceFlow_10" sourceRef="Task_2" targetRef="EndEvent_3">
<bpmn2:documentation id="documentation_WzPj2A"/>
</bpmn2:sequenceFlow>
<bpmn2:endEvent id="EndEvent_3" name="End">
<bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
<bpmn2:documentation id="documentation_sMnhoQ"/>
</bpmn2:endEvent>
<bpmn2:task id="Task_1" imixs:processid="1000" name="Erfassung">
<bpmn2:extensionElements>
<imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[<itemvalue format="dd.MM.yyyy">$lasteventdate</itemvalue>]]></imixs:value>
</imixs:item>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[alexander/form_basic]]></imixs:value>
</imixs:item>
<imixs:item name="txtimageurl" type="xs:string">
<imixs:value><![CDATA[typcn-chart-pie||]]></imixs:value>
</imixs:item>
<imixs:item name="txttype" type="xs:string">
<imixs:value><![CDATA[workitem]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>true</imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string">
<imixs:value><![CDATA[namprocessteam]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddreadfields" type="xs:string"/>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="namaddreadaccess" type="xs:string">
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
</imixs:item>
<imixs:item name="namaddwriteaccess" type="xs:string">
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_3"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_17AQjg</bpmn2:outgoing>
<bpmn2:outgoing>sequenceFlow_nZPhew</bpmn2:outgoing>
</bpmn2:task>
<bpmn2:sequenceFlow id="SequenceFlow_4" sourceRef="StartEvent_1" targetRef="Task_1">
<bpmn2:documentation id="documentation_p6trwA"/>
</bpmn2:sequenceFlow>
<bpmn2:dataObject id="DataObject_1" name="Form">
<bpmn2:documentation id="Documentation_17"><![CDATA[<?xml version="1.0"?>
<imixs-form>
<imixs-form-section columns="3" label="Offene Beträge">
<item name="analytic.steuer.zoll" type="custom" path="alexander/analyze_currency" label="Zoll:" />
<item name="analytic.steuer.eust" type="custom" path="alexander/analyze_currency" label="EUST:" />
<item name="analytic.steuer.total" type="custom" path="alexander/analyze_currency" label="Gesamt:" />
<item name="analytic.steuer.saldo" type="custom" path="alexander/analyze_currency" label="Saldo:" />
<item name="analytic.steuer.due" type="custom" path="alexander/analyze_currency" label="Saldo überfällig:" />
</imixs-form-section>
<imixs-form-section columns="2" label="Trend nach Kalenderwoche">
<item name="analytic.steuer.trend" type="custom" path="alexander/analyze_chart" label="Zoll/Eust pro KW:" />
<item name="analytic.steuer.trend.abteilung" type="custom" path="alexander/analyze_chart" label="Gesamt pro Abteilungen:" />
</imixs-form-section>
</imixs-form>]]></bpmn2:documentation>
<bpmn2:dataState id="DataState_1"/>
</bpmn2:dataObject>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_8" imixs:activityid="40" name="Archivieren">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="keyaccessmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyscheduledactivity" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfmailbody" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="numnextactivityid" type="xs:int">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyfollowup" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="keylogdateformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5000]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Speichern]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Analysedaten archiviert]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_2"><![CDATA[Analysedaten archivieren.]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_17AQjg</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_OL83kQ</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:association id="Association_2" sourceRef="DataObject_1" targetRef="Task_1">
<bpmn2:documentation id="documentation_pDK6DQ"/>
</bpmn2:association>
<bpmn2:sequenceFlow id="sequenceFlow_17AQjg" sourceRef="Task_1" targetRef="IntermediateCatchEvent_8">
<bpmn2:documentation id="documentation_c8gvZg"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_OL83kQ" sourceRef="IntermediateCatchEvent_8" targetRef="Task_2">
<bpmn2:documentation id="documentation_j2zUkw"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_HrHS9A" imixs:activityid="20" name="Excel Export">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="keyaccessmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyscheduledactivity" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfmailbody" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="numnextactivityid" type="xs:int">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyfollowup" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="keylogdateformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5000]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Speichern]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Analysedaten archiviert]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="process">Mahnwesen</item>
<steuerbescheide name="excel-export">
<textblock>Steuerbescheide Template</textblock>
<template>steuerbescheid-liste_template.xlsx</template>
<target-name>steuerbescheide_<itemvalue format="yyyy-MM-dd">$lasteventdate</itemvalue>.xlsx</target-name>
</steuerbescheide>
<poi-update name="findreplace">
<find>K6</find>
<replace><itemvalue format="dd.MM.yyyy">$lasteventdate</itemvalue></replace>
<type>date</type>
</poi-update>
<poi-update name="eval">TOTAL1;TOTAL2;TOTAL3;TOTAL4</poi-update>
]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_pCTOtQ"><![CDATA[Excel Datei erzeugen]]></bpmn2:documentation>
<bpmn2:signalEventDefinition id="signalEventDefinition_007muw" signalRef="Signal_1"/>
<bpmn2:incoming>sequenceFlow_nZPhew</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_P5vJKg</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_nZPhew" sourceRef="Task_1" targetRef="event_HrHS9A">
<bpmn2:documentation id="documentation_IN9m7w"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_P5vJKg" sourceRef="event_HrHS9A" targetRef="Task_2">
<bpmn2:documentation id="documentation_gV4coQ"/>
</bpmn2:sequenceFlow>
</bpmn2:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Process Diagram">
<bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_1">
<bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_Participant_1" isHorizontal="true">
<dc:Bounds height="330.0" width="960.0" x="100.0" y="150.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Lane_1" id="BPMNShape_Lane_1" isHorizontal="true">
<dc:Bounds height="330.0" width="930.0" x="130.0" y="150.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="StartEvent_1" id="BPMNShape_1">
<dc:Bounds height="36.0" width="36.0" x="197.0" y="297.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_1" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="169.5" y="337.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_1" id="BPMNShape_Task_1">
<dc:Bounds height="50.0" width="110.0" x="290.0" y="290.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EndEvent_3" id="BPMNShape_EndEvent_2">
<dc:Bounds height="36.0" width="36.0" x="757.0" y="297.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_85" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="728.0" y="337.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_2" id="BPMNShape_Task_2">
<dc:Bounds height="50.0" width="110.0" x="570.0" y="290.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="DataObject_1" id="BPMNShape_DataObject_1">
<dc:Bounds height="50.0" width="35.0" x="290.0" y="190.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_13">
<dc:Bounds height="20.0" width="100.0" x="258.0" y="240.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Message_2" id="BPMNShape_Message_1">
<dc:Bounds height="20.0" width="30.0" x="119.0" y="59.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_35">
<dc:Bounds height="20.0" width="100.0" x="84.0" y="79.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Message_7" id="BPMNShape_Message_4">
<dc:Bounds height="20.0" width="30.0" x="213.0" y="59.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_40">
<dc:Bounds height="20.0" width="100.0" x="178.0" y="79.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_8" id="BPMNShape_IntermediateCatchEvent_8">
<dc:Bounds height="36.0" width="36.0" x="467.0" y="297.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_24">
<dc:Bounds height="20.0" width="100.0" x="434.5" y="337.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_10" id="BPMNEdge_SequenceFlow_10" sourceElement="BPMNShape_Task_2" targetElement="BPMNShape_EndEvent_2">
<bpmndi:BPMNLabel id="BPMNLabel_26"/>
<di:waypoint x="680.0" y="315.0"/>
<di:waypoint x="757.0" y="315.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_4" id="BPMNEdge_SequenceFlow_4" sourceElement="BPMNShape_1" targetElement="BPMNShape_Task_1">
<bpmndi:BPMNLabel id="BPMNLabel_11"/>
<di:waypoint x="233.0" y="315.0"/>
<di:waypoint x="290.0" y="315.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="Association_2" id="BPMNEdge_Association_2" sourceElement="BPMNShape_DataObject_1" targetElement="BPMNShape_Task_1">
<bpmndi:BPMNLabel id="BPMNLabel_17"/>
<di:waypoint x="325.0" y="213.0"/>
<di:waypoint x="345.0" y="213.0"/>
<di:waypoint x="345.0" y="290.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_17AQjg" id="BPMNEdge_oSvh0w" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_IntermediateCatchEvent_8">
<di:waypoint x="400.0" y="315.0"/>
<di:waypoint x="467.0" y="315.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_OL83kQ" id="BPMNEdge_lwO0vA" sourceElement="BPMNShape_IntermediateCatchEvent_8" targetElement="BPMNShape_Task_2">
<di:waypoint x="503.0" y="315.0"/>
<di:waypoint x="570.0" y="315.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_HrHS9A" id="BPMNShape_hrK7fA">
<dc:Bounds height="36.0" width="36.0" x="327.0" y="387.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_CJ3Faw">
<dc:Bounds height="20.0" width="100.0" x="295.0" y="426.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_nZPhew" id="BPMNEdge_5PzaQQ" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_hrK7fA">
<di:waypoint x="345.0" y="340.0"/>
<di:waypoint x="345.0" y="387.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_P5vJKg" id="BPMNEdge_aN5clQ" sourceElement="BPMNShape_hrK7fA" targetElement="BPMNShape_Task_2">
<di:waypoint x="363.0" y="405.0"/>
<di:waypoint x="623.0" y="405.0"/>
<di:waypoint x="623.0" y="340.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
<dc:Font name="arial" size="9.0"/>
</bpmndi:BPMNLabelStyle>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>