Как расширить BPMN 2.0

В настоящее время я изучаю способы расширения BPMN. Я хочу создать новый тип задачи с меньшим количеством свойств, чем у задачи, а также с некоторыми свойствами, не относящимися к BPMN, и новым типом пула.

До сих пор я видел, что люди упоминали два способа: использование точек расширения и использование внешней схемы. К сожалению, в Интернете я не смог найти столько ресурсов, чтобы подробно разобраться в этих методах.

Что я понял из этих методов:

  • Точки расширения. Существует несколько стандартных точек расширения, предоставляемых поставщиками движка BPMN (Aktiviti, jBPM и т. д.). Например, в Activiti есть пользовательская задача службы, которую можно расширить с помощью желаемых пользователем свойств, но я не нашел никаких ресурсов, если эту недавно созданную задачу расширения можно развернуть в механизме рабочего процесса Aktiviti, а также было бы неплохо увидеть новую BPMN. схема для этого расширения.

  • Использование внешней схемы: определение желаемых свойств во внешней схеме и ссылка на эту схему из Semantic.xsd. В этом случае нам также нужно будет адаптировать наш Workflow Engine, но он более гибкий, чем метод, о котором я упоминал ранее, или я что-то упускаю?

Единственное, что неясно, этот метод не расширяет напрямую определение задачи, поэтому эти свойства могут использоваться каждым элементом в BPMN?

Пример внешней схемы:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
    xmlns="http://myproject.org//bpmn/extensions/NEWTask"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
    xmlns:exvar="http://myproject.org/externalDefs"
    targetNamespace="http://myproject.org//bpmn/extensions/NEWTask"
    > 
    <xsd:import namespace="http://www.omg.org/spec/BPMN/20100524/MODEL"             schemaLocation="BPMN20.xsd"/>
    <xsd:import schemaLocation="externalDefs.xsd" namespace="http://myproject.org/externalDefs" />
    <xsd:complexType name="tProperty1" abstract="false">
        <xsd:sequence>
            <xsd:any namespace="##any" processContents="lax" minOccurs="0" />
        </xsd:sequence>
    </xsd:complexType>
        <xsd:group id="tNEWTask" name="tNEWTask">
        <xsd:sequence>
            <xsd:element name="Property2" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="Property1" type="tProperty1" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="Property2" type="exvar:Varaible1" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:group>
    </xsd:schema>

Существуют ли какие-либо другие методы расширения BPMN или какие-либо ресурсы, на которые вы можете мне указать, чтобы я мог лучше понять эту тему?

Любая помощь будет оценена, спасибо заранее!


person user1364591    schedule 11.07.2012    source источник


Ответы (4)



Поскольку вы не говорите о какой-либо конкретной реализации BPMN (activiti, jbpm), а говорите о своем собственном механизме процессов, я предполагаю, что вы хотите расширить XML в соответствии с правилами BPMN.

Тем не менее, вы можете посмотреть спецификацию BPMN 2.0 (я думаю, что она очень длинная и, вероятно, скучная), или вы можете попробовать посмотреть какую-нибудь книгу по bpmn. книга по методам и стилям BPMN содержит часть о реализации BPMN, так что, возможно, это полезно для вас.

Примечание. Когда есть такой стандарт, как BPMN, который имеет широкую поддержку, иногда это полезно, если вам действительно нужно его расширить. Стоит ли расширять что-то стандартное, что не рассматривалось? (Не говорю, что вы не можете этого сделать, но вы должны подумать, что это вам дает, и если бы вы не могли сделать это с помощью обычных вещей).

person dgmora    schedule 06.03.2013

Вот обсуждение этой темы на форумах Activiti и на плагин MDT Eclipse форум.

К сожалению, после простого тестирования мне не удалось реализовать новое пространство имен.

(e.g. xmlns:newns="http://www.mynewns.com/newns in

<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:activiti="http://activiti.org/bpmn" 
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" 
xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" 
xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" 
typeLanguage="http://www.w3.org/2001/XMLSchema" 
xmlns:newns="http://www.mynewns.com/newns" 
expressionLanguage="http://www.w3.org/1999/XPath" 
targetNamespace="http://www.activiti.org/bpmn2.0">

и такой элемент, как <userTask newns:ownerID="owner1">).

Пользовательские элементы на моей диаграмме Activiti тоже не работают — плагин Eclipse, похоже, отбрасывает мое пользовательское пространство имен и игнорирует мои элементы. Не знаю почему; все еще исследую.

person balinjdl    schedule 20.09.2012

Вы можете взглянуть на Eclipse BPMN2 Modeler.

Доступны некоторые руководства (например, расширение среда выполнения и создание пользовательская задача).

person Jonas Anseeuw    schedule 08.07.2015