Изменения документа Движок cccc1808. ProcessEngine
Редактировал(а) Alexandr Fokin 2026/04/27 13:28
От версии 27.10
отредактировано Alexandr Fokin
на 2026/04/11 00:26
на 2026/04/11 00:26
Изменить комментарий:
К данной версии нет комментариев
К версии 30.1
отредактировано Alexandr Fokin
на 2026/04/27 13:25
на 2026/04/27 13:25
Изменить комментарий:
Вложение перемещено в xwiki:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Примеры.WebHome.
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
-
Вложения (0 изменено, 0 добавлено, 3 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,11 +1,12 @@ 1 -|(% style="width:132px" %) Тегипоиска|(% style="width:1301px" %)(((2 -cccc1808. ProcessEngine, cccc1808.ProcessEngine 1 +|(% style="width:132px" %) |(% style="width:1301px" %)((( 2 +|Теги поиска|cccc1808. ProcessEngine, cccc1808.ProcessEngine, Process engine 3 3 Очередь задач, Система обработки процессов, Движок обработки процессов. 4 4 [[Процесс>>doc:Архитектура и модели.Модели.Процесс.WebHome]] 5 -))) 6 -|(% style="width:132px" %) |(% style="width:1301px" %)Универсальный движок для выполнения процессов и очередей задач, позволяющий комбинировать несколько подходов к обработке (см особенности). 7 -|(% style="width:132px" %) |(% style="width:1301px" %)Процесс является единицей исполнения. В реализации может содержать машину состояний. 5 +|Описание|Универсальный движок для выполнения процессов и очередей задач, позволяющий комбинировать несколько подходов к обработке (см особенности). 6 +|Термины|Процесс является единицей исполнения. В реализации может содержать машину состояний. 8 8 Система триггеров используется для таймеров и передачи сигналов для процессов (с оптимизацией нагрузки). 8 +|Репозиторий|[[https:~~/~~/github.com/cccc1808/cccc1808.ProcessEngine>>https://github.com/cccc1808/cccc1808.ProcessEngine]] 9 +))) 9 9 |(% style="width:132px" %)Разветывание|(% style="width:1301px" %)((( 10 10 |(% style="width:150px" %)База данных|(% style="width:1177px" %)((( 11 11 Для надежного хранения данных процессов и триггеров. ... ... @@ -15,16 +15,18 @@ 15 15 16 16 Для текущей реализации в качестве хранилище может выступать БД, поддерживающая: 17 17 18 -* Транзакции: транзакции. 19 -* Транзакции: savepoint. 19 +* Транзакции: 20 +** Транзакции. 21 +** Savepoint. 20 20 (если используются, можно обрабатывать каждый шаг отдельной транзакцией или весь процесс без savepoint изоляции ошибок между шагами). 21 -* Блокировка: updatelock. 22 -* Блокировка: updatelock skip locked. 23 +* [[Блокировки>>doc:Разработка.Базы данных.SQL.Механизмы.Транзакции и блокировки.WebHome]]: 24 +** updatelock. 25 +** updatelock skip locked. 23 23 (частично можно обойтись без него). 24 -* Блокировка:sharelock27 +** sharelock 25 25 (можно обойтись без него без сильного влияния) 26 -* Уровен ьизоляции: работает на read committed, то что нужно блокируется руками.27 -* Для некоторых кейсов желательно возможность выполнить upsert (insert on conflict).29 +* [[Уровни изоляции>>doc:Разработка.Базы данных.SQL.Механизмы.Транзакции и блокировки.Уровни изоляции | Isolation levels.WebHome]]: работает на read committed, то что нужно блокируется руками. 30 +* Для некоторых кейсов желательно возможность выполнить [[Upsert>>doc:Разработка.Базы данных.SQL.Сценарии и вопросы.Insert or update\. Upsert.WebHome]] (insert on conflict). 28 28 ))) 29 29 |(% style="width:150px" %)Брокер сообщений|(% style="width:1177px" %)((( 30 30 Используется для накопления и доставки TriggerEvent. ... ... @@ -35,8 +35,8 @@ 35 35 ))) 36 36 ))) 37 37 |(% style="width:132px" %)Особенности|(% style="width:1301px" %)((( 38 -|(% style="width:159px" %) Батчингпри выполнении.|(% style="width:1168px" %)(((39 -Возможность использовать и комбинировать разныетипы выполнениякак41 +|(% style="width:159px" %)Пакетные транзакции (батчинг).|(% style="width:1168px" %)((( 42 +Возможность использовать и комбинировать типы выполнения для разных типов процессов: 40 40 41 41 * (1 транзакция - 1 процесс), 42 42 * (1 транзакция - N процессов). ... ... @@ -60,6 +60,7 @@ 60 60 См. пример 2. 61 61 ))) 62 62 |(% style="width:159px" %)Перехват ошибок|(% style="width:1168px" %)Перехват и обработка ошибок, если процесс выкинул exception в движок. Реализацию простого retry с задержкой (создается триггер на следующую попытку). 66 +В случае пакетной транзакции движок не знает какой конкретно из процессов породил ошибку (если она не перехвачена вручную), то ошибка выставляется на все незавершенные процессы. 63 63 |(% style="width:159px" %)Параллельное выполнение|(% style="width:1168px" %)Допускается запуск нескольких раннеров (на разных нодах), работающих с одной таблицей процессов для распределения нагрузки между ними. 64 64 Допускается фильтрация типов процессов между нодами (чтобы нода выполняла только определенные типы процессов, в том числе по приоритету). 65 65 Доступно для раннеров процессов и триггеров. ... ... @@ -99,16 +99,7 @@ 99 99 ))) 100 100 |(% style="width:870px" %)[[image:Родительский дочерний процесс. Sequence.jpg]] 101 101 |(% style="width:870px" %)((( 102 -Возможен вариант №2, когда мы просто ставит timerTrigger на условно 1-5 минуту (насколько важна задержка) и перепроверяем условие завершения (по нагрузке на БД будет еще меньше). Из минус, что родительский процесс узнает о завершении дочерних процессов с задержкой (хотя в задержке можно использовать функцию от количества необработанных дочерних процессов, но тогда нужно считать количество). 103 - 104 -* Но тут будет join нагрузка на БД (если шаг проверки выполняется пакетно), иначе будет просто много одиночны запросов на чтение (условно раз в минуту). 105 -* Если дочерний процесс остановиться в ошибке, то родительский либо также продолжит крутиться в проверке, либо должен также пробросить ошибку в себя чтобы приостановиться. 106 -При это если родительский процесс остановиться при обнаружении хотя бы одной ошибки в дочернем процессе, то стартануть нужно будет и родительский (он сам не узнает), а в случае с сигналом останавливать родительский процесс не нужно. 107 -В случае с решением 1, со страхующим триггером это можно обойти через фильтрующий индекс если мы начинаем идти сразу с таблицы процессов (т.е. процессы с ошибкой сразу будут игнорироваться). 108 -* Но все равно, именно данный движек может позволить настроить 2 процесса таким образом, что 1 процесс будет исполняться (1 процесс - 1 транзакция) в параллельном режиме (пока создаются множественные дочерние процессы), 2 процесс будет исполняться в пакетном режиме (N процессов - 1 транзакция) чтобы проверять выполнение условия завершения дочерних процессов через запрос (один пакетный). 109 - 110 -плюсы: меньше пишущей нагрузки (т.к. триггер со счетчиком будет делать условно одну запись на счетчик триггер в 5-20 секунд), а тут будет одна запись в 1-5 минуту на обновление таймера. 111 -минусы: больше читающей нагрузки с join (раз 1-5 минуту нужно будет выполнить join незавершенных процессов с дочерними). У решения 1 тоже есть такая нагрузка, но на страхующем триггер (условно раз 10-30 минут) и у решения 1 процессы упавшие в ошибку не будут генерировать нагрузку (если использовать фильтрующий индекс). 106 + 112 112 ))) 113 113 ))) 114 114 |(% style="width:32px" %)2|(% style="width:171px" %)Transaction outbox stream process.|(% style="width:1066px" %)[[image:TransactionOutbox. Sequence.jpg]]
- TransactionOutbox. Sequence.graphml
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.cccc1808 - Размер
-
... ... @@ -1,1 +1,0 @@ 1 -33.6 KB - Содержимое
- TransactionOutbox. Sequence.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.cccc1808 - Размер
-
... ... @@ -1,1 +1,0 @@ 1 -247.1 KB - Содержимое
- Родительский дочерний процесс. Sequence.graphml
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.cccc1808 - Размер
-
... ... @@ -1,1 +1,0 @@ 1 -33.6 KB - Содержимое
-
... ... @@ -1,543 +1,0 @@ 1 -<?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 -<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> 3 - <!--Created by yEd 3.23.1--> 4 - <key attr.name="Description" attr.type="string" for="graph" id="d0"/> 5 - <key for="port" id="d1" yfiles.type="portgraphics"/> 6 - <key for="port" id="d2" yfiles.type="portgeometry"/> 7 - <key for="port" id="d3" yfiles.type="portuserdata"/> 8 - <key attr.name="url" attr.type="string" for="node" id="d4"/> 9 - <key attr.name="description" attr.type="string" for="node" id="d5"/> 10 - <key for="node" id="d6" yfiles.type="nodegraphics"/> 11 - <key for="graphml" id="d7" yfiles.type="resources"/> 12 - <key attr.name="url" attr.type="string" for="edge" id="d8"/> 13 - <key attr.name="description" attr.type="string" for="edge" id="d9"/> 14 - <key for="edge" id="d10" yfiles.type="edgegraphics"/> 15 - <graph edgedefault="directed" id="G"> 16 - <data key="d0"/> 17 - <node id="n0"> 18 - <data key="d5"/> 19 - <data key="d6"> 20 - <y:ShapeNode> 21 - <y:Geometry height="30.0" width="240.2240000000017" x="280.9759999999975" y="439.28000000000003"/> 22 - <y:Fill color="#FFCC00" transparent="false"/> 23 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 24 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="234.478515625" x="2.872742187500876" xml:space="preserve" y="5.6494140625">Гарантированное пробудление процесса<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 25 - <y:Shape type="ellipse"/> 26 - </y:ShapeNode> 27 - </data> 28 - </node> 29 - <node id="n1"> 30 - <data key="d5"/> 31 - <data key="d6"> 32 - <y:ShapeNode> 33 - <y:Geometry height="30.0" width="51.75999999999999" x="378.2160000000002" y="102.96000000000016"/> 34 - <y:Fill color="#FFCC00" transparent="false"/> 35 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 36 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="46.80859375" x="2.4757031249999955" xml:space="preserve" y="5.6494140625">Триггер<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 37 - <y:Shape type="roundrectangle"/> 38 - </y:ShapeNode> 39 - </data> 40 - </node> 41 - <node id="n2"> 42 - <data key="d5"/> 43 - <data key="d6"> 44 - <y:ShapeNode> 45 - <y:Geometry height="30.0" width="66.47999999999999" x="31.40000000000012" y="102.96000000000018"/> 46 - <y:Fill color="#FFCC00" transparent="false"/> 47 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 48 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="63.501953125" x="1.4890234374999807" xml:space="preserve" y="5.6494140625">Отправить<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 49 - <y:Shape type="roundrectangle"/> 50 - </y:ShapeNode> 51 - </data> 52 - </node> 53 - <node id="n3"> 54 - <data key="d5"/> 55 - <data key="d6"> 56 - <y:ShapeNode> 57 - <y:Geometry height="49.20000000000002" width="279.6" x="-75.15999999999988" y="265.2319999999994"/> 58 - <y:Fill color="#FFCC00" transparent="false"/> 59 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 60 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="33.40234375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="272.072265625" x="3.7638671875000114" xml:space="preserve" y="7.898828124999994">Отправка сообщения через TransactionalOutbox 61 -(транзакционная запись в БД)<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 62 - <y:Shape type="ellipse"/> 63 - </y:ShapeNode> 64 - </data> 65 - </node> 66 - <node id="n4"> 67 - <data key="d5"/> 68 - <data key="d6"> 69 - <y:ShapeNode> 70 - <y:Geometry height="30.0" width="146.47999999999996" x="-8.599999999999838" y="355.0480000000008"/> 71 - <y:Fill color="#FFCC00" transparent="false"/> 72 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 73 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="125.0078125" x="10.73609374999998" xml:space="preserve" y="5.6494140625">Отправка triggerEvent<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 74 - <y:Shape type="ellipse"/> 75 - </y:ShapeNode> 76 - </data> 77 - </node> 78 - <node id="n5"> 79 - <data key="d5"/> 80 - <data key="d6"> 81 - <y:ShapeNode> 82 - <y:Geometry height="30.0" width="30.0" x="386.0879999999984" y="351.33600000000155"/> 83 - <y:Fill color="#FFFFFF" transparent="false"/> 84 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 85 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="13.0" y="13.0"> 86 - <y:LabelModel> 87 - <y:SmartNodeLabelModel distance="4.0"/> 88 - </y:LabelModel> 89 - <y:ModelParameter> 90 - <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> 91 - </y:ModelParameter> 92 - </y:NodeLabel> 93 - <y:Shape type="ellipse"/> 94 - </y:ShapeNode> 95 - </data> 96 - </node> 97 - <node id="n6"> 98 - <data key="d5"/> 99 - <data key="d6"> 100 - <y:ShapeNode> 101 - <y:Geometry height="30.0" width="122.80000000000007" x="710.2040000000015" y="102.96000000000018"/> 102 - <y:Fill color="#FFCC00" transparent="false"/> 103 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 104 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="88.041015625" x="17.37949218750009" xml:space="preserve" y="5.6494140625">Outbox process<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 105 - <y:Shape type="roundrectangle"/> 106 - </y:ShapeNode> 107 - </data> 108 - </node> 109 - <node id="n7"> 110 - <data key="d5"/> 111 - <data key="d6"> 112 - <y:ShapeNode> 113 - <y:Geometry height="30.0" width="66.47999999999999" x="31.40000000000012" y="709.7220000000023"/> 114 - <y:Fill color="#FFCC00" transparent="false"/> 115 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 116 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="63.501953125" x="1.489023437500009" xml:space="preserve" y="5.6494140625">Отправить<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 117 - <y:Shape type="roundrectangle"/> 118 - </y:ShapeNode> 119 - </data> 120 - </node> 121 - <node id="n8"> 122 - <data key="d5"/> 123 - <data key="d6"> 124 - <y:ShapeNode> 125 - <y:Geometry height="30.0" width="30.0" x="756.6040000000016" y="439.28000000000003"/> 126 - <y:Fill color="#FFFFFF" transparent="false"/> 127 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 128 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="13.0" y="13.0"> 129 - <y:LabelModel> 130 - <y:SmartNodeLabelModel distance="4.0"/> 131 - </y:LabelModel> 132 - <y:ModelParameter> 133 - <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> 134 - </y:ModelParameter> 135 - </y:NodeLabel> 136 - <y:Shape type="ellipse"/> 137 - </y:ShapeNode> 138 - </data> 139 - </node> 140 - <node id="n9"> 141 - <data key="d5"/> 142 - <data key="d6"> 143 - <y:ShapeNode> 144 - <y:Geometry height="30.0" width="210.80000000000007" x="666.2040000000015" y="617.216000000002"/> 145 - <y:Fill color="#FFCC00" transparent="false"/> 146 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 147 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="209.65234375" x="0.573828125000091" xml:space="preserve" y="5.6494140625">Обработка скопившихся сообщений.<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 148 - <y:Shape type="ellipse"/> 149 - </y:ShapeNode> 150 - </data> 151 - </node> 152 - <node id="n10"> 153 - <data key="d5"/> 154 - <data key="d6"> 155 - <y:ShapeNode> 156 - <y:Geometry height="30.0" width="132.80000000000098" x="967.4200000000045" y="99.2480000000009"/> 157 - <y:Fill color="#FFCC00" transparent="false"/> 158 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 159 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="120.09765625" x="6.351171875000546" xml:space="preserve" y="5.6494140625">Страхующий триггер<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 160 - <y:Shape type="roundrectangle"/> 161 - </y:ShapeNode> 162 - </data> 163 - </node> 164 - <node id="n11"> 165 - <data key="d5"/> 166 - <data key="d6"> 167 - <y:ShapeNode> 168 - <y:Geometry height="30.0" width="132.80000000000098" x="967.4200000000045" y="709.7220000000023"/> 169 - <y:Fill color="#FFCC00" transparent="false"/> 170 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 171 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="120.09765625" x="6.351171875000432" xml:space="preserve" y="5.6494140625">Страхующий триггер<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 172 - <y:Shape type="roundrectangle"/> 173 - </y:ShapeNode> 174 - </data> 175 - </node> 176 - <node id="n12"> 177 - <data key="d5"/> 178 - <data key="d6"> 179 - <y:ShapeNode> 180 - <y:Geometry height="90.95999999999992" width="246.68" x="910.4800000000049" y="526.2560000000021"/> 181 - <y:Fill color="#FFCC00" transparent="false"/> 182 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 183 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="48.103515625" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="212.65234375" x="17.013828125000032" xml:space="preserve" y="21.428242187500018">Пробуждает родительский процесс. 184 -Но это произойдет позже, 185 -чем это сделал бы основной триггер.<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 186 - <y:Shape type="ellipse"/> 187 - </y:ShapeNode> 188 - </data> 189 - </node> 190 - <node id="n13"> 191 - <data key="d5"/> 192 - <data key="d6"> 193 - <y:ShapeNode> 194 - <y:Geometry height="145.68000000000006" width="374.863999999998" x="846.388000000006" y="329.81372800000196"/> 195 - <y:Fill color="#FFCC00" transparent="false"/> 196 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 197 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="48.103515625" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="410.921875" x="-18.028937500001007" xml:space="preserve" y="48.78824218750003">Обнаружил что есть необработанные сообщения, 198 -но transactionanOutbox процесс спит и давно не брался в обработку. 199 -Считает, что были утеряны triggerEvent, поэтому необходимо пробудить<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 200 - <y:Shape type="diamond"/> 201 - </y:ShapeNode> 202 - </data> 203 - </node> 204 - <node id="n14"> 205 - <data key="d5"/> 206 - <data key="d6"> 207 - <y:GenericNode configuration="BevelNode"> 208 - <y:Geometry height="30.0" width="374.863999999998" x="1053.820000000005" y="147.99000000000058"/> 209 - <y:Fill color="#FF9900" transparent="false"/> 210 - <y:BorderStyle hasColor="false" type="line" width="1.0"/> 211 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="33.40234375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="364.603515625" x="5.130242187498993" xml:space="preserve" y="-1.701171875">Запускается периодически и использует более тяжелый запрос. 212 -Проверяет всю таблицу или индекс.<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 213 - </y:GenericNode> 214 - </data> 215 - </node> 216 - <node id="n15"> 217 - <data key="d5"/> 218 - <data key="d6"> 219 - <y:ShapeNode> 220 - <y:Geometry height="30.0" width="30.0" x="756.6040000000016" y="556.7360000000022"/> 221 - <y:Fill color="#FFFFFF" transparent="false"/> 222 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 223 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="13.0" y="13.0"> 224 - <y:LabelModel> 225 - <y:SmartNodeLabelModel distance="4.0"/> 226 - </y:LabelModel> 227 - <y:ModelParameter> 228 - <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/> 229 - </y:ModelParameter> 230 - </y:NodeLabel> 231 - <y:Shape type="ellipse"/> 232 - </y:ShapeNode> 233 - </data> 234 - </node> 235 - <node id="n16"> 236 - <data key="d5"/> 237 - <data key="d6"> 238 - <y:ShapeNode> 239 - <y:Geometry height="30.0" width="122.80000000000007" x="710.2040000000015" y="744.9220000000023"/> 240 - <y:Fill color="#FFCC00" transparent="false"/> 241 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 242 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="88.041015625" x="17.37949218750009" xml:space="preserve" y="5.6494140625">Outbox process<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 243 - <y:Shape type="roundrectangle"/> 244 - </y:ShapeNode> 245 - </data> 246 - </node> 247 - <node id="n17"> 248 - <data key="d5"/> 249 - <data key="d6"> 250 - <y:ShapeNode> 251 - <y:Geometry height="30.0" width="51.75999999999999" x="375.2079999999984" y="709.7220000000023"/> 252 - <y:Fill color="#FFCC00" transparent="false"/> 253 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 254 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="46.80859375" x="2.4757031249999955" xml:space="preserve" y="5.6494140625">Триггер<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 255 - <y:Shape type="roundrectangle"/> 256 - </y:ShapeNode> 257 - </data> 258 - </node> 259 - <node id="n18"> 260 - <data key="d5"/> 261 - <data key="d6"> 262 - <y:ShapeNode> 263 - <y:Geometry height="44.07999999999993" width="463.28" x="169.4479999999984" y="523.489000000002"/> 264 - <y:Fill color="#FFCC00" transparent="false"/> 265 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 266 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="33.40234375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="426.173828125" x="18.553085937499986" xml:space="preserve" y="5.338828124999964">Выставляет небольшую задержку, чтобы если поступит новое сообщение, 267 -то воркер и так скорее всего выполняется и смысла запроса нет.<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 268 - <y:Shape type="ellipse"/> 269 - </y:ShapeNode> 270 - </data> 271 - </node> 272 - <node id="n19"> 273 - <data key="d5"/> 274 - <data key="d6"> 275 - <y:ShapeNode> 276 - <y:Geometry height="30.0" width="210.80000000000007" x="666.2040000000017" y="677.216000000002"/> 277 - <y:Fill color="#FFCC00" transparent="false"/> 278 - <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 279 - <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="121.123046875" x="44.83847656249998" xml:space="preserve" y="5.6494140625">Засыпание процесса<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 280 - <y:Shape type="ellipse"/> 281 - </y:ShapeNode> 282 - </data> 283 - </node> 284 - <edge id="e0" source="n4" target="n5"> 285 - <data key="d9"/> 286 - <data key="d10"> 287 - <y:PolyLineEdge> 288 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 289 - <y:LineStyle color="#000000" type="line" width="1.0"/> 290 - <y:Arrows source="none" target="standard"/> 291 - <y:BendStyle smoothed="false"/> 292 - </y:PolyLineEdge> 293 - </data> 294 - </edge> 295 - <edge id="e1" source="n2" target="n3"> 296 - <data key="d9"/> 297 - <data key="d10"> 298 - <y:PolyLineEdge> 299 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 300 - <y:LineStyle color="#000000" type="line" width="1.0"/> 301 - <y:Arrows source="none" target="standard"/> 302 - <y:BendStyle smoothed="false"/> 303 - </y:PolyLineEdge> 304 - </data> 305 - </edge> 306 - <edge id="e2" source="n3" target="n4"> 307 - <data key="d9"/> 308 - <data key="d10"> 309 - <y:PolyLineEdge> 310 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 311 - <y:LineStyle color="#000000" type="line" width="1.0"/> 312 - <y:Arrows source="none" target="standard"/> 313 - <y:BendStyle smoothed="false"/> 314 - </y:PolyLineEdge> 315 - </data> 316 - </edge> 317 - <edge id="e3" source="n4" target="n7"> 318 - <data key="d9"/> 319 - <data key="d10"> 320 - <y:PolyLineEdge> 321 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 322 - <y:LineStyle color="#000000" type="line" width="1.0"/> 323 - <y:Arrows source="none" target="standard"/> 324 - <y:BendStyle smoothed="false"/> 325 - </y:PolyLineEdge> 326 - </data> 327 - </edge> 328 - <edge id="e4" source="n1" target="n5"> 329 - <data key="d9"/> 330 - <data key="d10"> 331 - <y:PolyLineEdge> 332 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 333 - <y:LineStyle color="#000000" type="dashed" width="1.0"/> 334 - <y:Arrows source="none" target="standard"/> 335 - <y:BendStyle smoothed="false"/> 336 - </y:PolyLineEdge> 337 - </data> 338 - </edge> 339 - <edge id="e5" source="n0" target="n8"> 340 - <data key="d9"/> 341 - <data key="d10"> 342 - <y:PolyLineEdge> 343 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 344 - <y:LineStyle color="#000000" type="line" width="1.0"/> 345 - <y:Arrows source="none" target="standard"/> 346 - <y:BendStyle smoothed="false"/> 347 - </y:PolyLineEdge> 348 - </data> 349 - </edge> 350 - <edge id="e6" source="n6" target="n8"> 351 - <data key="d9"/> 352 - <data key="d10"> 353 - <y:PolyLineEdge> 354 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 355 - <y:LineStyle color="#000000" type="dashed" width="1.0"/> 356 - <y:Arrows source="none" target="standard"/> 357 - <y:BendStyle smoothed="false"/> 358 - </y:PolyLineEdge> 359 - </data> 360 - </edge> 361 - <edge id="e7" source="n13" target="n12"> 362 - <data key="d9"/> 363 - <data key="d10"> 364 - <y:PolyLineEdge> 365 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"> 366 - <y:Point x="1238.3762880000015" y="397.053728000002"/> 367 - <y:Point x="1238.3762880000015" y="571.7360000000022"/> 368 - </y:Path> 369 - <y:LineStyle color="#000000" type="line" width="1.0"/> 370 - <y:Arrows source="none" target="standard"/> 371 - <y:BendStyle smoothed="false"/> 372 - </y:PolyLineEdge> 373 - </data> 374 - </edge> 375 - <edge id="e8" source="n12" target="n11"> 376 - <data key="d9"/> 377 - <data key="d10"> 378 - <y:PolyLineEdge> 379 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 380 - <y:LineStyle color="#000000" type="dashed" width="1.0"/> 381 - <y:Arrows source="none" target="standard"/> 382 - <y:BendStyle smoothed="false"/> 383 - </y:PolyLineEdge> 384 - </data> 385 - </edge> 386 - <edge id="e9" source="n13" target="n12"> 387 - <data key="d9"/> 388 - <data key="d10"> 389 - <y:PolyLineEdge> 390 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 391 - <y:LineStyle color="#000000" type="dashed" width="1.0"/> 392 - <y:Arrows source="none" target="standard"/> 393 - <y:BendStyle smoothed="false"/> 394 - </y:PolyLineEdge> 395 - </data> 396 - </edge> 397 - <edge id="e10" source="n10" target="n13"> 398 - <data key="d9"/> 399 - <data key="d10"> 400 - <y:PolyLineEdge> 401 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 402 - <y:LineStyle color="#000000" type="line" width="1.0"/> 403 - <y:Arrows source="none" target="standard"/> 404 - <y:BendStyle smoothed="false"/> 405 - </y:PolyLineEdge> 406 - </data> 407 - </edge> 408 - <edge id="e11" source="n12" target="n15"> 409 - <data key="d9"/> 410 - <data key="d10"> 411 - <y:PolyLineEdge> 412 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 413 - <y:LineStyle color="#000000" type="line" width="1.0"/> 414 - <y:Arrows source="none" target="standard"/> 415 - <y:BendStyle smoothed="false"/> 416 - </y:PolyLineEdge> 417 - </data> 418 - </edge> 419 - <edge id="e12" source="n8" target="n15"> 420 - <data key="d9"/> 421 - <data key="d10"> 422 - <y:PolyLineEdge> 423 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 424 - <y:LineStyle color="#000000" type="line" width="1.0"/> 425 - <y:Arrows source="none" target="standard"/> 426 - <y:BendStyle smoothed="false"/> 427 - </y:PolyLineEdge> 428 - </data> 429 - </edge> 430 - <edge id="e13" source="n19" target="n16"> 431 - <data key="d9"/> 432 - <data key="d10"> 433 - <y:PolyLineEdge> 434 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 435 - <y:LineStyle color="#000000" type="dashed" width="1.0"/> 436 - <y:Arrows source="none" target="standard"/> 437 - <y:BendStyle smoothed="false"/> 438 - </y:PolyLineEdge> 439 - </data> 440 - </edge> 441 - <edge id="e14" source="n15" target="n9"> 442 - <data key="d9"/> 443 - <data key="d10"> 444 - <y:PolyLineEdge> 445 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 446 - <y:LineStyle color="#000000" type="line" width="1.0"/> 447 - <y:Arrows source="none" target="standard"/> 448 - <y:BendStyle smoothed="false"/> 449 - </y:PolyLineEdge> 450 - </data> 451 - </edge> 452 - <edge id="e15" source="n12" target="n13"> 453 - <data key="d9"/> 454 - <data key="d10"> 455 - <y:PolyLineEdge> 456 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"> 457 - <y:Point x="806.244000000001" y="545.1420000000005"/> 458 - <y:Point x="806.244000000001" y="402.653728000002"/> 459 - </y:Path> 460 - <y:LineStyle color="#000000" type="line" width="1.0"/> 461 - <y:Arrows source="none" target="standard"/> 462 - <y:BendStyle smoothed="false"/> 463 - </y:PolyLineEdge> 464 - </data> 465 - </edge> 466 - <edge id="e16" source="n18" target="n17"> 467 - <data key="d9"/> 468 - <data key="d10"> 469 - <y:PolyLineEdge> 470 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 471 - <y:LineStyle color="#000000" type="dashed" width="1.0"/> 472 - <y:Arrows source="none" target="standard"/> 473 - <y:BendStyle smoothed="false"/> 474 - </y:PolyLineEdge> 475 - </data> 476 - </edge> 477 - <edge id="e17" source="n5" target="n0"> 478 - <data key="d9"/> 479 - <data key="d10"> 480 - <y:PolyLineEdge> 481 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 482 - <y:LineStyle color="#000000" type="line" width="1.0"/> 483 - <y:Arrows source="none" target="standard"/> 484 - <y:BendStyle smoothed="false"/> 485 - </y:PolyLineEdge> 486 - </data> 487 - </edge> 488 - <edge id="e18" source="n18" target="n5"> 489 - <data key="d9"/> 490 - <data key="d10"> 491 - <y:PolyLineEdge> 492 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"> 493 - <y:Point x="142.1920000000003" y="545.529000000002"/> 494 - <y:Point x="142.1920000000003" y="391.66200000000015"/> 495 - </y:Path> 496 - <y:LineStyle color="#000000" type="line" width="1.0"/> 497 - <y:Arrows source="none" target="standard"/> 498 - <y:BendStyle smoothed="false"/> 499 - </y:PolyLineEdge> 500 - </data> 501 - </edge> 502 - <edge id="e19" source="n0" target="n18"> 503 - <data key="d9"/> 504 - <data key="d10"> 505 - <y:PolyLineEdge> 506 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 507 - <y:LineStyle color="#000000" type="line" width="1.0"/> 508 - <y:Arrows source="none" target="standard"/> 509 - <y:BendStyle smoothed="false"/> 510 - </y:PolyLineEdge> 511 - </data> 512 - </edge> 513 - <edge id="e20" source="n9" target="n19"> 514 - <data key="d9"/> 515 - <data key="d10"> 516 - <y:PolyLineEdge> 517 - <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 518 - <y:LineStyle color="#000000" type="line" width="1.0"/> 519 - <y:Arrows source="none" target="standard"/> 520 - <y:BendStyle smoothed="false"/> 521 - </y:PolyLineEdge> 522 - </data> 523 - </edge> 524 - <edge id="e21" source="n19" target="n8"> 525 - <data key="d9"/> 526 - <data key="d10"> 527 - <y:PolyLineEdge> 528 - <y:Path sx="-104.15249999999969" sy="0.0" tx="0.0" ty="0.0"> 529 - <y:Point x="646.651500000002" y="692.216000000002"/> 530 - <y:Point x="646.651500000002" y="470.7595000000003"/> 531 - </y:Path> 532 - <y:LineStyle color="#000000" type="line" width="1.0"/> 533 - <y:Arrows source="none" target="standard"/> 534 - <y:BendStyle smoothed="false"/> 535 - </y:PolyLineEdge> 536 - </data> 537 - </edge> 538 - </graph> 539 - <data key="d7"> 540 - <y:Resources/> 541 - </data> 542 -</graphml> 543 -