impl op liste
This commit is contained in:
parent
33650626e9
commit
6977228367
7 changed files with 1154 additions and 0 deletions
|
|
@ -0,0 +1,335 @@
|
|||
package com.alexanderlogistics;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.poi.ss.usermodel.CellCopyPolicy;
|
||||
import org.apache.poi.ss.util.CellReference;
|
||||
import org.apache.poi.xssf.usermodel.XSSFRow;
|
||||
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.imixs.archive.core.SnapshotService;
|
||||
import org.imixs.workflow.FileData;
|
||||
import org.imixs.workflow.ItemCollection;
|
||||
import org.imixs.workflow.engine.DocumentService;
|
||||
import org.imixs.workflow.engine.WorkflowService;
|
||||
import org.imixs.workflow.exceptions.AdapterException;
|
||||
import org.imixs.workflow.exceptions.PluginException;
|
||||
import org.imixs.workflow.exceptions.QueryException;
|
||||
import org.imixs.workflow.poi.POIFindReplaceAdapter;
|
||||
|
||||
/**
|
||||
* Der OPListExportAdapter importiert eine Excel Datei aus einem Textblock
|
||||
*
|
||||
* <pre>
|
||||
* {@code
|
||||
<opliste name="textblock">textblock-ref</opliste>
|
||||
<opliste name="template">filename</opliste>
|
||||
<opliste name="targetname">filename</opliste>
|
||||
}
|
||||
* </pre>
|
||||
* <p>
|
||||
* Der Adapter erweitert den POIAdapter somit können felder aktualisiert werden
|
||||
* (siehe POIFineReplaceAdapter).
|
||||
*
|
||||
* <p>
|
||||
* Der Adapter kopiert die Rechnungsdaten in neue Zeilen, welche ab Zeilnenummer
|
||||
* 16 eingefügt werden.
|
||||
* <p>
|
||||
*
|
||||
* Abschliessend wird die Zelle 'TOTAL' noch aktualisiert.
|
||||
*
|
||||
* @version 1.0
|
||||
* @author rsoika
|
||||
*/
|
||||
public class OPListExportAdapter extends POIFindReplaceAdapter {
|
||||
|
||||
private static Logger logger = Logger.getLogger(OPListExportAdapter.class.getName());
|
||||
|
||||
public static final String ERROR_CONFIG = "CONFIG_ERROR";
|
||||
final String TYPE_TEXTBLOCK = "textblock";
|
||||
|
||||
@Inject
|
||||
WorkflowService workflowService;
|
||||
|
||||
@Inject
|
||||
DocumentService documentService;
|
||||
|
||||
@Inject
|
||||
SnapshotService snapshotService;
|
||||
|
||||
/**
|
||||
* This method finds or create the Zahlungsavis and adds a reference
|
||||
* ($workitemref) to the current invoice.
|
||||
*
|
||||
* @throws PluginException
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public ItemCollection execute(ItemCollection document, ItemCollection event)
|
||||
throws AdapterException, PluginException {
|
||||
|
||||
// read the zahlungsavis options
|
||||
ItemCollection evalItemCollection = workflowService.evalWorkflowResult(event, "opliste", document, false);
|
||||
if (evalItemCollection == null) {
|
||||
throw new PluginException(OPListExportAdapter.class.getSimpleName(), ERROR_CONFIG,
|
||||
"missing op-list configuration in model event - please check model configuration");
|
||||
}
|
||||
String textblock = evalItemCollection.getItemValueString("textblock");
|
||||
String template = evalItemCollection.getItemValueString("template");
|
||||
String targetName = evalItemCollection.getItemValueString("target-name");
|
||||
// adapt text....
|
||||
targetName = workflowService.adaptText(targetName, document);
|
||||
|
||||
appendExcelTemplate(document, textblock, template, targetName);
|
||||
|
||||
// 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);
|
||||
|
||||
// now we add separate lines for each invoice....
|
||||
insertInvoiceRows(document, targetName);
|
||||
} catch (PluginException | IOException | QueryException e) {
|
||||
throw new PluginException(OPListExportAdapter.class.getSimpleName(), ERROR_CONFIG,
|
||||
"failed to update op-liste: " + e.getMessage());
|
||||
}
|
||||
return document;
|
||||
}
|
||||
|
||||
/**
|
||||
* This helper method inserts a row for each invoice of the current Zahlunsavis
|
||||
* at row 16 into the excel template file
|
||||
* <p>
|
||||
* The method copies the Row A16 as a reference row
|
||||
* <p>
|
||||
* The named cell 'TOTAL' should contain the summary formula. It will be
|
||||
* evaluated at the end.
|
||||
*
|
||||
* @throws PluginException
|
||||
* @throws QueryException
|
||||
*/
|
||||
private void insertInvoiceRows(ItemCollection document, String fileName) throws PluginException, QueryException {
|
||||
|
||||
double saldo = 0;
|
||||
// load dummy rechnungen
|
||||
String spaceID = document.getItemValueString("space.ref");
|
||||
|
||||
Map<String, List<ItemCollection>> invoiceMap = groupInvoicesBySpaceID(spaceID);
|
||||
|
||||
FileData fileData = document.getFileData(fileName);
|
||||
|
||||
// load XSSFWorkbook
|
||||
try (InputStream imputStream = new ByteArrayInputStream(fileData.getContent())) {
|
||||
XSSFWorkbook doc = new XSSFWorkbook(imputStream);
|
||||
// NOTE: we only take the first sheet !
|
||||
XSSFSheet sheet = doc.getSheetAt(0);
|
||||
CellReference cr = new CellReference("A12");
|
||||
XSSFRow referenceRow = sheet.getRow(cr.getRow());
|
||||
int referenceRowPos = 12;
|
||||
int rowPos = 12;
|
||||
// int lastRow = sheet.getLastRowNum();
|
||||
int lastRow = 9999;
|
||||
logger.finest("Last rownum=" + lastRow);
|
||||
|
||||
int totalRowCount = invoiceMap.size();
|
||||
for (List<?> list : invoiceMap.values()) {
|
||||
totalRowCount = totalRowCount + list.size();
|
||||
}
|
||||
|
||||
sheet.shiftRows(rowPos, lastRow, totalRowCount, true, true);
|
||||
for (Map.Entry<String, List<ItemCollection>> entry : invoiceMap.entrySet()) {
|
||||
String dbtrNumber = entry.getKey();
|
||||
List<ItemCollection> invoices = entry.getValue();
|
||||
|
||||
// erzeuge eine Zwischenüberschrift für den Debitor....
|
||||
XSSFRow categoryRow = sheet.createRow(rowPos);
|
||||
categoryRow.copyRowFrom(referenceRow, new CellCopyPolicy());
|
||||
// insert values
|
||||
categoryRow.getCell(0).setCellValue(dbtrNumber);
|
||||
String debitorName = invoices.get(0).getItemValueString("dbtr.name");
|
||||
categoryRow.getCell(1).setCellValue(debitorName);
|
||||
|
||||
// calculate summ of all invoices
|
||||
double catSum = 0;
|
||||
for (ItemCollection invoice : invoices) {
|
||||
catSum = catSum + invoice.getItemValueDouble("invoice.total");
|
||||
}
|
||||
if (catSum < 0) {
|
||||
// SOLL
|
||||
categoryRow.getCell(6).setCellValue(catSum);
|
||||
} else {
|
||||
categoryRow.getCell(8).setCellValue(catSum);
|
||||
}
|
||||
|
||||
rowPos++;
|
||||
// jetzt füge alle Rechnungen an.
|
||||
for (ItemCollection invoice : invoices) {
|
||||
logger.finest("......copy row...");
|
||||
|
||||
// now create a new line..
|
||||
XSSFRow row = sheet.createRow(rowPos);
|
||||
row.copyRowFrom(referenceRow, new CellCopyPolicy());
|
||||
// insert values
|
||||
row.getCell(2).setCellValue(invoice.getItemValueString("invoice.number"));
|
||||
row.getCell(3).setCellValue(invoice.getItemValueString("invoice.text"));
|
||||
row.getCell(4).setCellValue(invoice.getItemValueDate("invoice.date"));
|
||||
row.getCell(5).setCellValue(invoice.getItemValueDate("invoice.duedate"));
|
||||
double total = invoice.getItemValueDouble("invoice.total");
|
||||
if (total < 0) {
|
||||
// SOLL
|
||||
row.getCell(6).setCellValue(total);
|
||||
row.getCell(7).setCellValue(invoice.getItemValueString("invoice.currency"));
|
||||
} else {
|
||||
// HABEN
|
||||
row.getCell(8).setCellValue(total);
|
||||
row.getCell(9).setCellValue(invoice.getItemValueString("invoice.currency"));
|
||||
}
|
||||
|
||||
saldo = saldo + total;
|
||||
rowPos++;
|
||||
}
|
||||
}
|
||||
// delete reference row 12
|
||||
sheet.shiftRows(referenceRowPos, lastRow + totalRowCount, -1, true, true);
|
||||
|
||||
// finally update the total formula...
|
||||
evalXSSFSheet(doc, sheet, "TOTAL");
|
||||
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
// write back the file
|
||||
|
||||
doc.write(byteArrayOutputStream);
|
||||
doc.close();
|
||||
byte[] newContent = byteArrayOutputStream.toByteArray();
|
||||
FileData fileDataNew = new FileData(fileData.getName(), newContent, fileData.getContentType(), null);
|
||||
// update the fileData
|
||||
document.addFileData(fileDataNew);
|
||||
document.setItemValue("space.saldo", saldo);
|
||||
logger.finest("......new document added");
|
||||
|
||||
} catch (IOException e) {
|
||||
throw new PluginException(OPListExportAdapter.class.getSimpleName(), ERROR_CONFIG,
|
||||
"failed to update zahlungsavis: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method loads a text-block for a specified ref and appends the named
|
||||
* fileData object of this document.
|
||||
*
|
||||
* @param document
|
||||
* @throws PluginException
|
||||
*/
|
||||
private void appendExcelTemplate(ItemCollection document, String textblockRef, String template, String targetName)
|
||||
throws PluginException {
|
||||
|
||||
if ((template == null || template.isEmpty()) || (textblockRef == null || textblockRef.isEmpty())) {
|
||||
throw new PluginException(OPListExportAdapter.class.getSimpleName(), ERROR_CONFIG,
|
||||
"invalid op-list configuration in model event - textblock/template reference not defined!");
|
||||
}
|
||||
|
||||
// load the text block
|
||||
FileData fileData = loadTextBlockFileData(textblockRef, template);
|
||||
|
||||
// do we found the document?
|
||||
if (fileData == null) {
|
||||
throw new PluginException(OPListExportAdapter.class.getSimpleName(), ERROR_CONFIG,
|
||||
"invalid op-list configuration in model event - template=" + template + " not found!");
|
||||
}
|
||||
fileData.setName(targetName);
|
||||
// append document
|
||||
logger.info("...append new op-list Template: " + targetName);
|
||||
|
||||
document.addFileData(fileData);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns a text-block ItemCollection for a specified name.
|
||||
*
|
||||
* @param name in attribute txtname
|
||||
*
|
||||
*
|
||||
*/
|
||||
public FileData loadTextBlockFileData(String name, String fileName) {
|
||||
ItemCollection textBlockItemCollection = null;
|
||||
|
||||
// load text-block by name....
|
||||
String sQuery = "(type:\"" + TYPE_TEXTBLOCK + "\" AND txtname:\"" + name + "\")";
|
||||
Collection<ItemCollection> col;
|
||||
try {
|
||||
// find the textblock...
|
||||
col = documentService.find(sQuery, 1, 0);
|
||||
if (col.size() > 0) {
|
||||
textBlockItemCollection = col.iterator().next();
|
||||
// fetch the fileData...
|
||||
return snapshotService.getWorkItemFile(textBlockItemCollection.getUniqueID(), fileName);
|
||||
|
||||
} else {
|
||||
logger.warning("Missing text-block : '" + name + "'");
|
||||
}
|
||||
} catch (QueryException e) {
|
||||
logger.warning("getTextBlock - invalid query: " + e.getMessage());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Diese Methode groupiert eine Rechnugnsliste nach Debitorennummern
|
||||
*
|
||||
* @param spaceID
|
||||
* @return
|
||||
*/
|
||||
private Map<String, List<ItemCollection>> groupInvoicesBySpaceID(String spaceID) {
|
||||
|
||||
Map<String, List<ItemCollection>> result = new HashMap<>();
|
||||
|
||||
try {
|
||||
List<ItemCollection> invoices = documentService.find(
|
||||
"$modelversion:rechnungsausgang-de-1.0 AND type:workitem AND $uniqueidref:" + spaceID, 9999, 0);
|
||||
|
||||
for (ItemCollection invoice : invoices) {
|
||||
|
||||
String dbtrNumber = invoice.getItemValueString("dbtr.number");
|
||||
// haben wir shon ein listchen?
|
||||
List<ItemCollection> invoiceList = result.get(dbtrNumber);
|
||||
if (invoiceList == null) {
|
||||
// erzeuge eine neue liste
|
||||
invoiceList = new ArrayList<ItemCollection>();
|
||||
}
|
||||
|
||||
invoiceList.add(invoice);
|
||||
|
||||
// speicher wieder die neue liste
|
||||
result.put(dbtrNumber, invoiceList);
|
||||
|
||||
}
|
||||
|
||||
} catch (QueryException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
package com.alexanderlogistics;
|
||||
/*******************************************************************************
|
||||
* Imixs Workflow Technology
|
||||
* Copyright (C) 2003, 2008 Imixs Software Solutions GmbH,
|
||||
* http://www.imixs.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You can receive a copy of the GNU General Public
|
||||
* License at http://www.gnu.org/licenses/gpl.html
|
||||
*
|
||||
* Contributors:
|
||||
* Imixs Software Solutions GmbH - initial API and implementation
|
||||
* Ralph Soika
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Named;
|
||||
|
||||
|
||||
import org.imixs.workflow.engine.scheduler.SchedulerController;
|
||||
|
||||
/**
|
||||
* The DatevController is used to configure the DatevScheduler. This service is
|
||||
* used to generate datev export workitems.
|
||||
* <p>
|
||||
* The Controller creates a configuration entity "type=configuration;
|
||||
* txtname=datev".
|
||||
* <p>
|
||||
* The following config items are defined:
|
||||
*
|
||||
* The following config items are defined:
|
||||
*
|
||||
* <pre>
|
||||
* _model_version = model version for the SEPA export
|
||||
* _initial_task = inital task ID
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* @author rsoika
|
||||
*
|
||||
*/
|
||||
@Named(value = "oplistExportController")
|
||||
@RequestScoped
|
||||
public class OPListExportController extends SchedulerController {
|
||||
|
||||
public static final String OPLIST_EXPORT_CONFIGURATION = "OPLIST_EXPORT_CONFIGURATION";
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static Logger logger = Logger.getLogger(OPListExportController.class.getName());
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return OPLIST_EXPORT_CONFIGURATION;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the sepa scheduler class name. This name depends on the _export_type.
|
||||
*
|
||||
* There are two export interfaces available - csv and XML
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public String getSchedulerClass() {
|
||||
String schedulerClass = OPListExportScheduler.class.getName();
|
||||
logger.finest("...... scheduler: " + schedulerClass);
|
||||
return schedulerClass;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
/*******************************************************************************
|
||||
* Imixs Workflow Technology
|
||||
* Copyright (C) 2001, 2008 Imixs Software Solutions GmbH,
|
||||
* http://www.imixs.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You can receive a copy of the GNU General Public
|
||||
* License at http://www.gnu.org/licenses/gpl.html
|
||||
*
|
||||
* Contributors:
|
||||
* Imixs Software Solutions GmbH - initial API and implementation
|
||||
* Ralph Soika
|
||||
*******************************************************************************/
|
||||
package com.alexanderlogistics;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.ejb.EJB;
|
||||
|
||||
import org.imixs.marty.team.TeamService;
|
||||
import org.imixs.workflow.FileData;
|
||||
import org.imixs.workflow.ItemCollection;
|
||||
import org.imixs.workflow.engine.DocumentService;
|
||||
import org.imixs.workflow.engine.ModelService;
|
||||
import org.imixs.workflow.engine.ReportService;
|
||||
import org.imixs.workflow.engine.WorkflowService;
|
||||
import org.imixs.workflow.engine.scheduler.Scheduler;
|
||||
import org.imixs.workflow.engine.scheduler.SchedulerException;
|
||||
import org.imixs.workflow.engine.scheduler.SchedulerService;
|
||||
import org.imixs.workflow.exceptions.AccessDeniedException;
|
||||
import org.imixs.workflow.exceptions.ModelException;
|
||||
import org.imixs.workflow.exceptions.PluginException;
|
||||
import org.imixs.workflow.exceptions.ProcessingErrorException;
|
||||
import org.imixs.workflow.exceptions.QueryException;
|
||||
|
||||
/**
|
||||
* The OPListExportScheduler erzeugt für jeden Berich ein neues Workitem mit
|
||||
* einer Excel Datei mit allen offenen Rechnungen.
|
||||
* <p>
|
||||
* The class implements the interface
|
||||
* _org.imixs.workflow.engine.scheduler.Scheduler_ and can be used in
|
||||
* combination with the Imxis-Workflow Scheduler Service.
|
||||
*
|
||||
* @see SchedulerService
|
||||
* @author rsoika
|
||||
*
|
||||
*/
|
||||
public class OPListExportScheduler implements Scheduler {
|
||||
|
||||
public static final int MAX_COUNT = 999;
|
||||
public static final String OPLIST_ERROR = "OPLIST_ERROR";
|
||||
|
||||
public static DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");
|
||||
public static DecimalFormat decimalFormat = new DecimalFormat("0.00",
|
||||
new DecimalFormatSymbols(java.util.Locale.GERMANY));
|
||||
|
||||
@EJB
|
||||
DocumentService documentService;
|
||||
|
||||
@EJB
|
||||
WorkflowService workflowService;
|
||||
|
||||
@EJB
|
||||
ModelService modelService;
|
||||
|
||||
@EJB
|
||||
TeamService teamService;
|
||||
|
||||
@EJB
|
||||
ReportService reportService;
|
||||
|
||||
private static Logger logger = Logger.getLogger(OPListExportScheduler.class.getName());
|
||||
|
||||
/**
|
||||
* This is the method which processes the timeout event depending on the running
|
||||
* timer settings.
|
||||
*
|
||||
*
|
||||
*
|
||||
* @param timer
|
||||
* @throws QueryException
|
||||
*/
|
||||
public ItemCollection run(ItemCollection configuration) throws SchedulerException {
|
||||
List<ItemCollection> invoices = null;
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
int lines = 0;
|
||||
|
||||
configuration.removeItem("_scheduler_logmessage");
|
||||
logMessage(configuration, "....export OP-Listen...");
|
||||
|
||||
// Hole dir alle Bereiche
|
||||
|
||||
List<ItemCollection> spaces = teamService.getSpaces();
|
||||
// Jezt erzeugen wir für jeden Berich ein neues Workitem falls offene Rechnungen
|
||||
for (ItemCollection space : spaces) {
|
||||
|
||||
ItemCollection workitem = new ItemCollection();
|
||||
workitem.setItemValue("space.ref", space.getUniqueID());
|
||||
|
||||
try {
|
||||
workflowService.processWorkItem( //
|
||||
workitem.task(1000). //
|
||||
event(100). //
|
||||
model("opliste-de-1.0"));
|
||||
} catch (AccessDeniedException | ProcessingErrorException | PluginException | ModelException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// transfer file via FTP...
|
||||
DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmm");
|
||||
// MMM d, yyyy HH:mm a
|
||||
FileData fileData = new FileData("OPD_" + formatter.format(new Date()) + ".txt",
|
||||
String.valueOf(buffer).getBytes(), null, null);
|
||||
|
||||
logMessage(configuration, "...completed: " + lines + " lines");
|
||||
return configuration;
|
||||
}
|
||||
|
||||
private void logMessage(ItemCollection configuration, String message) {
|
||||
configuration.appendItemValue("_scheduler_logmessage", message);
|
||||
logger.info(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@
|
|||
<li><h:link outcome="/pages/admin/cargosoft_export">Cargosoft Export</h:link></li>
|
||||
<li><h:link outcome="/pages/admin/analyse_invoicing">Analyse Rechnungseingang</h:link></li>
|
||||
<li><h:link outcome="/pages/admin/kreditor">Kreditoren/Debitoren</h:link></li>
|
||||
<li><h:link outcome="/pages/admin/oplist_export">OP Listen Export</h:link></li>
|
||||
</ul>
|
||||
</f:subview>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,83 @@
|
|||
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:f="http://java.sun.com/jsf/core"
|
||||
xmlns:h="http://java.sun.com/jsf/html"
|
||||
xmlns:ui="http://java.sun.com/jsf/facelets"
|
||||
xmlns:i="http://java.sun.com/jsf/composite/imixs"
|
||||
xmlns:c="http://java.sun.com/jsp/jstl/core"
|
||||
xmlns:marty="http://java.sun.com/jsf/composite/marty"
|
||||
template="/layout/template.xhtml">
|
||||
|
||||
<ui:define name="content">
|
||||
<f:view>
|
||||
|
||||
<script type="text/javascript">
|
||||
/*<![CDATA[*/
|
||||
|
||||
function updateStatustPanel(data) {
|
||||
//initUserInput($('#userselector_id'));
|
||||
if (data.status === 'success') {
|
||||
// select with wildcard operator
|
||||
$('[id$=status_panel]').imixsLayout();
|
||||
}
|
||||
}
|
||||
/*]]>*/
|
||||
</script>
|
||||
|
||||
<h:form id="import_form_id">
|
||||
|
||||
<div class="imixs-form">
|
||||
<div class="imixs-header">
|
||||
<h1>OP-Listen Verwaltung</h1>
|
||||
|
||||
<!-- ########## Error ########## -->
|
||||
<ui:include src="/pages/error_message.xhtml" />
|
||||
|
||||
</div>
|
||||
<div class="imixs-body">
|
||||
<div class="ui-state-highlight ui-corner-all"
|
||||
style="margin-bottom: 10px; padding: .5em;">
|
||||
<p>
|
||||
<span class="typcn typcn-lightbulb"></span> Die OP-Listen Verwaltung erzeugt regelmäßig
|
||||
Workitems mit einem aktuellen Abbild der offenen Ausgangsrechnungen, sortiert nach Bereichen.
|
||||
</p>
|
||||
</div>
|
||||
<!-- **** Export OP-Listen ***** -->
|
||||
<div class="imixs-form-section">
|
||||
<h2>Scheduler</h2>
|
||||
<!-- include timer control -->
|
||||
<ui:include src="sub_scheduler_control.xhtml">
|
||||
<ui:param name="schedulerController"
|
||||
value="#{oplistExportController}" />
|
||||
</ui:include>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="imixs-footer">
|
||||
<h:outputLabel value="#{message.modified}: " />
|
||||
<h:outputText
|
||||
value="#{cargosoftExportController.configuration.item['$modified']}">
|
||||
<f:convertDateTime timeZone="#{message.timeZone}" type="both"
|
||||
pattern="#{message.dateTimePattern}" />
|
||||
</h:outputText>
|
||||
|
||||
|
||||
<br />
|
||||
|
||||
<h:commandButton
|
||||
actionListener="#{oplistExportController.saveConfiguration()}"
|
||||
value="#{message.save}">
|
||||
</h:commandButton>
|
||||
|
||||
<h:commandButton value="#{message.close}" action="notes" />
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</h:form>
|
||||
</f:view>
|
||||
</ui:define>
|
||||
|
||||
|
||||
|
||||
</ui:composition>
|
||||
BIN
templates/op-liste_template.xlsx
Normal file
BIN
templates/op-liste_template.xlsx
Normal file
Binary file not shown.
514
workflow/opliste-de-1.0.0.bpmn
Normal file
514
workflow/opliste-de-1.0.0.bpmn
Normal file
|
|
@ -0,0 +1,514 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- origin at X=0.0 Y=0.0 -->
|
||||
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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:tl="http://www.w3.org/2001/XMLSchema" id="Definitions_1" exporter="org.eclipse.bpmn2.modeler.core" exporterVersion="1.5.4.RC1-v20220528-0836-B1" name="Definitions 1" targetNamespace="http://www.imixs.org/bpmn2">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtworkflowmodelversion" type="xs:string">
|
||||
<imixs:value><![CDATA[opliste-de-1.0]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtfieldmapping" type="xs:string">
|
||||
<imixs:value><![CDATA[Prozess-Verantwortliche| process.manager]]></imixs:value>
|
||||
<imixs:value><![CDATA[Prozess-Assistenz | process.assist]]></imixs:value>
|
||||
<imixs:value><![CDATA[Buchhaltung | process.team]]></imixs:value>
|
||||
<imixs:value><![CDATA[Abteilungsleiter |space.manager]]></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>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:signal id="Signal_1" name="com.alexanderlogistics.OPListExportAdapter"/>
|
||||
<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="Zahlungseingang">
|
||||
<bpmn2:participant id="Participant_1" name="OP-Liste" processRef="Process_1"/>
|
||||
<bpmn2:participant id="Participant_2" name="SEPA-Export Pool" processRef="eingangsrechnung-de"/>
|
||||
</bpmn2:collaboration>
|
||||
<bpmn2:process id="eingangsrechnung-de" name="SEPA-Export" isExecutable="false"/>
|
||||
<bpmn2:process id="Process_1" name="OP-Liste" definitionalCollaborationRef="Collaboration_1" isExecutable="false">
|
||||
<bpmn2:laneSet id="LaneSet_1" name="Lane Set 1">
|
||||
<bpmn2:lane id="Lane_1" name="Fachbereich">
|
||||
<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>Task_4</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_8</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_3</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_1</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_2</bpmn2:flowNodeRef>
|
||||
</bpmn2:lane>
|
||||
</bpmn2:laneSet>
|
||||
<bpmn2:startEvent id="StartEvent_1" name="Start">
|
||||
<bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
|
||||
</bpmn2:startEvent>
|
||||
<bpmn2:task id="Task_2" imixs:processid="1100" name="Versendet">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtworkflowsummary" type="xs:string">
|
||||
<imixs:value><![CDATA[<itemvalue>sequencenumber</itemvalue> <itemvalue format="dd.MM.yyyy">$created</itemvalue> - <itemvalue>space.name</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:value><![CDATA[space.manager]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyaddwritefields" type="xs:string">
|
||||
<imixs:value><![CDATA[space.manager]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyaddreadfields" type="xs:string">
|
||||
<imixs:value><![CDATA[space.manager]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtimageurl" type="xs:string">
|
||||
<imixs:value><![CDATA[typcn-chart-bar||||typcn-pin,imixs-warning]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txteditorid" type="xs:string">
|
||||
<imixs:value><![CDATA[form_basic_read]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txttype" type="xs:string">
|
||||
<imixs:value><![CDATA[workitem]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtworkflowabstract" type="CDATA">
|
||||
<imixs:value><![CDATA[]]></imixs:value>
|
||||
</imixs:item>
|
||||
<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_4"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
|
||||
<bpmn2:incoming>SequenceFlow_16</bpmn2:incoming>
|
||||
<bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
|
||||
</bpmn2:task>
|
||||
<bpmn2:endEvent id="EndEvent_3" name="End">
|
||||
<bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
|
||||
</bpmn2:endEvent>
|
||||
<bpmn2:task id="Task_1" imixs:processid="1000" name="Erstellung">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtworkflowsummary" type="xs:string">
|
||||
<imixs:value><![CDATA[<itemvalue>sequencenumber</itemvalue> <itemvalue format="dd.MM.yyyy">$created</itemvalue> - <itemvalue>space.name</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-bar||]]></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[space.manager]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyaddreadfields" type="xs:string">
|
||||
<imixs:value><![CDATA[space.manager]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyaddwritefields" type="xs:string">
|
||||
<imixs:value><![CDATA[space.manager]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtworkflowabstract" type="CDATA">
|
||||
<imixs:value><![CDATA[]]></imixs:value>
|
||||
</imixs:item>
|
||||
<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_3</bpmn2:outgoing>
|
||||
</bpmn2:task>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_4" sourceRef="StartEvent_1" targetRef="Task_1"/>
|
||||
<bpmn2:dataObject id="DataObject_1" name="Form">
|
||||
<bpmn2:documentation id="Documentation_17"><![CDATA[<?xml version="1.0"?>
|
||||
<imixs-form>
|
||||
<imixs-form-section columns="2">
|
||||
<item name="space.name" type="text" required="true" label="Fachbereich:" />
|
||||
|
||||
</imixs-form-section>
|
||||
|
||||
</imixs-form>]]></bpmn2:documentation>
|
||||
<bpmn2:dataState id="DataState_1"/>
|
||||
</bpmn2:dataObject>
|
||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" imixs:activityid="110" name="[template]">
|
||||
<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><![CDATA[Neue OP Liste]]></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><![CDATA[Bitte prüfen Sie die angefügte OP Liste
|
||||
|
||||
<attachments/>]]></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[0]]></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><![CDATA[]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtactivityresult" type="xs:string">
|
||||
<imixs:value><![CDATA[<item name="action">home</item>
|
||||
<item name="process">Mahnwesen</item>
|
||||
<opliste name="textblock">OP-Liste Template</opliste>
|
||||
<opliste name="template">op-liste_template.xlsx</opliste>
|
||||
<opliste name="target-name">op-liste_<itemvalue>space.name</itemvalue>_<itemvalue format="yyyy-MM-dd">$lasteventdate</itemvalue>.xlsx</opliste>
|
||||
|
||||
<poi-update name="findreplace">
|
||||
<find>C6</find>
|
||||
<replace><itemvalue>sequencenumber</itemvalue></replace>
|
||||
<type>text</type>
|
||||
</poi-update>
|
||||
<poi-update name="findreplace">
|
||||
<find>C8</find>
|
||||
<replace><itemvalue>space.name</itemvalue></replace>
|
||||
<type>text</type>
|
||||
</poi-update>
|
||||
|
||||
<poi-update name="findreplace">
|
||||
<find>I6</find>
|
||||
<replace><itemvalue format="dd.MM.yyyy">$lasteventdate</itemvalue></replace>
|
||||
<type>date</type>
|
||||
</poi-update>
|
||||
]]></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[OP Liste versendet]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||
<imixs:value>false</imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="nammailreceiver" type="xs:string"/>
|
||||
<imixs:item name="keymailreceiverfields" type="xs:string">
|
||||
<imixs:value><![CDATA[space.manager]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="Documentation_1"><![CDATA[OP-Liste an Fachbereich versenden]]></bpmn2:documentation>
|
||||
<bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing>
|
||||
<bpmn2:dataOutput id="DataOutput_2" name="Signal_1_Output"/>
|
||||
<bpmn2:dataOutputAssociation id="DataOutputAssociation_2">
|
||||
<bpmn2:sourceRef>DataOutput_2</bpmn2:sourceRef>
|
||||
</bpmn2:dataOutputAssociation>
|
||||
<bpmn2:outputSet id="OutputSet_2" name="Output Set 2">
|
||||
<bpmn2:dataOutputRefs>DataOutput_2</bpmn2:dataOutputRefs>
|
||||
</bpmn2:outputSet>
|
||||
<bpmn2:signalEventDefinition id="SignalEventDefinition_1" signalRef="Signal_1"/>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_16" sourceRef="IntermediateCatchEvent_1" targetRef="Task_2"/>
|
||||
<bpmn2:task id="Task_4" imixs:processid="1900" name="Abgeschlossen">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtworkflowsummary" type="xs:string">
|
||||
<imixs:value><![CDATA[<itemvalue>sequencenumber</itemvalue> <itemvalue format="dd.MM.yyyy">$created</itemvalue> - <itemvalue>space.name</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-bar||||typcn-tick,imixs-success]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txteditorid" type="xs:string">
|
||||
<imixs:value><![CDATA[form_basic_read]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txttype" type="xs:string">
|
||||
<imixs:value><![CDATA[workitemarchive]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtworkflowabstract" type="CDATA">
|
||||
<imixs:value><![CDATA[]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="namaddreadaccess" type="xs:string">
|
||||
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="Documentation_16"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
|
||||
<bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
|
||||
</bpmn2:task>
|
||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_8" imixs:activityid="50" name="Abschließen">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="rtfresultlog" type="CDATA">
|
||||
<imixs:value><![CDATA[OP-Liste abgeschlossen]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:incoming>SequenceFlow_17</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_17" sourceRef="Task_2" targetRef="IntermediateCatchEvent_8"/>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_18" sourceRef="IntermediateCatchEvent_8" targetRef="Task_4"/>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_19" sourceRef="Task_4" targetRef="EndEvent_3"/>
|
||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_2" imixs:activityid="10" name="Speichern">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="rtfresultlog" type="CDATA">
|
||||
<imixs:value><![CDATA[Aktualisiert]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_1" sourceRef="IntermediateCatchEvent_2" targetRef="Task_2"/>
|
||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" imixs:activityid="100" name="Versenden">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtmailsubject" type="xs:string">
|
||||
<imixs:value><![CDATA[]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keymailreceiverfields" type="xs:string"/>
|
||||
<imixs:item name="rtfmailbody" type="CDATA">
|
||||
<imixs:value><![CDATA[]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
|
||||
<bpmn2:messageEventDefinition id="MessageEventDefinition_1"/>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_3" sourceRef="Task_1" targetRef="IntermediateCatchEvent_3"/>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_5" sourceRef="IntermediateCatchEvent_3" targetRef="IntermediateCatchEvent_1"/>
|
||||
<bpmn2:association id="Association_2" sourceRef="DataObject_1" targetRef="Task_1"/>
|
||||
<bpmn2:association id="Association_1" sourceRef="DataObject_1" targetRef="Task_2"/>
|
||||
</bpmn2:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Process Diagram">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1">
|
||||
<bpmndi:BPMNShape id="BPMNShape_Participant_1" bpmnElement="Participant_1" isHorizontal="true">
|
||||
<dc:Bounds height="361.0" width="1181.0" x="100.0" y="150.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_29" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="47.0" width="14.0" x="106.0" y="307.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_Lane_1" bpmnElement="Lane_1" isHorizontal="true">
|
||||
<dc:Bounds height="361.0" width="1151.0" x="130.0" y="150.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_37" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="68.0" width="14.0" x="136.0" y="296.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_1" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds height="36.0" width="36.0" x="180.0" y="301.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_1" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="14.0" width="25.0" x="185.0" y="337.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_Task_1" bpmnElement="Task_1">
|
||||
<dc:Bounds height="50.0" width="110.0" x="290.0" y="294.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_4" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="14.0" width="55.0" x="317.0" y="312.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_EndEvent_2" bpmnElement="EndEvent_3">
|
||||
<dc:Bounds height="36.0" width="36.0" x="1130.0" y="301.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_85" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="14.0" width="22.0" x="1137.0" y="337.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_Task_2" bpmnElement="Task_2">
|
||||
<dc:Bounds height="50.0" width="110.0" x="750.0" y="294.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_5" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="14.0" width="55.0" x="777.0" y="312.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_DataObject_1" bpmnElement="DataObject_1">
|
||||
<dc:Bounds height="50.0" width="36.0" x="419.0" y="189.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_13">
|
||||
<dc:Bounds height="14.0" width="28.0" x="423.0" y="239.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_1" bpmnElement="IntermediateCatchEvent_1">
|
||||
<dc:Bounds height="36.0" width="36.0" x="560.0" y="301.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_2" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="14.0" width="53.0" x="552.0" y="337.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_Message_1" bpmnElement="Message_2">
|
||||
<dc:Bounds height="20.0" width="30.0" x="119.0" y="59.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_35">
|
||||
<dc:Bounds height="14.0" width="70.0" x="99.0" y="79.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_Message_4" bpmnElement="Message_7">
|
||||
<dc:Bounds height="20.0" width="30.0" x="220.0" y="59.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_40">
|
||||
<dc:Bounds height="14.0" width="64.0" x="203.0" y="79.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_Task_4" bpmnElement="Task_4">
|
||||
<dc:Bounds height="50.0" width="110.0" x="1000.0" y="294.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_27" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="14.0" width="84.0" x="1013.0" y="312.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_8" bpmnElement="IntermediateCatchEvent_8">
|
||||
<dc:Bounds height="36.0" width="36.0" x="910.0" y="301.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_31" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="14.0" width="68.0" x="894.0" y="337.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_2" bpmnElement="IntermediateCatchEvent_2">
|
||||
<dc:Bounds height="36.0" width="36.0" x="787.0" y="380.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_6" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="14.0" width="56.0" x="777.0" y="416.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_3" bpmnElement="IntermediateCatchEvent_3">
|
||||
<dc:Bounds height="36.0" width="36.0" x="450.0" y="301.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_8" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="14.0" width="59.0" x="439.0" y="337.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="BPMNShape_1" targetElement="BPMNShape_Task_1">
|
||||
<di:waypoint xsi:type="dc:Point" x="216.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="253.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="290.0" y="319.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_11"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_Association_2" bpmnElement="Association_2" sourceElement="BPMNShape_DataObject_1" targetElement="BPMNShape_Task_1">
|
||||
<di:waypoint xsi:type="dc:Point" x="419.0" y="214.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="345.0" y="214.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="345.0" y="294.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_17"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="BPMNShape_IntermediateCatchEvent_1" targetElement="BPMNShape_Task_2">
|
||||
<di:waypoint xsi:type="dc:Point" x="596.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="673.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="750.0" y="319.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_24"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="BPMNShape_Task_2" targetElement="BPMNShape_IntermediateCatchEvent_8">
|
||||
<di:waypoint xsi:type="dc:Point" x="860.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="885.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="910.0" y="319.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_36"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_18" sourceElement="BPMNShape_IntermediateCatchEvent_8" targetElement="BPMNShape_Task_4">
|
||||
<di:waypoint xsi:type="dc:Point" x="946.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="973.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="1000.0" y="319.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_38"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_EndEvent_2">
|
||||
<di:waypoint xsi:type="dc:Point" x="1110.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="1120.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="1130.0" y="319.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_39"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_Association_1" bpmnElement="Association_1" sourceElement="BPMNShape_DataObject_1" targetElement="BPMNShape_Task_2">
|
||||
<di:waypoint xsi:type="dc:Point" x="455.0" y="214.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="805.0" y="214.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="805.0" y="294.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_3"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="BPMNShape_IntermediateCatchEvent_2" targetElement="BPMNShape_Task_2">
|
||||
<di:waypoint xsi:type="dc:Point" x="805.0" y="380.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="805.0" y="362.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="805.0" y="344.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_7"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_IntermediateCatchEvent_3">
|
||||
<di:waypoint xsi:type="dc:Point" x="400.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="425.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="450.0" y="319.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_9"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="BPMNShape_IntermediateCatchEvent_3" targetElement="BPMNShape_IntermediateCatchEvent_1">
|
||||
<di:waypoint xsi:type="dc:Point" x="486.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="523.0" y="319.0"/>
|
||||
<di:waypoint xsi:type="dc:Point" x="560.0" y="319.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_10"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
||||
<dc:Font name="arial" size="9.0"/>
|
||||
</bpmndi:BPMNLabelStyle>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn2:definitions>
|
||||
Loading…
Reference in a new issue