7

Javaでプログラム的にBPELを生成する方法はありますか?

BPEL Eclipse Designer API を使用して、次のコードを記述してみました。

 Process process = null; 
 try {



        Resource.Factory.Registry reg =Resource.Factory.Registry.INSTANCE;

        Map<String, Object> m = reg.getExtensionToFactoryMap();

        m.put("bpel", new BPELResourceFactoryImpl());//it works with XMLResourceFactoryImpl()



         //create resource

         URI uri =URI.createFileURI("myBPEL2.bpel");



         ResourceSet rSet = new ResourceSetImpl();

          Resource bpelResource = rSet.createResource(uri);



          //create/populate process

          process = BPELFactory.eINSTANCE.createProcess();

          process.setName("myBPEL");

          Sequence mySeq = BPELFactory.eINSTANCE.createSequence();

          mySeq.setName("mainSequence");

          process.setActivity(mySeq);



          //save resource

          bpelResource.getContents().add(process);

          Map<String,String> map= new HashMap<String, String>();
          map.put("bpel", "http://docs.oasis-open.org/wsbpel/2.0/process/executable");
          map.put("tns", "http://matrix.bpelprocess");
          map.put("xsd", "http://www.w3.org/2001/XMLSchema");
          bpelResource.save(map);

    }



    catch (Exception e) {

          e.printStackTrace();

    }


}

しかし、私はエラーを受け取りました:

INamespaceMap cannot be attached to an eObject...

私はサイモンからのこのメッセージを読みました:

Eclipse 以外で BPEL モデルを使用することが望ましいことは理解していますが、それは私たちが意図したものではありませんでした。したがって、これはサポートされていません

他に役立つ API はありますか?

4

5 に答える 5

3

JAXBを試してみてください。公式の BPEL XSD を Java クラスに変換するのに役立ちます。これらのクラスを使用して、BPEL ドキュメントを構築し、出力します。

于 2013-03-13T09:56:05.350 に答える
3

私は BPELUnit [1] でまったく同じ問題を抱えていたので、BPEL モデルの生成と読み取りに必要な最初のものを備えた BPELUnit のモジュールを開始しました [2] が、完全には程遠いです。サポートされているのは BPEL 2.0 のみであり (1.1 は後に続く)、ハンドラーも現在サポートされていません (ただし、追加される予定です)。BPELUnit のコード カバレッジ コンポーネントはこれに基づいており、時間の経過とともに BPEL 機能が完成するため、活発な開発が行われています。ギャップを早期に埋める必要がある場合は、喜んで貢献してください。

GitHub からチェックアウトするか、Maven アーティファクトをつかむことができます。

現時点ではドキュメントはありませんが、プロセスを読み書きする JUnit テストを見ることができます。

これが適切でない場合は、いくつかの経験をあなたと共有したいと思います:

  1. JAXB を使用しない: JAXB で保持されない XML 名前空間を読み書きする必要があります。それが、私が XMLBeans を選んだ理由です。DOM は、私が考えることができる他の代替手段です。

  2. XML スキーマでの継承は、実際には開発者にとって使いやすいものではありません。そのため、XMLBeans によって生成されたクラスに独自のインターフェイス構造とラッパーが存在します。

ダニエル

[1] http://www.bpelunit.net
[2] https://github.com/bpelunit/bpelunit/tree/master/net.bpelunit.model.bpel

于 2013-04-05T09:59:42.177 に答える
2

これは、相関を処理するために必要なクラスを追加した後、統合フレームワーク APIを使用して解決されました。@Daniel が述べた BPELUnit は、別の代替手段のようです。

于 2013-09-15T07:47:30.190 に答える
1

Eclipse BPEL API は EMF モデルに基づいています。したがって、それに基づいて JET または Xpand を使用して独自のアーティファクトを生成できます。このように、Eclipse 内で実行する必要はありません。

Eclipse の外部で BPEL を使用することはできないかもしれませんが、アプリケーションの一部を Eclipse 内に移動することを検討したことがありますか?

BPEL XML スキーマは、仕様の付録にリストされています。したがって、それに基づいて作業を行い、必要に応じて既存の BPEL アプリケーションと統合することもできます。

于 2013-03-12T07:43:49.197 に答える