async rag index

This commit is contained in:
Ralph Soika 2025-06-15 16:23:00 +02:00
parent c54eff0cd4
commit a942f9f15f
7 changed files with 827 additions and 181 deletions

View file

@ -38,6 +38,7 @@ import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.imixs.ai.workflow.OpenAIAPIService; import org.imixs.ai.workflow.OpenAIAPIService;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.SignalAdapter; import org.imixs.workflow.SignalAdapter;
import org.imixs.workflow.engine.EventLogService;
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;
@ -45,19 +46,17 @@ import org.imixs.workflow.exceptions.PluginException;
import ai.dynamixs.rag.cluster.ClusterException; import ai.dynamixs.rag.cluster.ClusterException;
import ai.dynamixs.rag.cluster.ClusterService; import ai.dynamixs.rag.cluster.ClusterService;
import ai.dynamixs.rag.cluster.RetrievalResult; import ai.dynamixs.rag.cluster.RetrievalResult;
import ai.dynamixs.rag.events.RAGEventService;
import jakarta.inject.Inject; import jakarta.inject.Inject;
/** /**
* The RAGAdapter is used for Retrieval-Augmented Generation workflows. * The RAGAdapter is used for Retrieval-Augmented Generation workflows.
* <p> * <p>
* The adapter automatically index and embed text data. * The adapter operates in two modes:
* <p> * <p>
* The imixs-ai prompt definition defines the API endpoint and processing events * In the 'INDEX' mode the adapter evaluates an associated imixs-ai prompt
* to adapt the indexing and the prompt template. * definition and generates - based on the given prompt template - a text to be
* <p> * indexed in the RAG database.
* The Adapter can be configured by a event entity.
* <p>
* INDEX configuration - to add embeddings:
* *
* <pre> * <pre>
* {@code * {@code
@ -67,12 +66,23 @@ import jakarta.inject.Inject;
</imixs-ai> </imixs-ai>
* } * }
* </pre> * </pre>
*
* The Endpoint defines the Rest API endpoint of the llama-cpp http server or
* any compatible OpenAI / Open API rest service endpoint.
* <p> * <p>
* Example Prompt Template: * In the 'RETRIEVAL' mode, the adapter evaluates an associated imixs-ai prompt
* definition to get retrieval embeddings from the RAG database.
* *
* <pre>
* {@code
<imixs-ai name="RETRIEVAL">
<endpoint><propertyvalue>llm.service.endpoint</propertyvalue></endpoint>
<debug>true</debug>
</imixs-ai>
* }
* </pre>
*
* In both modes the Endpoint defines the Rest API endpoint of the llama-cpp
* http server or any compatible OpenAI / Open API rest service endpoint.
* <p>
* The Prompt Template is based on the concepts of Imixs-AI:
* *
* <pre> * <pre>
* {@code * {@code
@ -80,17 +90,16 @@ import jakarta.inject.Inject;
<IndexDefinition> <IndexDefinition>
< index_options>{"n_predict": 4096, "temperature": 0}< /index_options> < index_options>{"n_predict": 4096, "temperature": 0}< /index_options>
<![CDATA[<text><itemvalue>$workflowgroup</itemvalue>: <itemvalue>$workflowstatus</itemvalue> <![CDATA[<text><itemvalue>$workflowgroup</itemvalue>: <itemvalue>$workflowstatus</itemvalue>
# Summary # Summary
<itemvalue>$workflowsummary</itemvalue> <itemvalue>$workflowsummary</itemvalue>
<itemvalue>offer.summary</itemvalue> <itemvalue>offer.summary</itemvalue>
]]></text> ]]></text>
</IndexDefinition> </IndexDefinition>
* } * }
* </pre> * </pre>
* *
* The index Process is
*
* @author Ralph Soika * @author Ralph Soika
* @version 1.0 * @version 1.0
* *
@ -101,7 +110,6 @@ public class RAGAdapter implements SignalAdapter {
public static final String API_ERROR = "API_ERROR"; public static final String API_ERROR = "API_ERROR";
public static final String RAG_INDEX = "INDEX"; public static final String RAG_INDEX = "INDEX";
public static final String RAG_DELETE = "DELETE";
public static final String RAG_RETRIEVAL = "RETRIEVAL"; public static final String RAG_RETRIEVAL = "RETRIEVAL";
private static Logger logger = Logger.getLogger(RAGAdapter.class.getName()); private static Logger logger = Logger.getLogger(RAGAdapter.class.getName());
@ -113,6 +121,9 @@ public class RAGAdapter implements SignalAdapter {
@Inject @Inject
private WorkflowService workflowService; private WorkflowService workflowService;
@Inject
EventLogService eventLogService;
@Inject @Inject
private OpenAIAPIService llmService; private OpenAIAPIService llmService;
@ -160,18 +171,6 @@ public class RAGAdapter implements SignalAdapter {
List<ItemCollection> llmRetrievalDefinitions = workflowService.evalWorkflowResultXML(event, "imixs-ai", List<ItemCollection> llmRetrievalDefinitions = workflowService.evalWorkflowResultXML(event, "imixs-ai",
RAG_RETRIEVAL, workitem, false); RAG_RETRIEVAL, workitem, false);
List<ItemCollection> llmDeleteDefinitions = workflowService.evalWorkflowResultXML(event, "imixs-ai",
RAG_DELETE, workitem, false);
// verify if we have an DELETE configuration
if (llmDeleteDefinitions != null && llmDeleteDefinitions.size() > 0) {
try {
clusterService.removeAllEmbeddings(workitem.getUniqueID());
} catch (ClusterException e) {
throw new PluginException(RAGAdapter.class.getSimpleName(), API_ERROR, e.getMessage(), e);
}
}
// verify if we have an INDEX configuration // verify if we have an INDEX configuration
if (llmIndexDefinitions != null && llmIndexDefinitions.size() > 0) { if (llmIndexDefinitions != null && llmIndexDefinitions.size() > 0) {
createIndex(llmIndexDefinitions, workitem, event); createIndex(llmIndexDefinitions, workitem, event);
@ -186,7 +185,7 @@ public class RAGAdapter implements SignalAdapter {
} }
/** /**
* Creates a RAG Index for a Worktiem based on IndexDefinitions * Creates a RAG Index for a Workitem based on IndexDefinitions
* *
* @param llmIndexDefinitions * @param llmIndexDefinitions
* @param workitem * @param workitem
@ -213,41 +212,57 @@ public class RAGAdapter implements SignalAdapter {
logger.info("├── post RAG index request: " + llmAPIEndpoint); logger.info("├── post RAG index request: " + llmAPIEndpoint);
String promptTemplate = llmService.loadPromptTemplate(event); String promptTemplate = llmService.loadPromptTemplate(event);
indexDefinition.setItemValue("promptTemplate", promptTemplate);
indexDefinition.setItemValue("debug", llmAPIDebug);
indexDefinition.setItemValue("endpoint", llmAPIEndpoint);
if (llmAPIDebug) {
logger.info("│ ├── PromptTemplate: "); logger.info("│ ├── PromptTemplate: ");
logger.info(promptTemplate); logger.info(promptTemplate);
}
// Build the prompt template...
String llmPrompt = llmService.buildPrompt(promptTemplate, workitem); String llmPrompt = llmService.buildPrompt(promptTemplate, workitem);
if (llmPrompt.isBlank()) { if (llmPrompt.isBlank()) {
throw new PluginException( throw new PluginException(
RAGAdapter.class.getSimpleName(), API_ERROR, RAGAdapter.class.getSimpleName(), API_ERROR,
"Unable to parse prompt for RAG indexing"); "Unable to parse prompt for RAG indexing");
} }
indexDefinition.setItemValue("prompt", llmPrompt);
if (llmAPIDebug) { // send eventLog ....
logger.info("│ ├── Total Prompt Length = " + llmPrompt.length()); eventLogService.createEvent(
logger.info("│ ├── Prompt: "); RAGEventService.EVENTLOG_TOPIC_RAG_EVENT_INDEX,
logger.info(llmPrompt); workitem.getUniqueID(),
} indexDefinition);
// remove old embeddings // if (llmAPIDebug) {
clusterService.removeAllEmbeddings(workitem.getUniqueID()); // logger.info("│ ├── Total Prompt Length = " + llmPrompt.length());
// chunk text.... // logger.info("│ ├── Prompt: ");
List<String> chunk_list = RAGUtil.chunkMarkupDocument(llmPrompt); // logger.info(llmPrompt);
for (String chunk : chunk_list) { // }
if (llmAPIDebug) {
logger.info("│ ├── 🔸 chunk: "); // // remove old embeddings
logger.info(chunk); // clusterService.removeAllEmbeddings(workitem.getUniqueID());
} // // chunk text....
List<Float> indexResult = llmService.postEmbedding(chunk, llmAPIEndpoint, llmAPIDebug); // List<String> chunk_list = RAGUtil.chunkMarkupDocument(llmPrompt);
// write to cassandra // for (String chunk : chunk_list) {
clusterService.insertVector(workitem.getUniqueID(), // if (llmAPIDebug) {
workitem.getModelVersion(), // logger.info("│ ├── 🔸 chunk: ");
workitem.getTaskID(), // logger.info(chunk);
chunk, // }
indexResult); // List<Float> indexResult = llmService.postEmbedding(chunk, llmAPIEndpoint,
if (llmAPIDebug) { // llmAPIDebug);
logger.info("│ ├── ⇨ " + indexResult.size() + " floats stored in RAG db."); // // write to cassandra
} // clusterService.insertVector(workitem.getUniqueID(),
} // workitem.getModelVersion(),
// workitem.getTaskID(),
// chunk,
// indexResult);
// if (llmAPIDebug) {
// logger.info("│ ├── ⇨ " + indexResult.size() + " floats stored in RAG db.");
// }
// }
if (llmAPIDebug) { if (llmAPIDebug) {
logger.info( logger.info(
@ -257,8 +272,6 @@ public class RAGAdapter implements SignalAdapter {
} catch (PluginException e) { } catch (PluginException e) {
logger.severe("├── ⚠️ Failed to post embeddings: " + e.getMessage()); logger.severe("├── ⚠️ Failed to post embeddings: " + e.getMessage());
throw e; throw e;
} catch (ClusterException e) {
throw new PluginException(RAGAdapter.class.getSimpleName(), API_ERROR, e.getMessage(), e);
} }
} }

View file

@ -33,12 +33,15 @@ import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.apache.commons.compress.archivers.ArchiveException; import org.apache.commons.compress.archivers.ArchiveException;
import org.imixs.ai.workflow.OpenAIAPIService;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.AsyncEventScheduler; import org.imixs.workflow.engine.AsyncEventScheduler;
import org.imixs.workflow.engine.EventLogService; import org.imixs.workflow.engine.EventLogService;
import org.imixs.workflow.engine.WorkflowService; import org.imixs.workflow.engine.WorkflowService;
import org.imixs.workflow.engine.jpa.EventLog; import org.imixs.workflow.engine.jpa.EventLog;
import org.imixs.workflow.exceptions.PluginException;
import ai.dynamixs.rag.RAGUtil;
import ai.dynamixs.rag.cluster.ClusterException; import ai.dynamixs.rag.cluster.ClusterException;
import ai.dynamixs.rag.cluster.ClusterService; import ai.dynamixs.rag.cluster.ClusterService;
import jakarta.annotation.security.DeclareRoles; import jakarta.annotation.security.DeclareRoles;
@ -98,6 +101,9 @@ public class RAGEventService {
@Inject @Inject
private ClusterService clusterService; private ClusterService clusterService;
@Inject
private OpenAIAPIService llmService;
/** /**
* The method lookups for RAG event log entries and updates the RAG index * The method lookups for RAG event log entries and updates the RAG index
* information * information
@ -109,7 +115,6 @@ public class RAGEventService {
@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
public void processEventLog() { public void processEventLog() {
long l = System.currentTimeMillis(); long l = System.currentTimeMillis();
boolean debug = logger.isLoggable(Level.FINE);
// test for new event log entries by timeout... // test for new event log entries by timeout...
List<EventLog> events = eventLogService.findEventsByTimeout(100, List<EventLog> events = eventLogService.findEventsByTimeout(100,
@ -142,8 +147,42 @@ public class RAGEventService {
clusterService.updateMetaData(eventLogEntry.getRef(), workitem.getModelVersion(), clusterService.updateMetaData(eventLogEntry.getRef(), workitem.getModelVersion(),
workitem.getTaskID()); workitem.getTaskID());
break; break;
case RAGEventService.EVENTLOG_TOPIC_RAG_EVENT_INDEX: case RAGEventService.EVENTLOG_TOPIC_RAG_EVENT_INDEX + ".lock":
logger.log(Level.WARNING, "│ ├── ⚠️ RAG_INDEX Event is not yet supported!");
// get indexDefinition
ItemCollection indexDefinition = new ItemCollection(eventLogEntry.getData());
String llmAPIEndpoint = indexDefinition.getItemValueString("endpoint");
boolean debug = indexDefinition.getItemValueBoolean("debug");
// String llmPromptTemplate =
// indexDefinition.getItemValueString("promptTemplate");
String llmPrompt = indexDefinition.getItemValueString("prompt");
if (debug) {
logger.info("│ ├── Total Prompt Length = " + llmPrompt.length());
logger.info("│ ├── Prompt: ");
logger.info(llmPrompt);
}
// remove old embeddings
clusterService.removeAllEmbeddings(workitem.getUniqueID());
// chunk text....
List<String> chunk_list = RAGUtil.chunkMarkupDocument(llmPrompt);
for (String chunk : chunk_list) {
if (debug) {
logger.info("│ ├── 🔸 chunk: ");
logger.info(chunk);
}
List<Float> indexResult = llmService.postEmbedding(chunk, llmAPIEndpoint, debug);
// write to cassandra
clusterService.insertVector(workitem.getUniqueID(),
workitem.getModelVersion(),
workitem.getTaskID(),
chunk,
indexResult);
if (debug) {
logger.info("│ ├── ⇨ " + indexResult.size() + " floats stored in RAG db.");
}
}
break; break;
default: default:
// no op // no op
@ -160,6 +199,10 @@ public class RAGEventService {
logger.log(Level.WARNING, e.getErrorCode() + " - " + e.getMessage()); logger.log(Level.WARNING, e.getErrorCode() + " - " + e.getMessage());
// remove the event log entry... // remove the event log entry...
eventLogService.removeEvent(eventLogEntry.getId()); eventLogService.removeEvent(eventLogEntry.getId());
} catch (PluginException e) {
logger.log(Level.WARNING, e.getErrorCode() + " - " + e.getMessage());
// remove the event log entry...
eventLogService.removeEvent(eventLogEntry.getId());
} }
} }

View file

@ -61,7 +61,7 @@
<!-- Dependency Versions --> <!-- Dependency Versions -->
<jakarta.version>10.0.0</jakarta.version> <jakarta.version>10.0.0</jakarta.version>
<microprofile.version>6.0</microprofile.version> <microprofile.version>6.0</microprofile.version>
<org.imixs.workflow.version>6.2.2-SNAPSHOT</org.imixs.workflow.version> <org.imixs.workflow.version>6.2.3-SNAPSHOT</org.imixs.workflow.version>
<org.imixs.archive.version>3.1.2-SNAPSHOT</org.imixs.archive.version> <org.imixs.archive.version>3.1.2-SNAPSHOT</org.imixs.archive.version>
<org.imixs.office.version>5.1.3-SNAPSHOT</org.imixs.office.version> <org.imixs.office.version>5.1.3-SNAPSHOT</org.imixs.office.version>
<org.imixs.marty.version>5.0.3</org.imixs.marty.version> <org.imixs.marty.version>5.0.3</org.imixs.marty.version>

View file

@ -69,6 +69,15 @@
<bpmn2:flowNodeRef>event_qTIbqA</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>event_qTIbqA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_axJA7Q</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>dataObject_axJA7Q</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_y0smQw</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>event_y0smQw</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>task_ol2R9A</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_P1MFZQ</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_NLZbsw</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>task_0THxmg</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_KwpMKw</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_iq4agg</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_u4ZytA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_zsQpoQ</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_EyDvQQ</bpmn2:flowNodeRef>
</bpmn2:lane> </bpmn2:lane>
</bpmn2:laneSet> </bpmn2:laneSet>
<bpmn2:startEvent id="StartEvent_1" name="Start"> <bpmn2:startEvent id="StartEvent_1" name="Start">
@ -127,6 +136,7 @@ Color: <itemvalue>_color</itemvalue><br />
<bpmn2:incoming>sequenceFlow_8NDJxA</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_8NDJxA</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_UIpo9Q</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_UIpo9Q</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_WRPdIA</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_WRPdIA</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_ytbNEQ</bpmn2:incoming>
</bpmn2:task> </bpmn2:task>
<bpmn2:dataObject id="DataObject_2" imixs:datatype="form-data" name="Order Form"> <bpmn2:dataObject id="DataObject_2" imixs:datatype="form-data" name="Order Form">
<bpmn2:documentation id="Documentation_8"><![CDATA[<?xml version="1.0"?> <bpmn2:documentation id="Documentation_8"><![CDATA[<?xml version="1.0"?>
@ -193,7 +203,9 @@ Color: <itemvalue>_color</itemvalue><br />
<bpmn2:documentation id="Documentation_27"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation> <bpmn2:documentation id="Documentation_27"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>SequenceFlow_42</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_42</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_HCxYvw</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_HCxYvw</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_4DUFiA</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_RppP5Q</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_VlP5cw</bpmn2:outgoing>
<bpmn2:outgoing>sequenceFlow_ZtZaBQ</bpmn2:outgoing>
</bpmn2:task> </bpmn2:task>
<bpmn2:task id="Task_4" imixs:processid="1400" name="Bestellt"> <bpmn2:task id="Task_4" imixs:processid="1400" name="Bestellt">
<bpmn2:extensionElements> <bpmn2:extensionElements>
@ -295,7 +307,7 @@ Color: <itemvalue>_color</itemvalue><br />
<bpmn2:sequenceFlow id="SequenceFlow_47" sourceRef="Task_5" targetRef="EndEvent_2"> <bpmn2:sequenceFlow id="SequenceFlow_47" sourceRef="Task_5" targetRef="EndEvent_2">
<bpmn2:documentation id="documentation_ad1jJw"/> <bpmn2:documentation id="documentation_ad1jJw"/>
</bpmn2:sequenceFlow> </bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_17" imixs:activityid="40" name="Bestellt"> <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_17" imixs:activityid="40" name="Versenden">
<bpmn2:extensionElements> <bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string"> <imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value> <imixs:value><![CDATA[2]]></imixs:value>
@ -365,6 +377,7 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<bpmn2:documentation id="Documentation_32"><![CDATA[Bestellung ausgeführt]]></bpmn2:documentation> <bpmn2:documentation id="Documentation_32"><![CDATA[Bestellung ausgeführt]]></bpmn2:documentation>
<bpmn2:outgoing>SequenceFlow_56</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_56</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_HCxYvw</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_HCxYvw</bpmn2:incoming>
<bpmn2:messageEventDefinition id="messageEventDefinition_59qUIg" messageRef="message_1"/>
</bpmn2:intermediateCatchEvent> </bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="SequenceFlow_56" sourceRef="IntermediateCatchEvent_17" targetRef="ExclusiveGateway_2"> <bpmn2:sequenceFlow id="SequenceFlow_56" sourceRef="IntermediateCatchEvent_17" targetRef="ExclusiveGateway_2">
<bpmn2:documentation id="documentation_T3n4KQ"/> <bpmn2:documentation id="documentation_T3n4KQ"/>
@ -1061,7 +1074,7 @@ result.isValid=true;
<bpmn2:association id="association_JGXYyg" sourceRef="event_qTIbqA" targetRef="dataObject_axJA7Q"> <bpmn2:association id="association_JGXYyg" sourceRef="event_qTIbqA" targetRef="dataObject_axJA7Q">
<bpmn2:documentation id="documentation_mvyBDQ"/> <bpmn2:documentation id="documentation_mvyBDQ"/>
</bpmn2:association> </bpmn2:association>
<bpmn2:intermediateCatchEvent id="event_y0smQw" imixs:activityid="10" name="Weiterleiten"> <bpmn2:intermediateCatchEvent id="event_y0smQw" imixs:activityid="20" name="Angebot erstellen">
<bpmn2:extensionElements> <bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string"> <imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value> <imixs:value><![CDATA[2]]></imixs:value>
@ -1113,7 +1126,7 @@ result.isValid=true;
<imixs:value/> <imixs:value/>
</imixs:item> </imixs:item>
<imixs:item name="txtactivityresult" type="xs:string"> <imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="comment" ignore="true"/> <imixs:value><![CDATA[<item name="action">home</item>
<item name="process">Vertrieb</item>]]></imixs:value> <item name="process">Vertrieb</item>]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="txtname" type="xs:string"> <imixs:item name="txtname" type="xs:string">
@ -1132,8 +1145,9 @@ result.isValid=true;
<bpmn2:documentation id="documentation_bvKjjA"><![CDATA[Zwischenspeichern]]></bpmn2:documentation> <bpmn2:documentation id="documentation_bvKjjA"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
<bpmn2:outgoing>sequenceFlow_4DUFiA</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_4DUFiA</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_UIpo9Q</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_UIpo9Q</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_VlP5cw</bpmn2:incoming>
</bpmn2:intermediateCatchEvent> </bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_4DUFiA" sourceRef="event_y0smQw" targetRef="Task_3"> <bpmn2:sequenceFlow id="sequenceFlow_4DUFiA" sourceRef="event_y0smQw" targetRef="task_ol2R9A">
<bpmn2:documentation id="documentation_LHW0zQ"/> <bpmn2:documentation id="documentation_LHW0zQ"/>
</bpmn2:sequenceFlow> </bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_HCxYvw" sourceRef="Task_3" targetRef="IntermediateCatchEvent_17"> <bpmn2:sequenceFlow id="sequenceFlow_HCxYvw" sourceRef="Task_3" targetRef="IntermediateCatchEvent_17">
@ -1148,11 +1162,447 @@ result.isValid=true;
<bpmn2:sequenceFlow id="sequenceFlow_WRPdIA" sourceRef="event_qTIbqA" targetRef="Task_2"> <bpmn2:sequenceFlow id="sequenceFlow_WRPdIA" sourceRef="event_qTIbqA" targetRef="Task_2">
<bpmn2:documentation id="documentation_YclfqA"/> <bpmn2:documentation id="documentation_YclfqA"/>
</bpmn2:sequenceFlow> </bpmn2:sequenceFlow>
<bpmn2:task id="task_ol2R9A" imixs:processid="1100" name="RETRIEVAL">
<bpmn2:extensionElements>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[form_basic]]></imixs:value>
</imixs:item>
<imixs:item name="txtworkflowabstract" type="xs:string">
<imixs:value><![CDATA[<strong>Product: <itemvalue>_name</itemvalue></strong><br />
EAN: <itemvalue>_ean</itemvalue><br />
Category: <itemvalue>_category</itemvalue><br />
Brand: <itemvalue>_brand</itemvalue><br />
<hr />
Description: <br />
<itemvalue>_description</itemvalue><br />
<hr />
Price: <itemvalue>_price</itemvalue> <itemvalue>_currency</itemvalue><br />
Stock: <itemvalue>_stock</itemvalue><br />
Size: <itemvalue>_size</itemvalue><br />
Color: <itemvalue>_color</itemvalue><br />
]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Rechnung erhalten]]></imixs:value>
</imixs:item>
<imixs:item name="txtimageurl" type="xs:string">
<imixs:value><![CDATA[typcn-download-outline]]></imixs:value>
</imixs:item>
<imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[<itemvalue>request.subject</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[namCreator]]></imixs:value>
<imixs:value><![CDATA[namprocessassist]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string">
<imixs:value><![CDATA[namCreator]]></imixs:value>
<imixs:value><![CDATA[namprocessmanager]]></imixs:value>
<imixs:value><![CDATA[namprocessteam]]></imixs:value>
<imixs:value><![CDATA[namspacemanager]]></imixs:value>
<imixs:value><![CDATA[namspaceteam]]></imixs:value>
<imixs:value><![CDATA[namprocessassist]]></imixs:value>
</imixs:item>
<imixs:item name="txttype" type="xs:string">
<imixs:value><![CDATA[workitem]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_dQiKXw"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_WRPdIA</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_4DUFiA</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_0Q20mA</bpmn2:outgoing>
</bpmn2:task>
<bpmn2:intermediateCatchEvent id="event_P1MFZQ" imixs:activityid="50" name="(RAG)">
<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:value><![CDATA[namCreator]]></imixs:value>
<imixs:value><![CDATA[namCurrentEditor]]></imixs:value>
<imixs:value><![CDATA[namprocessmanager]]></imixs:value>
<imixs:value><![CDATA[namprocessteam]]></imixs:value>
</imixs:item>
<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:value><![CDATA[namCurrentEditor]]></imixs:value>
<imixs:value><![CDATA[namCreator]]></imixs:value>
</imixs:item>
<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="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<imixs-ai name="RETRIEVAL">
<endpoint>https://llama.cpp2.imixs.com/</endpoint>
<debug>true</debug>
</imixs-ai>
]]></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/>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_00qc3A"><![CDATA[RAG Test]]></bpmn2:documentation>
<bpmn2:signalEventDefinition id="signalEventDefinition_cAd1tQ" signalRef="signal_4"/>
<bpmn2:incoming>sequenceFlow_0Q20mA</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_InfPdQ</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_hZg0iw</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:boundaryEvent attachedToRef="task_ol2R9A" id="event_NLZbsw" name="">
<bpmn2:documentation id="documentation_u0BGKw"/>
<bpmn2:timerEventDefinition id="timerEventDefinition_cGzCLw"/>
<bpmn2:outgoing>sequenceFlow_InfPdQ</bpmn2:outgoing>
</bpmn2:boundaryEvent>
<bpmn2:sequenceFlow id="sequenceFlow_0Q20mA" sourceRef="task_ol2R9A" targetRef="event_P1MFZQ">
<bpmn2:documentation id="documentation_hKA1ng"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_InfPdQ" sourceRef="event_NLZbsw" targetRef="event_P1MFZQ">
<bpmn2:documentation id="documentation_M1WwCA"/>
</bpmn2:sequenceFlow>
<bpmn2:task id="task_0THxmg" imixs:processid="1101" name="GENERATE">
<bpmn2:extensionElements>
<imixs:item name="txteditorid" type="xs:string">
<imixs:value><![CDATA[form_basic]]></imixs:value>
</imixs:item>
<imixs:item name="txtworkflowabstract" type="xs:string">
<imixs:value><![CDATA[<strong>Product: <itemvalue>_name</itemvalue></strong><br />
EAN: <itemvalue>_ean</itemvalue><br />
Category: <itemvalue>_category</itemvalue><br />
Brand: <itemvalue>_brand</itemvalue><br />
<hr />
Description: <br />
<itemvalue>_description</itemvalue><br />
<hr />
Price: <itemvalue>_price</itemvalue> <itemvalue>_currency</itemvalue><br />
Stock: <itemvalue>_stock</itemvalue><br />
Size: <itemvalue>_size</itemvalue><br />
Color: <itemvalue>_color</itemvalue><br />
]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Rechnung erhalten]]></imixs:value>
</imixs:item>
<imixs:item name="txtimageurl" type="xs:string">
<imixs:value><![CDATA[typcn-download-outline]]></imixs:value>
</imixs:item>
<imixs:item name="txtworkflowsummary" type="xs:string">
<imixs:value><![CDATA[<itemvalue>request.subject</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[namCreator]]></imixs:value>
<imixs:value><![CDATA[namprocessassist]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string">
<imixs:value><![CDATA[namCreator]]></imixs:value>
<imixs:value><![CDATA[namprocessmanager]]></imixs:value>
<imixs:value><![CDATA[namprocessteam]]></imixs:value>
<imixs:value><![CDATA[namspacemanager]]></imixs:value>
<imixs:value><![CDATA[namspaceteam]]></imixs:value>
<imixs:value><![CDATA[namprocessassist]]></imixs:value>
</imixs:item>
<imixs:item name="txttype" type="xs:string">
<imixs:value><![CDATA[workitem]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_OqV5nQ"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_4DUFiA</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_hZg0iw</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_HfDRCQ</bpmn2:outgoing>
</bpmn2:task>
<bpmn2:sequenceFlow id="sequenceFlow_hZg0iw" sourceRef="event_P1MFZQ" targetRef="task_0THxmg">
<bpmn2:documentation id="documentation_g8x3HQ"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_KwpMKw" imixs:activityid="50" name="(LLM)">
<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:value><![CDATA[namCreator]]></imixs:value>
<imixs:value><![CDATA[namCurrentEditor]]></imixs:value>
<imixs:value><![CDATA[namprocessmanager]]></imixs:value>
<imixs:value><![CDATA[namprocessteam]]></imixs:value>
</imixs:item>
<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:value><![CDATA[namCurrentEditor]]></imixs:value>
<imixs:value><![CDATA[namCreator]]></imixs:value>
</imixs:item>
<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="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<imixs-ai name="PROMPT">
<endpoint><propertyvalue>llm.service.endpoint</propertyvalue></endpoint>
<result-item>offer.proposal</result-item>
<debug>true</debug>
</imixs-ai>
<validation name="required">false</validation>
]]></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/>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_rjaifw"><![CDATA[RAG Test]]></bpmn2:documentation>
<bpmn2:signalEventDefinition id="signalEventDefinition_gJ2xPg" signalRef="signal_3"/>
<bpmn2:incoming>sequenceFlow_InfPdQ</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_HfDRCQ</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_RppP5Q</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_JZ6sYQ</bpmn2:incoming>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_HfDRCQ" sourceRef="task_0THxmg" targetRef="event_KwpMKw">
<bpmn2:documentation id="documentation_9L7Crw"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_RppP5Q" sourceRef="event_KwpMKw" targetRef="Task_3">
<bpmn2:documentation id="documentation_IvSc3w"/>
</bpmn2:sequenceFlow>
<bpmn2:association id="association_AIXGmw" sourceRef="dataObject_axJA7Q" targetRef="event_P1MFZQ">
<bpmn2:documentation id="documentation_kEcmWQ"/>
</bpmn2:association>
<bpmn2:dataObject id="dataObject_iq4agg" imixs:datatype="prompt-data" name="Prompt">
<bpmn2:documentation id="documentation_fFWo7Q" open-bpmn:file-link="file://offer-proposal-de.xml"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<PromptDefinition>
<prompt_options>{"n_predict": 4096, "temperature": 0}</prompt_options>
<prompt><![CDATA[[INST] Du bist Vertriebsmitarbeiter bei der LUPI Wärmetauscher GmbH. Deine Aufgabe ist es, eingehende Anfragen zu beantworten und Vorschläge für Angebote zu unterbreiten. [/INST]
<itemvalue>request.description</itemvalue>
</s>[INST]
Zu dem hier vorliegenden Angebot kommen folgende Produkte in Frage:
<for-each-ref item="product.ref">
<itemvalue>$workflowabstract</itemvalue>
</for-each-ref>
Prüfe welches dieser Produkte am besten für die Anfrage geeignet ist und erstelle ein Angebot sowie eine kurze Begründung für deine Auswahl die für den Kunden verständlich ist.
Füge eine Tabelle mit den folgenden Spalten für die Angebotserstellung mit ein:
- Produkt
- Menge
- Preis pro Stück
- Mehrwertsteuer
- Gesamtpreis
[/INST]
]]]]><![CDATA[>
</prompt>
</PromptDefinition> ]]></bpmn2:documentation>
</bpmn2:dataObject>
<bpmn2:association id="association_IJuYEA" sourceRef="dataObject_iq4agg" targetRef="event_KwpMKw">
<bpmn2:documentation id="documentation_2mN70Q"/>
</bpmn2:association>
<bpmn2:dataObject id="dataObject_u4ZytA" imixs:datatype="form-data" name="Order Form">
<bpmn2:documentation id="documentation_lSiw2w"><![CDATA[<?xml version="1.0"?>
<imixs-form>
<imixs-form-section columns="1" label="" readonly="false">
<item name="request.subject" type="text" label="Anfrage:" />
<item name="request.description" type="textarea" label="Beschreibung:" />
</imixs-form-section>
<imixs-form-section columns="1" label="Angebot:" readonly="true" >
<item name="offer.proposal" type="custom" path="markdown" />
</imixs-form-section>
<imixs-form-section columns="1" label="Produkte Vorschalg" readonly="true" >
<item name="product.ref"
type="custom" required="true"
path="workitemlink"
options="($workflowgroup:Produkt)((type:workitem) OR (type:workitemarchive))"
label="Referenz:" />
</imixs-form-section>
</imixs-form>
]]></bpmn2:documentation>
<bpmn2:dataState id="dataState_X4nVjg"/>
</bpmn2:dataObject>
<bpmn2:association id="association_0SKl0g" sourceRef="dataObject_u4ZytA" targetRef="Task_3">
<bpmn2:documentation id="documentation_VQTg6w"/>
</bpmn2:association>
<bpmn2:sequenceFlow id="sequenceFlow_VlP5cw" sourceRef="Task_3" targetRef="event_y0smQw">
<bpmn2:documentation id="documentation_DBOmUA"/>
</bpmn2:sequenceFlow>
<bpmn2:boundaryEvent attachedToRef="task_0THxmg" id="event_zsQpoQ" name="">
<bpmn2:documentation id="documentation_3lp4uw"/>
<bpmn2:timerEventDefinition id="timerEventDefinition_Db9Rjg"/>
<bpmn2:outgoing>sequenceFlow_JZ6sYQ</bpmn2:outgoing>
</bpmn2:boundaryEvent>
<bpmn2:sequenceFlow id="sequenceFlow_JZ6sYQ" sourceRef="event_zsQpoQ" targetRef="event_KwpMKw">
<bpmn2:documentation id="documentation_WBLfdQ"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_EyDvQQ" imixs:activityid="11" name="Zurück (Debug)">
<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:value><![CDATA[namCreator]]></imixs:value>
<imixs:value><![CDATA[namCurrentEditor]]></imixs:value>
<imixs:value><![CDATA[namprocessmanager]]></imixs:value>
<imixs:value><![CDATA[namprocessteam]]></imixs:value>
</imixs:item>
<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:value><![CDATA[namCurrentEditor]]></imixs:value>
<imixs:value><![CDATA[namCreator]]></imixs:value>
</imixs:item>
<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="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="comment" ignore="true"/>]]></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="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_ENg2sw"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_ZtZaBQ</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_ytbNEQ</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_ZtZaBQ" sourceRef="Task_3" targetRef="event_EyDvQQ">
<bpmn2:documentation id="documentation_gD4Xww"/>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="sequenceFlow_ytbNEQ" sourceRef="event_EyDvQQ" targetRef="Task_2">
<bpmn2:documentation id="documentation_10SRvg"/>
</bpmn2:sequenceFlow>
</bpmn2:process> </bpmn2:process>
<bpmn2:process id="process_2" name="Default Process" processType="Public"> <bpmn2:process id="process_2" name="Default Process" processType="Public">
<bpmn2:documentation id="documentation_imRbaw"/> <bpmn2:documentation id="documentation_imRbaw"/>
</bpmn2:process> </bpmn2:process>
<bpmn2:signal id="signal_3" name="org.imixs.workflow.wopi.WopiTemplateAdapter"/> <bpmn2:signal id="signal_3" name="org.imixs.ai.workflow.OpenAIAPIAdapter"/>
<bpmn2:signal id="signal_4" name="ai.dynamixs.rag.RAGAdapter"/> <bpmn2:signal id="signal_4" name="ai.dynamixs.rag.RAGAdapter"/>
<bpmn2:message id="message_1" name="Message 1"> <bpmn2:message id="message_1" name="Message 1">
<bpmn2:documentation id="documentation_lq3hSg"/> <bpmn2:documentation id="documentation_lq3hSg"/>
@ -1160,15 +1610,15 @@ result.isValid=true;
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_Process_1"> <bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_Process_1">
<bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_Participant_1" isHorizontal="true"> <bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_Participant_1" isHorizontal="true">
<dc:Bounds height="530.0" width="1880.0" x="100.0" y="70.0"/> <dc:Bounds height="1050.0" width="2420.0" x="90.0" y="70.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Lane_1" id="BPMNShape_Lane_1" isHorizontal="true"> <bpmndi:BPMNShape bpmnElement="Lane_1" id="BPMNShape_Lane_1" isHorizontal="true">
<dc:Bounds height="530.0" width="1850.0" x="130.0" y="70.0"/> <dc:Bounds height="1050.0" width="2390.0" x="120.0" y="70.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="StartEvent_1" id="BPMNShape_StartEvent_1"> <bpmndi:BPMNShape bpmnElement="StartEvent_1" id="BPMNShape_StartEvent_1">
<dc:Bounds height="36.0" width="36.0" x="227.0" y="317.0"/> <dc:Bounds height="36.0" width="36.0" x="217.0" y="317.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_1" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_1" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="196.5" y="351.10797119140625"/> <dc:Bounds height="20.0" width="100.0" x="186.5" y="351.10797119140625"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_TextAnnotation_1"> <bpmndi:BPMNShape id="BPMNShape_TextAnnotation_1">
@ -1178,188 +1628,187 @@ result.isValid=true;
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_2" id="BPMNShape_Task_5"> <bpmndi:BPMNShape bpmnElement="Task_2" id="BPMNShape_Task_5">
<dc:Bounds height="50.0" width="110.0" x="360.0" y="310.0"/> <dc:Bounds height="50.0" width="110.0" x="350.0" y="310.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="DataObject_2" id="BPMNShape_DataObject_1"> <bpmndi:BPMNShape bpmnElement="DataObject_2" id="BPMNShape_DataObject_1">
<dc:Bounds height="50.0" width="35.0" x="290.0" y="210.0"/> <dc:Bounds height="50.0" width="35.0" x="280.0" y="210.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_85"> <bpmndi:BPMNLabel id="BPMNLabel_85">
<dc:Bounds height="20.0" width="100.0" x="258.0" y="260.0000305175781"/> <dc:Bounds height="20.0" width="100.0" x="248.0" y="260.0000305175781"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_3" id="BPMNShape_Task_9"> <bpmndi:BPMNShape bpmnElement="Task_3" id="BPMNShape_Task_9">
<dc:Bounds height="50.0" width="110.0" x="670.0" y="310.0"/> <dc:Bounds height="50.0" width="110.0" x="660.0" y="310.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_4" id="BPMNShape_Task_10"> <bpmndi:BPMNShape bpmnElement="Task_4" id="BPMNShape_Task_10">
<dc:Bounds height="50.0" width="110.0" x="1150.0" y="310.0"/> <dc:Bounds height="50.0" width="110.0" x="1140.0" y="310.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_5" id="BPMNShape_Task_11"> <bpmndi:BPMNShape bpmnElement="Task_5" id="BPMNShape_Task_11">
<dc:Bounds height="50.0" width="110.0" x="1630.0" y="310.0"/> <dc:Bounds height="50.0" width="110.0" x="1620.0" y="310.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EndEvent_2" id="BPMNShape_EndEvent_2"> <bpmndi:BPMNShape bpmnElement="EndEvent_2" id="BPMNShape_EndEvent_2">
<dc:Bounds height="36.0" width="36.0" x="1787.0" y="247.0"/> <dc:Bounds height="36.0" width="36.0" x="1777.0" y="247.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_110" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_110" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1758.138671875" y="282.10797119140625"/> <dc:Bounds height="20.0" width="100.0" x="1748.138671875" y="282.10797119140625"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_17" id="BPMNShape_IntermediateCatchEvent_27"> <bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_17" id="BPMNShape_IntermediateCatchEvent_27">
<dc:Bounds height="36.0" width="36.0" x="857.0" y="317.0"/> <dc:Bounds height="36.0" width="36.0" x="847.0" y="317.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_116" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_116" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="834.0128173828125" y="357.1767883300781"/> <dc:Bounds height="20.0" width="100.0" x="824.0128173828125" y="357.1767883300781"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_4" id="BPMNShape_IntermediateCatchEvent_9"> <bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_4" id="BPMNShape_IntermediateCatchEvent_9">
<dc:Bounds height="36.0" width="36.0" x="1347.0" y="317.0"/> <dc:Bounds height="36.0" width="36.0" x="1337.0" y="317.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_46" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_46" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1317.7283935546875" y="351.10797119140625"/> <dc:Bounds height="20.0" width="100.0" x="1307.7283935546875" y="351.10797119140625"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_1" id="BPMNShape_Task_3"> <bpmndi:BPMNShape bpmnElement="Task_1" id="BPMNShape_Task_3">
<dc:Bounds height="50.0" width="110.0" x="1150.0" y="160.0"/> <dc:Bounds height="50.0" width="110.0" x="1140.0" y="160.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_6" id="BPMNShape_IntermediateCatchEvent_11"> <bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_6" id="BPMNShape_IntermediateCatchEvent_11">
<dc:Bounds height="36.0" width="36.0" x="1187.0" y="237.0"/> <dc:Bounds height="36.0" width="36.0" x="1177.0" y="237.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_56" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_56" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1155.2283935546875" y="278.10797119140625"/> <dc:Bounds height="20.0" width="100.0" x="1145.2283935546875" y="278.10797119140625"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="TextAnnotation_4" id="BPMNShape_TextAnnotation_4"> <bpmndi:BPMNShape bpmnElement="TextAnnotation_4" id="BPMNShape_TextAnnotation_4">
<dc:Bounds height="60.0" width="239.0" x="1240.0" y="90.0"/> <dc:Bounds height="60.0" width="239.0" x="1230.0" y="90.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_7" id="BPMNShape_IntermediateCatchEvent_12"> <bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_7" id="BPMNShape_IntermediateCatchEvent_12">
<dc:Bounds height="36.0" width="36.0" x="1077.0" y="167.0"/> <dc:Bounds height="36.0" width="36.0" x="1067.0" y="167.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_31" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_31" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1048.638671875" y="203.10794067382812"/> <dc:Bounds height="20.0" width="100.0" x="1038.638671875" y="203.10794067382812"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_8" id="BPMNShape_IntermediateCatchEvent_14"> <bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_8" id="BPMNShape_IntermediateCatchEvent_14">
<dc:Bounds height="36.0" width="36.0" x="1187.0" y="427.0"/> <dc:Bounds height="36.0" width="36.0" x="1177.0" y="427.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_70" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_70" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1154.7283935546875" y="464.10797119140625"/> <dc:Bounds height="20.0" width="100.0" x="1144.7283935546875" y="464.10797119140625"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Task_6" id="BPMNShape_Task_4"> <bpmndi:BPMNShape bpmnElement="Task_6" id="BPMNShape_Task_4">
<dc:Bounds height="50.0" width="110.0" x="1630.0" y="160.0"/> <dc:Bounds height="50.0" width="110.0" x="1620.0" y="160.0"/>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="EventBasedGateway_1" id="BPMNShape_EventBasedGateway_1" isMarkerVisible="true"> <bpmndi:BPMNShape bpmnElement="EventBasedGateway_1" id="BPMNShape_EventBasedGateway_1" isMarkerVisible="true">
<dc:Bounds height="50.0" width="50.0" x="1340.0" y="160.0"/> <dc:Bounds height="50.0" width="50.0" x="1330.0" y="160.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_74" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_74" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1315.0" y="213.0"/> <dc:Bounds height="20.0" width="100.0" x="1305.0" y="213.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_9" id="BPMNShape_IntermediateCatchEvent_15"> <bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_9" id="BPMNShape_IntermediateCatchEvent_15">
<dc:Bounds height="36.0" width="36.0" x="1497.0" y="167.0"/> <dc:Bounds height="36.0" width="36.0" x="1487.0" y="167.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_76" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_76" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="1467.138671875" y="203.10794067382812"/> <dc:Bounds height="20.0" width="100.0" x="1457.138671875" y="203.10794067382812"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="ExclusiveGateway_2" id="BPMNShape_ExclusiveGateway_2" isMarkerVisible="true"> <bpmndi:BPMNShape bpmnElement="ExclusiveGateway_2" id="BPMNShape_ExclusiveGateway_2" isMarkerVisible="true">
<dc:Bounds height="50.0" width="50.0" x="980.0" y="310.0"/> <dc:Bounds height="50.0" width="50.0" x="970.0" y="310.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_82" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_82" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="955.0" y="363.0"/> <dc:Bounds height="20.0" width="100.0" x="945.0" y="363.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_10" id="BPMNShape_IntermediateCatchEvent_16"> <bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_10" id="BPMNShape_IntermediateCatchEvent_16">
<dc:Bounds height="36.0" width="36.0" x="707.0" y="427.0"/> <dc:Bounds height="36.0" width="36.0" x="697.0" y="217.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_92" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_92" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="676.7044067382812" y="462.10797119140625"/> <dc:Bounds height="20.0" width="100.0" x="666.7044067382812" y="252.10797119140625"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="Association_2" id="BPMNEdge_Association_2" sourceElement="BPMNShape_DataObject_1" targetElement="BPMNShape_Task_5"> <bpmndi:BPMNEdge bpmnElement="Association_2" id="BPMNEdge_Association_2" sourceElement="BPMNShape_DataObject_1" targetElement="BPMNShape_Task_5">
<bpmndi:BPMNLabel id="BPMNLabel_86"/> <bpmndi:BPMNLabel id="BPMNLabel_86"/>
<di:waypoint x="325.0" y="247.0"/> <di:waypoint x="315.0" y="247.0"/>
<di:waypoint x="407.0" y="247.0"/> <di:waypoint x="397.0" y="247.0"/>
<di:waypoint x="407.0" y="310.0"/> <di:waypoint x="397.0" y="310.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_47" id="BPMNEdge_SequenceFlow_48" sourceElement="BPMNShape_Task_11" targetElement="BPMNShape_EndEvent_2"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_47" id="BPMNEdge_SequenceFlow_48" sourceElement="BPMNShape_Task_11" targetElement="BPMNShape_EndEvent_2">
<bpmndi:BPMNLabel id="BPMNLabel_111"/> <bpmndi:BPMNLabel id="BPMNLabel_111"/>
<di:waypoint x="1740.0" y="323.0"/> <di:waypoint x="1730.0" y="323.0"/>
<di:waypoint x="1805.0" y="323.0"/> <di:waypoint x="1795.0" y="323.0"/>
<di:waypoint x="1805.0" y="283.0"/> <di:waypoint x="1795.0" y="283.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_56" id="BPMNEdge_SequenceFlow_57" sourceElement="BPMNShape_IntermediateCatchEvent_27" targetElement="BPMNShape_ExclusiveGateway_2"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_56" id="BPMNEdge_SequenceFlow_57" sourceElement="BPMNShape_IntermediateCatchEvent_27" targetElement="BPMNShape_ExclusiveGateway_2">
<bpmndi:BPMNLabel id="BPMNLabel_118"/> <bpmndi:BPMNLabel id="BPMNLabel_118"/>
<di:waypoint x="893.0" y="335.0"/> <di:waypoint x="883.0" y="335.0"/>
<di:waypoint x="980.0" y="335.0"/> <di:waypoint x="970.0" y="335.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_19" id="BPMNEdge_SequenceFlow_20" sourceElement="BPMNShape_Task_10" targetElement="BPMNShape_IntermediateCatchEvent_9"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_19" id="BPMNEdge_SequenceFlow_20" sourceElement="BPMNShape_Task_10" targetElement="BPMNShape_IntermediateCatchEvent_9">
<bpmndi:BPMNLabel id="BPMNLabel_48"/> <bpmndi:BPMNLabel id="BPMNLabel_48"/>
<di:waypoint x="1260.0" y="335.0"/> <di:waypoint x="1250.0" y="335.0"/>
<di:waypoint x="1347.0" y="335.0"/> <di:waypoint x="1337.0" y="335.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_21" id="BPMNEdge_SequenceFlow_21" sourceElement="BPMNShape_IntermediateCatchEvent_9" targetElement="BPMNShape_Task_11"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_21" id="BPMNEdge_SequenceFlow_21" sourceElement="BPMNShape_IntermediateCatchEvent_9" targetElement="BPMNShape_Task_11">
<bpmndi:BPMNLabel id="BPMNLabel_49"/> <bpmndi:BPMNLabel id="BPMNLabel_49"/>
<di:waypoint x="1383.0" y="335.0"/> <di:waypoint x="1373.0" y="335.0"/>
<di:waypoint x="1630.0" y="335.0"/> <di:waypoint x="1620.0" y="335.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_25" id="BPMNEdge_SequenceFlow_26" sourceElement="BPMNShape_Task_10" targetElement="BPMNShape_IntermediateCatchEvent_11"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_25" id="BPMNEdge_SequenceFlow_26" sourceElement="BPMNShape_Task_10" targetElement="BPMNShape_IntermediateCatchEvent_11">
<bpmndi:BPMNLabel id="BPMNLabel_57"/> <bpmndi:BPMNLabel id="BPMNLabel_57"/>
<di:waypoint x="1205.0" y="310.0"/> <di:waypoint x="1195.0" y="310.0"/>
<di:waypoint x="1205.0" y="273.0"/> <di:waypoint x="1195.0" y="273.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_26" id="BPMNEdge_SequenceFlow_27" sourceElement="BPMNShape_IntermediateCatchEvent_11" targetElement="BPMNShape_Task_3"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_26" id="BPMNEdge_SequenceFlow_27" sourceElement="BPMNShape_IntermediateCatchEvent_11" targetElement="BPMNShape_Task_3">
<bpmndi:BPMNLabel id="BPMNLabel_59"/> <bpmndi:BPMNLabel id="BPMNLabel_59"/>
<di:waypoint x="1205.0" y="237.0"/> <di:waypoint x="1195.0" y="237.0"/>
<di:waypoint x="1205.0" y="210.0"/> <di:waypoint x="1195.0" y="210.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_27" id="BPMNEdge_SequenceFlow_28" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateCatchEvent_9"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_27" id="BPMNEdge_SequenceFlow_28" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateCatchEvent_9">
<bpmndi:BPMNLabel id="BPMNLabel_62"/> <bpmndi:BPMNLabel id="BPMNLabel_62"/>
<di:waypoint x="1365.0" y="210.0"/> <di:waypoint x="1355.0" y="210.0"/>
<di:waypoint x="1365.0" y="263.0"/> <di:waypoint x="1355.0" y="263.0"/>
<di:waypoint x="1365.0" y="317.0"/> <di:waypoint x="1355.0" y="317.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="Association_5" id="BPMNEdge_Association_5" sourceElement="BPMNShape_TextAnnotation_4" targetElement="BPMNShape_Task_3"> <bpmndi:BPMNEdge bpmnElement="Association_5" id="BPMNEdge_Association_5" sourceElement="BPMNShape_TextAnnotation_4" targetElement="BPMNShape_Task_3">
<bpmndi:BPMNLabel id="BPMNLabel_12"/> <bpmndi:BPMNLabel id="BPMNLabel_12"/>
<di:waypoint x="1240.0" y="112.0"/> <di:waypoint x="1230.0" y="112.0"/>
<di:waypoint x="1209.0" y="112.0"/> <di:waypoint x="1199.0" y="112.0"/>
<di:waypoint x="1209.0" y="160.0"/> <di:waypoint x="1199.0" y="160.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_17" id="BPMNEdge_SequenceFlow_18" sourceElement="BPMNShape_IntermediateCatchEvent_14" targetElement="BPMNShape_Task_10"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_17" id="BPMNEdge_SequenceFlow_18" sourceElement="BPMNShape_IntermediateCatchEvent_14" targetElement="BPMNShape_Task_10">
<bpmndi:BPMNLabel id="BPMNLabel_71"/> <bpmndi:BPMNLabel id="BPMNLabel_71"/>
<di:waypoint x="1205.0" y="427.0"/> <di:waypoint x="1195.0" y="427.0"/>
<di:waypoint x="1205.0" y="360.0"/> <di:waypoint x="1195.0" y="360.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_22" id="BPMNEdge_SequenceFlow_22" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_EndEvent_2"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_22" id="BPMNEdge_SequenceFlow_22" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_EndEvent_2">
<bpmndi:BPMNLabel id="BPMNLabel_73"/> <bpmndi:BPMNLabel id="BPMNLabel_73"/>
<di:waypoint x="1740.0" y="185.0"/> <di:waypoint x="1730.0" y="185.0"/>
<di:waypoint x="1805.0" y="185.0"/> <di:waypoint x="1795.0" y="185.0"/>
<di:waypoint x="1805.0" y="247.0"/> <di:waypoint x="1795.0" y="247.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_23" id="BPMNEdge_SequenceFlow_23" sourceElement="BPMNShape_Task_3" targetElement="BPMNShape_EventBasedGateway_1"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_23" id="BPMNEdge_SequenceFlow_23" sourceElement="BPMNShape_Task_3" targetElement="BPMNShape_EventBasedGateway_1">
<bpmndi:BPMNLabel id="BPMNLabel_75"/> <bpmndi:BPMNLabel id="BPMNLabel_75"/>
<di:waypoint x="1260.0" y="185.0"/> <di:waypoint x="1250.0" y="185.0"/>
<di:waypoint x="1340.0" y="185.0"/> <di:waypoint x="1330.0" y="185.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_34" id="BPMNEdge_SequenceFlow_35" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateCatchEvent_15"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_34" id="BPMNEdge_SequenceFlow_35" sourceElement="BPMNShape_EventBasedGateway_1" targetElement="BPMNShape_IntermediateCatchEvent_15">
<bpmndi:BPMNLabel id="BPMNLabel_78"/> <bpmndi:BPMNLabel id="BPMNLabel_78"/>
<di:waypoint x="1390.0" y="185.0"/> <di:waypoint x="1380.0" y="185.0"/>
<di:waypoint x="1497.0" y="185.0"/> <di:waypoint x="1487.0" y="185.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_36" id="BPMNEdge_SequenceFlow_37" sourceElement="BPMNShape_Task_3" targetElement="BPMNShape_IntermediateCatchEvent_12"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_36" id="BPMNEdge_SequenceFlow_37" sourceElement="BPMNShape_Task_3" targetElement="BPMNShape_IntermediateCatchEvent_12">
<bpmndi:BPMNLabel id="BPMNLabel_83"/> <bpmndi:BPMNLabel id="BPMNLabel_83"/>
<di:waypoint x="1150.0" y="185.0"/> <di:waypoint x="1140.0" y="185.0"/>
<di:waypoint x="1113.0" y="185.0"/> <di:waypoint x="1103.0" y="185.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_39" id="BPMNEdge_SequenceFlow_40" sourceElement="BPMNShape_IntermediateCatchEvent_12" targetElement="BPMNShape_ExclusiveGateway_2"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_39" id="BPMNEdge_SequenceFlow_40" sourceElement="BPMNShape_IntermediateCatchEvent_12" targetElement="BPMNShape_ExclusiveGateway_2">
<bpmndi:BPMNLabel id="BPMNLabel_84"/> <bpmndi:BPMNLabel id="BPMNLabel_84"/>
<di:waypoint x="1077.0" y="185.0"/> <di:waypoint x="1067.0" y="185.0"/>
<di:waypoint x="1006.0" y="185.0"/> <di:waypoint x="996.0" y="185.0"/>
<di:waypoint x="1006.0" y="311.0"/> <di:waypoint x="996.0" y="311.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_40" id="BPMNEdge_SequenceFlow_41" sourceElement="BPMNShape_ExclusiveGateway_2" targetElement="BPMNShape_Task_10"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_40" id="BPMNEdge_SequenceFlow_41" sourceElement="BPMNShape_ExclusiveGateway_2" targetElement="BPMNShape_Task_10">
<bpmndi:BPMNLabel id="BPMNLabel_87"/> <bpmndi:BPMNLabel id="BPMNLabel_87"/>
<di:waypoint x="1030.0" y="335.0"/> <di:waypoint x="1020.0" y="335.0"/>
<di:waypoint x="1150.0" y="335.0"/> <di:waypoint x="1140.0" y="335.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_41" id="BPMNEdge_SequenceFlow_42" sourceElement="BPMNShape_IntermediateCatchEvent_15" targetElement="BPMNShape_Task_4"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_41" id="BPMNEdge_SequenceFlow_42" sourceElement="BPMNShape_IntermediateCatchEvent_15" targetElement="BPMNShape_Task_4">
<bpmndi:BPMNLabel id="BPMNLabel_88"/> <bpmndi:BPMNLabel id="BPMNLabel_88"/>
<di:waypoint x="1533.0" y="185.0"/> <di:waypoint x="1523.0" y="185.0"/>
<di:waypoint x="1630.0" y="185.0"/> <di:waypoint x="1620.0" y="185.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_42" id="BPMNEdge_SequenceFlow_43" sourceElement="BPMNShape_IntermediateCatchEvent_16" targetElement="BPMNShape_Task_9"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_42" id="BPMNEdge_SequenceFlow_43" sourceElement="BPMNShape_IntermediateCatchEvent_16" targetElement="BPMNShape_Task_9">
<bpmndi:BPMNLabel id="BPMNLabel_94"/> <bpmndi:BPMNLabel id="BPMNLabel_94"/>
<di:waypoint x="725.0" y="427.0"/> <di:waypoint x="715.0" y="253.0"/>
<di:waypoint x="725.0" y="395.0"/> <di:waypoint x="715.0" y="310.0"/>
<di:waypoint x="725.0" y="360.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="message_1" id="BPMNShape_5X9D7w"> <bpmndi:BPMNShape bpmnElement="message_1" id="BPMNShape_5X9D7w">
<dc:Bounds height="20.0" width="30.0" x="190.0" y="0.0"/> <dc:Bounds height="20.0" width="30.0" x="190.0" y="0.0"/>
@ -1368,46 +1817,155 @@ result.isValid=true;
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_qTIbqA" id="BPMNShape_0OS0TQ"> <bpmndi:BPMNShape bpmnElement="event_qTIbqA" id="BPMNShape_0OS0TQ">
<dc:Bounds height="36.0" width="36.0" x="397.0" y="417.0"/> <dc:Bounds height="36.0" width="36.0" x="387.0" y="417.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_S00mag"> <bpmndi:BPMNLabel id="BPMNLabel_S00mag">
<dc:Bounds height="20.0" width="100.0" x="365.0" y="456.0"/> <dc:Bounds height="20.0" width="100.0" x="355.0" y="456.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="dataObject_axJA7Q" id="BPMNShape_3PbNFQ"> <bpmndi:BPMNShape bpmnElement="dataObject_axJA7Q" id="BPMNShape_3PbNFQ">
<dc:Bounds height="50.0" width="35.0" x="290.0" y="410.0"/> <dc:Bounds height="50.0" width="35.0" x="320.0" y="570.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_0LrXLw"> <bpmndi:BPMNLabel id="BPMNLabel_0LrXLw">
<dc:Bounds height="20.0" width="100.0" x="257.5" y="465.0"/> <dc:Bounds height="20.0" width="100.0" x="287.5" y="625.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_JGXYyg" id="BPMNEdge_bHPaEg" sourceElement="BPMNShape_0OS0TQ" targetElement="BPMNShape_3PbNFQ"> <bpmndi:BPMNEdge bpmnElement="association_JGXYyg" id="BPMNEdge_bHPaEg" sourceElement="BPMNShape_0OS0TQ" targetElement="BPMNShape_3PbNFQ">
<di:waypoint x="397.0" y="435.0"/> <di:waypoint x="387.0" y="435.0"/>
<di:waypoint x="325.0" y="435.0"/> <di:waypoint x="352.0" y="435.0"/>
<di:waypoint x="352.0" y="570.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_y0smQw" id="BPMNShape_JqPTSA"> <bpmndi:BPMNShape bpmnElement="event_y0smQw" id="BPMNShape_JqPTSA">
<dc:Bounds height="36.0" width="36.0" x="547.0" y="317.0"/> <dc:Bounds height="36.0" width="36.0" x="537.0" y="317.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_CUZv5A"> <bpmndi:BPMNLabel id="BPMNLabel_CUZv5A">
<dc:Bounds height="20.0" width="100.0" x="515.0" y="356.0"/> <dc:Bounds height="20.0" width="100.0" x="505.0" y="356.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_4DUFiA" id="BPMNEdge_SHExwQ" sourceElement="BPMNShape_JqPTSA" targetElement="BPMNShape_Task_9"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_4DUFiA" id="BPMNEdge_SHExwQ" sourceElement="BPMNShape_JqPTSA" targetElement="BPMNShape_GaaSuQ">
<di:waypoint x="583.0" y="335.0"/> <di:waypoint x="555.0" y="353.0"/>
<di:waypoint x="670.0" y="335.0"/> <di:waypoint x="555.0" y="462.0"/>
<di:waypoint x="555.0" y="570.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_HCxYvw" id="BPMNEdge_HrTn1A" sourceElement="BPMNShape_Task_9" targetElement="BPMNShape_IntermediateCatchEvent_27"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_HCxYvw" id="BPMNEdge_HrTn1A" sourceElement="BPMNShape_Task_9" targetElement="BPMNShape_IntermediateCatchEvent_27">
<di:waypoint x="780.0" y="335.0"/> <di:waypoint x="770.0" y="335.0"/>
<di:waypoint x="857.0" y="335.0"/> <di:waypoint x="847.0" y="335.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_8NDJxA" id="BPMNEdge_5jeXwQ" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_Task_5"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_8NDJxA" id="BPMNEdge_5jeXwQ" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_Task_5">
<di:waypoint x="263.0" y="335.0"/> <di:waypoint x="253.0" y="335.0"/>
<di:waypoint x="360.0" y="335.0"/> <di:waypoint x="350.0" y="335.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_UIpo9Q" id="BPMNEdge_GbmXGw" sourceElement="BPMNShape_Task_5" targetElement="BPMNShape_JqPTSA"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_UIpo9Q" id="BPMNEdge_GbmXGw" sourceElement="BPMNShape_Task_5" targetElement="BPMNShape_JqPTSA">
<di:waypoint x="470.0" y="335.0"/> <di:waypoint x="460.0" y="335.0"/>
<di:waypoint x="547.0" y="335.0"/> <di:waypoint x="537.0" y="335.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_WRPdIA" id="BPMNEdge_OPuJYA" sourceElement="BPMNShape_0OS0TQ" targetElement="BPMNShape_Task_5"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_WRPdIA" id="BPMNEdge_OPuJYA" sourceElement="BPMNShape_0OS0TQ" targetElement="BPMNShape_Task_5">
<di:waypoint x="415.0" y="417.0"/> <di:waypoint x="405.0" y="417.0"/>
<di:waypoint x="415.0" y="360.0"/> <di:waypoint x="405.0" y="360.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="task_ol2R9A" id="BPMNShape_GaaSuQ">
<dc:Bounds height="50.0" width="110.0" x="500.0" y="570.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_P1MFZQ" id="BPMNShape_X7JvIg">
<dc:Bounds height="36.0" width="36.0" x="537.0" y="707.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_UXw4qw">
<dc:Bounds height="20.0" width="100.0" x="505.0" y="746.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_NLZbsw" id="BPMNShape_zb0q5w">
<dc:Bounds height="36.0" width="36.0" x="597.0" y="577.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_mxSzrg">
<dc:Bounds height="20.0" width="100.0" x="565.0" y="616.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_0Q20mA" id="BPMNEdge_0rXE0w" sourceElement="BPMNShape_GaaSuQ" targetElement="BPMNShape_X7JvIg">
<di:waypoint x="555.0" y="620.0"/>
<di:waypoint x="555.0" y="707.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_InfPdQ" id="BPMNEdge_Z4fGdA" sourceElement="BPMNShape_zb0q5w" targetElement="BPMNShape_X7JvIg">
<di:waypoint x="633.0" y="595.0"/>
<di:waypoint x="650.0" y="595.0"/>
<di:waypoint x="650.0" y="725.0"/>
<di:waypoint x="573.0" y="725.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="task_0THxmg" id="BPMNShape_wu0GaA">
<dc:Bounds height="50.0" width="110.0" x="500.0" y="830.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_hZg0iw" id="BPMNEdge_rJd3OA" sourceElement="BPMNShape_X7JvIg" targetElement="BPMNShape_wu0GaA">
<di:waypoint x="555.0" y="743.0"/>
<di:waypoint x="555.0" y="830.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_KwpMKw" id="BPMNShape_qvXTpw">
<dc:Bounds height="36.0" width="36.0" x="537.0" y="937.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_fI5L0A">
<dc:Bounds height="20.0" width="100.0" x="505.0" y="976.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_HfDRCQ" id="BPMNEdge_VZ4APw" sourceElement="BPMNShape_wu0GaA" targetElement="BPMNShape_qvXTpw">
<di:waypoint x="555.0" y="880.0"/>
<di:waypoint x="555.0" y="937.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_RppP5Q" id="BPMNEdge_8ic0PQ" sourceElement="BPMNShape_qvXTpw" targetElement="BPMNShape_Task_9">
<di:waypoint x="555.0" y="973.0"/>
<di:waypoint x="555.0" y="1026.0"/>
<di:waypoint x="717.0" y="1026.0"/>
<di:waypoint x="717.0" y="360.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_AIXGmw" id="BPMNEdge_th7hjg" sourceElement="BPMNShape_3PbNFQ" targetElement="BPMNShape_X7JvIg">
<di:waypoint x="338.0" y="620.0"/>
<di:waypoint x="338.0" y="725.0"/>
<di:waypoint x="537.0" y="725.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="dataObject_iq4agg" id="BPMNShape_tMFi0g">
<dc:Bounds height="50.0" width="35.0" x="330.0" y="930.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_7DuFzg">
<dc:Bounds height="20.0" width="100.0" x="295.0" y="980.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_IJuYEA" id="BPMNEdge_fyp9yg" sourceElement="BPMNShape_tMFi0g" targetElement="BPMNShape_qvXTpw">
<di:waypoint x="365.0" y="955.0"/>
<di:waypoint x="537.0" y="955.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="dataObject_u4ZytA" id="BPMNShape_zNuYaQ">
<dc:Bounds height="50.0" width="35.0" x="600.0" y="210.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_aquA5Q">
<dc:Bounds height="20.0" width="100.0" x="568.0" y="268.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="association_0SKl0g" id="BPMNEdge_XpKvAg" sourceElement="BPMNShape_zNuYaQ" targetElement="BPMNShape_Task_9">
<di:waypoint x="635.0" y="235.0"/>
<di:waypoint x="678.0" y="235.0"/>
<di:waypoint x="678.0" y="310.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_VlP5cw" id="BPMNEdge_2nDXYg" sourceElement="BPMNShape_Task_9" targetElement="BPMNShape_JqPTSA">
<di:waypoint x="660.0" y="335.0"/>
<di:waypoint x="573.0" y="335.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_zsQpoQ" id="BPMNShape_4N0zng">
<dc:Bounds height="36.0" width="36.0" x="587.0" y="837.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_8IelbQ">
<dc:Bounds height="20.0" width="100.0" x="555.0" y="876.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_JZ6sYQ" id="BPMNEdge_zqEK5w" sourceElement="BPMNShape_4N0zng" targetElement="BPMNShape_qvXTpw">
<di:waypoint x="623.0" y="855.0"/>
<di:waypoint x="648.0" y="855.0"/>
<di:waypoint x="648.0" y="955.0"/>
<di:waypoint x="573.0" y="955.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_EyDvQQ" id="BPMNShape_yKgIag">
<dc:Bounds height="36.0" width="36.0" x="797.0" y="147.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_bQWcwg">
<dc:Bounds height="20.0" width="100.0" x="765.0" y="186.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_ZtZaBQ" id="BPMNEdge_fPCXug" sourceElement="BPMNShape_Task_9" targetElement="BPMNShape_yKgIag">
<di:waypoint x="747.0" y="310.0"/>
<di:waypoint x="747.0" y="285.0"/>
<di:waypoint x="815.0" y="285.0"/>
<di:waypoint x="815.0" y="183.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_ytbNEQ" id="BPMNEdge_Ycm48g" sourceElement="BPMNShape_yKgIag" targetElement="BPMNShape_Task_5">
<di:waypoint x="797.0" y="165.0"/>
<di:waypoint x="436.0" y="165.0"/>
<di:waypoint x="436.0" y="310.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
</bpmndi:BPMNPlane> </bpmndi:BPMNPlane>
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1"> <bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<PromptDefinition>
<prompt_options>{"n_predict": 4096, "temperature": 0}</prompt_options>
<prompt><![CDATA[[INST] Du bist Vertriebsmitarbeiter bei der LUPI Wärmetauscher GmbH. Deine Aufgabe ist es, eingehende Anfragen zu beantworten und Vorschläge für Angebote zu unterbreiten. [/INST]
<itemvalue>request.description</itemvalue>
</s>[INST]
Zu dem hier vorliegenden Angebot kommen folgende Produkte in Frage:
<for-each-ref item="product.ref">
<itemvalue>$workflowabstract</itemvalue>
</for-each-ref>
Prüfe welches dieser Produkte am besten für die Anfrage geeignet ist und erstelle ein Angebot sowie eine kurze Begründung für deine Auswahl die für den Kunden verständlich ist.
Füge eine Tabelle mit den folgenden Spalten für die Angebotserstellung mit ein:
- Produkt
- Menge
- Preis pro Stück
- Mehrwertsteuer
- Gesamtpreis
[/INST]
]]>
</prompt>
</PromptDefinition>

View file

@ -1333,10 +1333,10 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
</imixs:item> </imixs:item>
<imixs:item name="txtactivityresult" type="xs:string"> <imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="action">home</item> <imixs:value><![CDATA[<item name="action">home</item>
<imixs-ai name="DELETE"> <rag-index name="DELETE">
<endpoint>https://llama.cpp2.imixs.com/</endpoint> <endpoint>https://llama.cpp2.imixs.com/</endpoint>
<debug>true</debug> <debug>true</debug>
</imixs-ai> </rag-index>
]]></imixs:value> ]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="txtname" type="xs:string"> <imixs:item name="txtname" type="xs:string">
@ -1355,7 +1355,7 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<bpmn2:documentation id="documentation_DVm0Lg"><![CDATA[Bestellung ausgeführt]]></bpmn2:documentation> <bpmn2:documentation id="documentation_DVm0Lg"><![CDATA[Bestellung ausgeführt]]></bpmn2:documentation>
<bpmn2:incoming>sequenceFlow_Jkgs0A</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_Jkgs0A</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_RgOnDQ</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_RgOnDQ</bpmn2:outgoing>
<bpmn2:signalEventDefinition id="signalEventDefinition_auduLQ" signalRef="signal_4"/> <bpmn2:conditionalEventDefinition id="conditionalEventDefinition_2U0SbA"/>
</bpmn2:intermediateCatchEvent> </bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_Jkgs0A" sourceRef="gateway_cDqotg" targetRef="event_k2i6EQ"> <bpmn2:sequenceFlow id="sequenceFlow_Jkgs0A" sourceRef="gateway_cDqotg" targetRef="event_k2i6EQ">
<bpmn2:documentation id="documentation_JgAfHA"/> <bpmn2:documentation id="documentation_JgAfHA"/>