implementation zahlungsavis POI funktion

This commit is contained in:
Ralph Soika 2022-01-21 16:55:07 +01:00
parent 0d5dbbd626
commit 011e9b0b47
6 changed files with 82 additions and 11 deletions

View file

@ -245,6 +245,12 @@
<artifactId>imixs-adapters-qrcode</artifactId> <artifactId>imixs-adapters-qrcode</artifactId>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- POI Adapter -->
<dependency>
<groupId>org.imixs.workflow</groupId>
<artifactId>imixs-adapters-poi</artifactId>
<scope>compile</scope>
</dependency>
<!-- Imixs-ML --> <!-- Imixs-ML -->
<dependency> <dependency>

View file

@ -1,6 +1,8 @@
package com.alexanderlogistics; package com.alexanderlogistics;
import java.io.IOException;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.inject.Inject; import javax.inject.Inject;
@ -8,13 +10,14 @@ import javax.inject.Inject;
import org.imixs.archive.core.SnapshotService; import org.imixs.archive.core.SnapshotService;
import org.imixs.workflow.FileData; import org.imixs.workflow.FileData;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.SignalAdapter;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.engine.WorkflowService; import org.imixs.workflow.engine.WorkflowService;
import org.imixs.workflow.exceptions.AdapterException; import org.imixs.workflow.exceptions.AdapterException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.poi.POIFindReplaceAdapter;
/** /**
* Der ZahlungsavisAdapter importiert eine Excel Datei aus einem Textblock * Der ZahlungsavisAdapter importiert eine Excel Datei aus einem Textblock
* *
@ -22,14 +25,26 @@ import org.imixs.workflow.exceptions.QueryException;
* {@code * {@code
<zahlungsavis name="textblock">textblock-ref</zahlungsavis> <zahlungsavis name="textblock">textblock-ref</zahlungsavis>
<zahlungsavis name="template">filename</zahlungsavis> <zahlungsavis name="template">filename</zahlungsavis>
} <zahlungsavis name="targetname">filename</zahlungsavis>
}
* </pre> * </pre>
* <p> * <p>
* Der Adapter erweitert den POIAdapter somit können felder aktualisiert werden:
*
* <pre>
* {@code
* <poi-update name="findreplace">
<find>F4</find>
<replace><itemvalue>numsequencenumber</itemvalue></replace>
<type>text</type>
</poi-update>
}
* </pre>
* *
* @version 1.0 * @version 1.0
* @author rsoika * @author rsoika
*/ */
public class ZahlungsavisExportAdapter implements SignalAdapter { public class ZahlungsavisExportAdapter extends POIFindReplaceAdapter {
private static Logger logger = Logger.getLogger(ZahlungsavisExportAdapter.class.getName()); private static Logger logger = Logger.getLogger(ZahlungsavisExportAdapter.class.getName());
@ -51,6 +66,7 @@ public class ZahlungsavisExportAdapter implements SignalAdapter {
* *
* @throws PluginException * @throws PluginException
*/ */
@SuppressWarnings("unchecked")
@Override @Override
public ItemCollection execute(ItemCollection document, ItemCollection event) public ItemCollection execute(ItemCollection document, ItemCollection event)
throws AdapterException, PluginException { throws AdapterException, PluginException {
@ -63,9 +79,27 @@ public class ZahlungsavisExportAdapter implements SignalAdapter {
} }
String textblock = evalItemCollection.getItemValueString("textblock"); String textblock = evalItemCollection.getItemValueString("textblock");
String template = evalItemCollection.getItemValueString("template"); String template = evalItemCollection.getItemValueString("template");
String targetName = evalItemCollection.getItemValueString("target-name");
// adapt text....
targetName = workflowService.adaptText(targetName, document);
appendExcelTemplate(document, textblock, template, targetName);
appendExcelTemplate(document, textblock, template); // Process POI instructions
// read the config
ItemCollection poiConfig = workflowService.evalWorkflowResult(event, "poi-update", document, false);
if (poiConfig == null || !poiConfig.hasItem("findreplace")) {
throw new PluginException(POIFindReplaceAdapter.class.getSimpleName(), CONFIG_ERROR,
"missing poi configuration");
}
List<String> replaceDevList = poiConfig.getItemValue("findreplace");
String eval = poiConfig.getItemValueString("eval");
try {
this.updateFileData(document.getFileData(targetName), document, replaceDevList, eval);
} catch (PluginException | IOException e) {
throw new PluginException(ZahlungsavisExportAdapter.class.getSimpleName(), ERROR_CONFIG,
"failed to update zahlungsavis - wrong POI configuraiton: " + e.getMessage());
}
return document; return document;
} }
@ -76,7 +110,7 @@ public class ZahlungsavisExportAdapter implements SignalAdapter {
* @param document * @param document
* @throws PluginException * @throws PluginException
*/ */
private void appendExcelTemplate(ItemCollection document, String textblockRef, String template) private void appendExcelTemplate(ItemCollection document, String textblockRef, String template, String targetName)
throws PluginException { throws PluginException {
if ((template == null || template.isEmpty()) || (textblockRef == null || textblockRef.isEmpty())) { if ((template == null || template.isEmpty()) || (textblockRef == null || textblockRef.isEmpty())) {
@ -92,9 +126,10 @@ public class ZahlungsavisExportAdapter implements SignalAdapter {
throw new PluginException(ZahlungsavisExportAdapter.class.getSimpleName(), ERROR_CONFIG, throw new PluginException(ZahlungsavisExportAdapter.class.getSimpleName(), ERROR_CONFIG,
"invalid zahlungsavis configuration in model event - template=" + template + " not found!"); "invalid zahlungsavis configuration in model event - template=" + template + " not found!");
} }
fileData.setName(targetName);
// append document // append document
logger.info("...append new Zahlugnsavis Template: " + template); logger.info("...append new Zahlugnsavis Template: " + targetName);
document.addFileData(fileData); document.addFileData(fileData);
} }

View file

@ -28,7 +28,7 @@
<org.imixs.workflow.version>5.2.14</org.imixs.workflow.version> <org.imixs.workflow.version>5.2.14</org.imixs.workflow.version>
<org.imixs.marty.version>4.2.0</org.imixs.marty.version> <org.imixs.marty.version>4.2.0</org.imixs.marty.version>
<org.imixs.office.version>4.5.0</org.imixs.office.version> <org.imixs.office.version>4.5.0</org.imixs.office.version>
<org.imixs.adapters.version>2.3.0</org.imixs.adapters.version> <org.imixs.adapters.version>2.3.1-SNAPSHOT</org.imixs.adapters.version>
<org.imixs.archive.version>2.2.14-SNAPSHOT</org.imixs.archive.version> <org.imixs.archive.version>2.2.14-SNAPSHOT</org.imixs.archive.version>
<org.imixs.melman.version>1.0.20</org.imixs.melman.version> <org.imixs.melman.version>1.0.20</org.imixs.melman.version>
<org.imixs.ml.version>1.1.5</org.imixs.ml.version> <org.imixs.ml.version>1.1.5</org.imixs.ml.version>
@ -180,6 +180,13 @@
<version>${org.imixs.adapters.version}</version> <version>${org.imixs.adapters.version}</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- POI Adapter -->
<dependency>
<groupId>org.imixs.workflow</groupId>
<artifactId>imixs-adapters-poi</artifactId>
<version>${org.imixs.adapters.version}</version>
<scope>provided</scope>
</dependency>
<!-- Imixs-Archive API --> <!-- Imixs-Archive API -->
<dependency> <dependency>

Binary file not shown.

View file

@ -69,6 +69,7 @@
<bpmn2:flowNodeRef>Task_2</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>Task_2</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_6</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateCatchEvent_6</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>EndEvent_3</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>EndEvent_3</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_2</bpmn2:flowNodeRef>
</bpmn2:lane> </bpmn2:lane>
</bpmn2:laneSet> </bpmn2:laneSet>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5" imixs:activityid="30" name="Stornieren"> <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5" imixs:activityid="30" name="Stornieren">
@ -330,7 +331,18 @@ result.isValid=true;
</imixs:item> </imixs:item>
<imixs:item name="txtactivityresult" type="xs:string"> <imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[ <zahlungsavis name="textblock">Zahlugnsavis Template</zahlungsavis> <imixs:value><![CDATA[ <zahlungsavis name="textblock">Zahlugnsavis Template</zahlungsavis>
<zahlungsavis name="template">zahlungsavis_template.xls</zahlungsavis>]]></imixs:value> <zahlungsavis name="template">zahlungsavis_template.xlsx</zahlungsavis>
<zahlungsavis name="target-name">zahlungsavis_<itemvalue>numsequencenumber</itemvalue>.xlsx</zahlungsavis>
<poi-update name="findreplace">
<find>C10</find>
<replace><itemvalue>numsequencenumber</itemvalue></replace>
<type>text</type>
</poi-update>
<poi-update name="findreplace">
<find>F10</find>
<replace><itemvalue>$modified</itemvalue></replace>
<type>date</type>
</poi-update>]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="keyownershipmode" type="xs:string"> <imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value> <imixs:value><![CDATA[0]]></imixs:value>
@ -530,7 +542,18 @@ result.isValid=true;
</imixs:item> </imixs:item>
<imixs:item name="txtactivityresult" type="xs:string"> <imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[ <zahlungsavis name="textblock">Zahlugnsavis Template</zahlungsavis> <imixs:value><![CDATA[ <zahlungsavis name="textblock">Zahlugnsavis Template</zahlungsavis>
<zahlungsavis name="template">zahlungsavis_template.xls</zahlungsavis>]]></imixs:value> <zahlungsavis name="template">zahlungsavis_template.xlsx</zahlungsavis>
<zahlungsavis name="target-name">zahlungsavis_<itemvalue>numsequencenumber</itemvalue>.xlsx</zahlungsavis>
<poi-update name="findreplace">
<find>C10</find>
<replace><itemvalue>numsequencenumber</itemvalue></replace>
<type>text</type>
</poi-update>
<poi-update name="findreplace">
<find>F10</find>
<replace><itemvalue>$modified</itemvalue></replace>
<type>date</type>
</poi-update>]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="keyownershipmode" type="xs:string"> <imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value> <imixs:value><![CDATA[0]]></imixs:value>