6

現在、BPMNを拡張する方法を調査しています。タスクよりもプロパティが少なく、非BPMNプロパティと新しいタイプのプールを含む新しいタスクタイプを作成したいと思います。

これまで、拡張ポイントの使用と外部スキーマの使用という2つの方法について人々が言及しているのを見ました。残念ながら、インターネットでは、これらの方法を広く理解するための多くのリソースを見つけることができませんでした。

これらの方法から私が理解したこと:

  • 拡張ポイント: BPMNエンジンベンダー(Aktiviti、jBPMなど)によって提供されるいくつかの標準拡張ポイントがあります。たとえば、Activitiには、ユーザーが希望するプロパティで拡張できるカスタムサービスタスクがありますが、この新しく作成された拡張タスクをAktivitiワークフローエンジンにデプロイできる場合はリソースが見つかりませんでした。また、新しいBPMNを確認すると便利です。この拡張機能のスキーマ。

  • 外部スキーマの使用:外部スキーマで目的のプロパティを定義し、Semantic.xsdからこのスキーマを参照します。この場合、ワークフローエンジンも適応させる必要がありますが、前述の方法よりも柔軟性がありますか、それとも何かが足りないのでしょうか。

明確でない唯一のことは、このメソッドがタスク定義を直接拡張しないため、これらのプロパティを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または私に指摘できるリソースを拡張するための他の方法はありますか?

よろしくお願いします。

4

4 に答える 4

0

ブラジルの研究者によって開発されたこのツールがあります: http://code.google.com/p/bpmnx/

私が覚えている限り、拡張ポイントで動作します。

于 2013-02-25T10:20:58.937 に答える
0

具体的な BPMN 実装 (activiti、jbpm) について話しているのではなく、独自のプロセス エンジンについて話しているので、BPMN ルールに従って XML を拡張する必要があると思います。

そうは言っても、BPMN 2.0 仕様 (非常に長く、おそらく退屈だと思います) を参照するか、bpmn の本を参照してみてください。BPMN メソッド & スタイルブックには BPMN の実装に関する部分が含まれているので、参考になるかもしれません。

注: 多くのサポートがある BPMN のような標準がある場合、本当に拡張する必要がある場合に役立つことがあります。考慮されていない標準を拡張する価値はありますか? (できないと言っているわけではありませんが、それが何をもたらすかを考えるべきです。通常のものでできない場合)。

于 2013-03-06T17:19:11.493 に答える
-1

Activiti フォーラムおよび MDT Eclipse プラグインフォーラムで、このトピックに関する議論がいくつかあります。

残念ながら、いくつかの簡単なテストでは、新しい名前空間を実装できませんでした

xmlns:newns="http://www.mynewns.com/newns(例えば

<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 プラグインはカスタム名前空間を破棄し、要素を無視しているようです。理由はわかりません。まだ研究中。

于 2012-09-20T16:53:57.793 に答える
-1

Eclipse BPMN2 Modelerを見ることができます。

利用可能なチュートリアルがいくつかあります (ランタイムの拡張やカスタム タスクの作成など)。

于 2015-07-08T09:29:49.153 に答える