update zoho interface
This commit is contained in:
parent
0f7627419a
commit
4b9da4d98a
6 changed files with 288 additions and 27 deletions
|
|
@ -2,22 +2,7 @@
|
|||
|
||||
AGL Dubai nutzt Zoho als Platform zusammen mit einer lokalen Steuerkanzlei
|
||||
|
||||
## Test/Prod Account Imixs
|
||||
|
||||
https://api-console.zoho.eu/
|
||||
https://api-console.zoho.eu/client/1000.NLTM2KUEHI696MSLGEIANATVGGX7IN
|
||||
|
||||
```
|
||||
zoho.accesstoken 1000.18f5fbeaf572425b8062d015d541aad5.a704efa994774ef33d7af75106468a13
|
||||
zoho.apidomain https://www.zohoapis.eu
|
||||
zoho.clientid 1000.GR5FTPZYB06HEWSFSSX4DJU3OBD4EJ
|
||||
zoho.clientsecret 3f3e74c5212bbc924a7ebf77f887c6296db1106c47
|
||||
zoho.code 1000.c184c7592a218fee58f7b7855b56eb77.7b533ff9f570fd6ab3296784caeec072
|
||||
zoho.organization 20105697367
|
||||
zoho.refreshtoken 1000.98fe4d0c4f676237b400bf8a3dc219f3.03d6bacf5b988d339eb788c4ecff440e
|
||||
zoho.scope ZohoBooks.contacts.ALL ZohoBooks.invoices.CREATE ZohoBooks.invoices.READ ZohoBooks.invoices.UPDATE
|
||||
|
||||
```
|
||||
Testaccount - siehe [SECRETS.md](SECRETS.md)
|
||||
|
||||
# API Dokumentation
|
||||
|
||||
|
|
|
|||
|
|
@ -8,9 +8,15 @@ https://api-console.zoho.eu/
|
|||
https://api-console.zoho.eu/client/1000.NLTM2KUEHI696MSLGEIANATVGGX7IN
|
||||
|
||||
```
|
||||
OrganizationID=20105697367
|
||||
client ID= 1000.NLTM2KUEHI696MSLGEIANATVGGX7IN
|
||||
client secret= ee9ba49f16e77c64abb89cea13542d2326d8d03ce8
|
||||
zoho.accesstoken 1000.18f5fbeaf572425b8062d015d541aad5.a704efa994774ef33d7af75106468a13
|
||||
zoho.apidomain https://www.zohoapis.eu
|
||||
zoho.clientid 1000.GR5FTPZYB06HEWSFSSX4DJU3OBD4EJ
|
||||
zoho.clientsecret 3f3e74c5212bbc924a7ebf77f887c6296db1106c47
|
||||
zoho.code 1000.c184c7592a218fee58f7b7855b56eb77.7b533ff9f570fd6ab3296784caeec072
|
||||
zoho.organization 20105697367
|
||||
zoho.refreshtoken 1000.98fe4d0c4f676237b400bf8a3dc219f3.03d6bacf5b988d339eb788c4ecff440e
|
||||
zoho.scope ZohoBooks.contacts.ALL ZohoBooks.invoices.CREATE ZohoBooks.invoices.READ ZohoBooks.invoices.UPDATE
|
||||
|
||||
```
|
||||
|
||||
# API Dokumentation
|
||||
|
|
@ -24,3 +30,10 @@ https://books.zoho.eu/app/20105697367
|
|||
https://accounts.zoho.eu/home#
|
||||
|
||||
Base API URI= https://accounts.zoho.eu/
|
||||
|
||||
# AGL Organisation
|
||||
|
||||
https://api-console.zoho.com
|
||||
|
||||
info@imixs.com
|
||||
password imixs4zoho
|
||||
|
|
|
|||
|
|
@ -180,12 +180,17 @@ public class ZohoAPIService {
|
|||
zohoInvoice = createResponse.getInvoice();
|
||||
|
||||
// now add attachments (optional)
|
||||
try {
|
||||
if (files != null) {
|
||||
for (FileData file : files) {
|
||||
attacheFileData(zohoInvoice.getInvoiceId(), file, "invoices", accessToken);
|
||||
}
|
||||
}
|
||||
|
||||
// now mark the invoice as send
|
||||
markInvoiceAsSend(zohoInvoice.getInvoiceId(), "invoices", accessToken);
|
||||
} catch (PluginException e) {
|
||||
logger.warning("Failed to export Invoice: " + e.getMessage());
|
||||
}
|
||||
logger.info("│ ├── Invoice Export successful.");
|
||||
return zohoInvoice;
|
||||
} else {
|
||||
|
|
@ -344,4 +349,56 @@ public class ZohoAPIService {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method marks an invoice as send
|
||||
*
|
||||
*
|
||||
* curl --request POST \ --url
|
||||
* 'https://www.zohoapis.com/books/v3/invoices/982000000567114/status/sent?organization_id=10234695'
|
||||
* \ --header 'Authorization: Zoho-oauthtoken
|
||||
* 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'
|
||||
*
|
||||
*
|
||||
* @param invoiceId The Zoho invoice ID
|
||||
* @param uriPattern The API endpoint pattern (e.g., "invoices")
|
||||
* @param accessToken The OAuth access token
|
||||
* @throws PluginException If the API call fails
|
||||
*/
|
||||
public void markInvoiceAsSend(String invoiceId, String uriPattern, String accessToken) throws PluginException {
|
||||
String uri = zohoOAuthManager.getBaseURI() + uriPattern + "/" + //
|
||||
invoiceId + //
|
||||
"/status/sent" + //
|
||||
"?organization_id=" + zohoOAuthManager.getOrganization();
|
||||
|
||||
logger.fine("│ ├── mark invoice as sent '" + invoiceId + "'...");
|
||||
logger.fine("│ ├── ...uri: " + uri + "...");
|
||||
|
||||
try {
|
||||
// JSON serialisieren
|
||||
String requestBody = "";
|
||||
logger.fine("│ ├── " + requestBody);
|
||||
|
||||
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(uri))
|
||||
.header("Authorization", "Zoho-oauthtoken " + accessToken)
|
||||
.header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofString(requestBody))
|
||||
.build();
|
||||
|
||||
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
logger.fine("├── Zoho Response:");
|
||||
logger.fine("│ ├── Status Code: " + response.statusCode());
|
||||
logger.fine("│ ├── Response Body: " + response.body());
|
||||
if (response.statusCode() >= 300) {
|
||||
throw new PluginException(this.getClass().getName(), "Zoho API error",
|
||||
"Failed to create invoice. Status code: " + response.statusCode() + ", Response: "
|
||||
+ response.body());
|
||||
}
|
||||
|
||||
logger.info("│ ├── OK - status update 'send' successfully");
|
||||
|
||||
} catch (IOException | InterruptedException e) {
|
||||
throw new PluginException(this.getClass().getName(), "Zoho API error",
|
||||
"Failed to add attachment: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,89 @@
|
|||
package com.alexanderlogistics.zoho.dto;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
import jakarta.json.bind.annotation.JsonbDateFormat;
|
||||
import jakarta.json.bind.annotation.JsonbProperty;
|
||||
|
||||
public class ZohoExpense {
|
||||
|
||||
@JsonbProperty("expense_id")
|
||||
private String expenseId;
|
||||
|
||||
@JsonbProperty("customer_id")
|
||||
private String customerId;
|
||||
|
||||
@JsonbDateFormat("yyyy-MM-dd")
|
||||
private LocalDate date;
|
||||
|
||||
@JsonbProperty("due_date")
|
||||
@JsonbDateFormat("yyyy-MM-dd")
|
||||
private LocalDate dueDate;
|
||||
|
||||
@JsonbProperty("reference_number")
|
||||
private String invoiceNumber;
|
||||
|
||||
@JsonbProperty("line_items")
|
||||
private List<ZohoInvoiceItem> lineItems;
|
||||
|
||||
private double total;
|
||||
|
||||
// Getter und Setter
|
||||
|
||||
public String getInvoiceId() {
|
||||
return invoiceId;
|
||||
}
|
||||
|
||||
public void setInvoiceId(String invoiceId) {
|
||||
this.invoiceId = invoiceId;
|
||||
}
|
||||
|
||||
public String getCustomerId() {
|
||||
return customerId;
|
||||
}
|
||||
|
||||
public void setCustomerId(String customerId) {
|
||||
this.customerId = customerId;
|
||||
}
|
||||
|
||||
public LocalDate getDate() {
|
||||
return date;
|
||||
}
|
||||
|
||||
public void setDate(LocalDate date) {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public LocalDate getDueDate() {
|
||||
return dueDate;
|
||||
}
|
||||
|
||||
public void setDueDate(LocalDate duedate) {
|
||||
this.dueDate = duedate;
|
||||
}
|
||||
|
||||
public String getInvoiceNumber() {
|
||||
return invoiceNumber;
|
||||
}
|
||||
|
||||
public void setInvoiceNumber(String invoiceNumber) {
|
||||
this.invoiceNumber = invoiceNumber;
|
||||
}
|
||||
|
||||
public List<ZohoInvoiceItem> getLineItems() {
|
||||
return lineItems;
|
||||
}
|
||||
|
||||
public void setLineItems(List<ZohoInvoiceItem> lineItems) {
|
||||
this.lineItems = lineItems;
|
||||
}
|
||||
|
||||
public double getTotal() {
|
||||
return total;
|
||||
}
|
||||
|
||||
public void setTotal(double total) {
|
||||
this.total = total;
|
||||
}
|
||||
}
|
||||
|
|
@ -143,6 +143,7 @@ th { font-weight: bold;}
|
|||
<bpmn2:flowNodeRef>TextAnnotation_2</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_1</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>event_D2TmxA</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>event_orShLw</bpmn2:flowNodeRef>
|
||||
</bpmn2:lane>
|
||||
</bpmn2:laneSet>
|
||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5000-20" imixs:activityid="50" name="[Due date]">
|
||||
|
|
@ -474,6 +475,7 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
|
|||
<bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
|
||||
<bpmn2:incoming>sequenceFlow_zhcE7Q</bpmn2:incoming>
|
||||
<bpmn2:incoming>sequenceFlow_6zqWyg</bpmn2:incoming>
|
||||
<bpmn2:incoming>sequenceFlow_0D6BEw</bpmn2:incoming>
|
||||
</bpmn2:task>
|
||||
<bpmn2:endEvent id="EndEvent_1" name="Ende">
|
||||
<bpmn2:incoming>SequenceFlow_61</bpmn2:incoming>
|
||||
|
|
@ -1507,6 +1509,79 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
|
|||
<bpmn2:sequenceFlow id="sequenceFlow_mdGzDQ" sourceRef="event_07fo0g" targetRef="Task_2">
|
||||
<bpmn2:documentation id="documentation_NV1xfg"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:intermediateCatchEvent id="event_orShLw" imixs:activityid="10" name="testSave">
|
||||
<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[$creator]]></imixs:value>
|
||||
<imixs:value><![CDATA[$editor]]></imixs:value>
|
||||
<imixs:value><![CDATA[process.manager]]></imixs:value>
|
||||
<imixs:value><![CDATA[process.team]]></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[$editor]]></imixs:value>
|
||||
<imixs:value><![CDATA[$creator]]></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="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_L08SPA"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
|
||||
<bpmn2:outgoing>sequenceFlow_0D6BEw</bpmn2:outgoing>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_0D6BEw" sourceRef="event_orShLw" targetRef="Task_1">
|
||||
<bpmn2:documentation id="documentation_STlpCw"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
</bpmn2:process>
|
||||
<bpmn2:process id="process_2" name="Default Process" processType="Public">
|
||||
<bpmn2:documentation id="documentation_J67Rkw"/>
|
||||
|
|
@ -1942,8 +2017,8 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
|
|||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_6zqWyg" id="BPMNEdge_IsC5BA" sourceElement="BPMNShape_PrZ78w" targetElement="BPMNShape_Task_3">
|
||||
<di:waypoint x="493.0" y="697.0"/>
|
||||
<di:waypoint x="708.0" y="697.0"/>
|
||||
<di:waypoint x="493.0" y="695.0"/>
|
||||
<di:waypoint x="708.0" y="695.0"/>
|
||||
<di:waypoint x="708.0" y="730.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="textAnnotation_u7Q3HQ" id="BPMNShape_biZYAw">
|
||||
|
|
@ -1979,6 +2054,18 @@ Wiedervorlage wird um 7 bzw. 5 Tage erhöht</bpmn2:text>
|
|||
<di:waypoint x="775.0" y="364.0"/>
|
||||
<di:waypoint x="775.0" y="330.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="event_orShLw" id="BPMNShape_Gm3gkg">
|
||||
<dc:Bounds height="36.0" width="36.0" x="777.0" y="817.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_3YjJZA">
|
||||
<dc:Bounds height="20.0" width="100.0" x="745.0" y="856.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_0D6BEw" id="BPMNEdge_oxlHKQ" sourceElement="BPMNShape_Gm3gkg" targetElement="BPMNShape_Task_3">
|
||||
<di:waypoint x="795.0" y="817.0"/>
|
||||
<di:waypoint x="795.0" y="799.0"/>
|
||||
<di:waypoint x="745.0" y="799.0"/>
|
||||
<di:waypoint x="745.0" y="780.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
||||
<dc:Font name="arial" size="9.0"/>
|
||||
|
|
|
|||
|
|
@ -165,6 +165,7 @@
|
|||
<bpmn2:flowNodeRef>TextAnnotation_2</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_62</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>gateway_Al0gGg</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>event_vjVWqA</bpmn2:flowNodeRef>
|
||||
</bpmn2:lane>
|
||||
</bpmn2:laneSet>
|
||||
<bpmn2:task id="Task_5000" imixs:processid="5300" name="Approval">
|
||||
|
|
@ -1461,6 +1462,7 @@ if (workitem.getItemValueString('payment.type')!="direct_debit" && workitem.get
|
|||
<bpmn2:incoming>SequenceFlow_41</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
|
||||
<bpmn2:outgoing>sequenceFlow_y2ISGw</bpmn2:outgoing>
|
||||
<bpmn2:incoming>sequenceFlow_BQWujA</bpmn2:incoming>
|
||||
</bpmn2:task>
|
||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_14" imixs:activityid="300" name="[Close SEPA]">
|
||||
<bpmn2:extensionElements>
|
||||
|
|
@ -4900,11 +4902,28 @@ Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export']]
|
|||
<bpmn2:sequenceFlow id="sequenceFlow_9rYDHA" sourceRef="gateway_Al0gGg" targetRef="Task_5">
|
||||
<bpmn2:documentation id="documentation_0y1bvw"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:intermediateCatchEvent id="event_vjVWqA" imixs:activityid="400" name="ZOHO Test">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="rtfresultlog" type="xs:string">
|
||||
<imixs:value><![CDATA[Zoho export]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keypublicresult" type="xs:string">
|
||||
<imixs:value><![CDATA[1]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="documentation_eZfxLg"/>
|
||||
<bpmn2:signalEventDefinition id="signalEventDefinition_TBI0Lg" signalRef="signal_9"/>
|
||||
<bpmn2:outgoing>sequenceFlow_BQWujA</bpmn2:outgoing>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_BQWujA" sourceRef="event_vjVWqA" targetRef="Task_6">
|
||||
<bpmn2:documentation id="documentation_YUR2fQ"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
</bpmn2:process>
|
||||
<bpmn2:process id="process_2" name="Invoice receipt" processType="Public">
|
||||
<bpmn2:documentation id="documentation_yUm3kA"/>
|
||||
</bpmn2:process>
|
||||
<bpmn2:signal id="signal_8" name="com.alexanderlogistics.RenameFilenamesAdapter"/>
|
||||
<bpmn2:signal id="signal_9" name="com.alexanderlogistics.zoho.ZohoExportAdapter"/>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_Process_1">
|
||||
<bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_Participant_1" isHorizontal="true">
|
||||
|
|
@ -5552,8 +5571,8 @@ Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export']]
|
|||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_23" id="BPMNEdge_SequenceFlow_23" sourceElement="BPMNShape_IntermediateCatchEvent_9" targetElement="BPMNShape_Task_6">
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_48"/>
|
||||
<di:waypoint x="1732.0" y="1760.0"/>
|
||||
<di:waypoint x="1865.0" y="1760.0"/>
|
||||
<di:waypoint x="1733.0" y="1755.0"/>
|
||||
<di:waypoint x="1865.0" y="1755.0"/>
|
||||
<di:waypoint x="1865.0" y="1820.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_25" id="BPMNEdge_SequenceFlow_26" sourceElement="BPMNShape_ExclusiveGateway_2" targetElement="BPMNShape_YcLGng">
|
||||
|
|
@ -6065,6 +6084,17 @@ Export erfolgt über eine asynchrone Verarbeitung im Modell 'cargosoft-export']]
|
|||
<di:waypoint x="2350.0" y="1615.0"/>
|
||||
<di:waypoint x="2410.0" y="1615.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="event_vjVWqA" id="BPMNShape_06TPWQ">
|
||||
<dc:Bounds height="36.0" width="36.0" x="1977.0" y="1737.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_Mz9hSQ">
|
||||
<dc:Bounds height="20.0" width="100.0" x="1945.0" y="1776.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_BQWujA" id="BPMNEdge_SE1dgg" sourceElement="BPMNShape_06TPWQ" targetElement="BPMNShape_Task_6">
|
||||
<di:waypoint x="1977.0" y="1755.0"/>
|
||||
<di:waypoint x="1897.0" y="1755.0"/>
|
||||
<di:waypoint x="1897.0" y="1820.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
||||
<dc:Font name="arial" size="9.0"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue