以编程方式生成BPEL文件?
有没有一种方法在Java中以编程方式生成BPEL?以编程方式生成BPEL文件?
我尝试使用BPEL的Eclipse设计的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
...
我西蒙读this message:
I understand that using the BPEL model outside of eclipse might be desirable, but it was never intended by us. Thus, this isn't supported
有没有其他API可以帮助?
这已被使用unify framework API加入必需的类来处理相关后得到解决。 @Daniel表示的BPELUnit似乎是另一种选择。
您能否为您如何解决问题提供一步一步的指导? – 2016-06-07 06:40:20
据我所知,这些步骤取决于您想要生成的过程,下载API,并且必须使用BpelProcess对象并添加所需的活动(Receive,Assign,Reply ....),然后使用BpelSerializer序列化进程并生成.bpel文件,希望这有助于。 – faridasabry 2016-06-08 08:26:58
非常感谢您的回复。如果您可以请张贴一些示例代码,这将是非常好的吗? – 2016-06-16 07:10:08
Eclipse BPEL API基于EMF模型。因此,您可以使用JET或Xpand基于此生成自己的工件。这样就不需要在Eclipse中运行。
虽然您可能无法在Eclipse之外使用BPEL,但您是否考虑过在其中部署应用程序?
BPEL XML Schemas在appendig of the spec中列出。因此,您也可以将您的工作建立在此基础之上,并在必要时与现有BPEL应用程序集成。
我在问Java动态创建.bpel文件的问题,我不需要创建一个图形模型..只是一个基于输入的动态工作流程 – faridasabry 2013-03-13 04:46:53
@ user1925930我认为这就是我所说的。您可以通过EMF资源API将EMF模型保存为带有用户定义的文件扩展名的xml。 – SpaceTrucker 2013-03-13 07:17:23
我编辑我的问题,包括我正在尝试与org.eclipse.bpel.model和org.eclipse.emf.ecore.resource的代码,但我收到上面提到的错误..你有一个想法如何解决? – faridasabry 2013-03-13 08:22:06
我和BPELUnit [1]有完全相同的问题,所以我在BPELUnit中启动了一个模块,它具有生成和读取BPEL模型[2]所需的第一件事,尽管它远非完整。仅支持BPEL 2.0(1.1将在后面介绍),处理程序目前也不受支持(但将被添加)。它处于积极的发展阶段,因为BPELUnit的代码覆盖组件将基于它,因此它将随着时间的推移完成BPEL功能。如果您需要尽早缩小差距,您将受到高兴的邀请。
您可以从GitHub中检查出它,或者抓取Maven工件。
截至目前没有文档,但您可以看看读取和写入过程的JUnit测试。
如果不适合,我想与大家分享一些经验:
不要使用JAXB:您需要读取和写入未保留与JAXB XML命名空间。这就是我选择XMLBeans的原因。 DOM将是我能想到的另一种选择。
XML Schema中的继承不是开发者友好的。这就是为什么在XMLBeans生成的类中有自己的接口结构和包装。
丹尼尔
[1] http://www.bpelunit.net
[2] https://github.com/bpelunit/bpelunit/tree/master/net.bpelunit.model.bpel
http://www.eclipse.org/forums/index.php/m/1015906/与你所看到的差不多。你已经遇到过吗?也许你应该坚持在日食论坛上寻找像你这样的问题。在其他人能够帮助你的概率比在这里stackoverflow。 – SpaceTrucker 2013-03-13 08:41:36