Java 以编程方式生成BPEL文件?
有没有一种在Java中以编程方式生成BPEL的方法 我尝试使用BPEL Eclipse Designer API编写以下代码:Java 以编程方式生成BPEL文件?,java,eclipse,eclipse-plugin,bpel,Java,Eclipse,Eclipse Plugin,Bpel,有没有一种在Java中以编程方式生成BPEL的方法 我尝试使用BPEL Eclipse Designer API编写以下代码: Process process = null; try { Resource.Factory.Registry reg =Resource.Factory.Registry.INSTANCE; Map<String, Object> m = reg.getExtensionToFactoryMap();
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();
}
}
Process进程=null;
试一试{
Resource.Factory.Registry reg=Resource.Factory.Registry.INSTANCE;
Map m=reg.getExtensionFactoryMap();
m、 put(“bpel”,新的BPELResourceFactoryImpl());//它与XMLResourceFactoryImpl()一起工作
//创建资源
URI=URI.createFileURI(“myBPEL2.bpel”);
ResourceSet rSet=new ResourceSetImpl();
资源bpelResource=rSet.createResource(uri);
//创建/填充流程
process=BPELFactory.eINSTANCE.createProcess();
process.setName(“myBPEL”);
Sequence mySeq=BPELFactory.eINSTANCE.createSequence();
mySeq.setName(“主序列”);
process.setActivity(mySeq);
//节约资源
bpelResource.getContents().add(流程);
Map Map=newhashmap();
put(“bpel”http://docs.oasis-open.org/wsbpel/2.0/process/executable");
地图放置(“tns”http://matrix.bpelprocess");
map.put(“xsd”http://www.w3.org/2001/XMLSchema");
bpelResource.save(映射);
}
捕获(例外e){
e、 printStackTrace();
}
}
但我收到了一个错误:
INamespaceMap无法附加到eObject
我读了西蒙的作品:
我知道在eclipse之外使用BPEL模型可能是可取的,但我们从未打算这样做。因此,这是不受支持的
有没有其他API可以提供帮助?Eclipse BPEL API基于EMF模型。因此,您可以在此基础上使用JET或Xpand生成自己的工件。这样就不需要在Eclipse内部运行 尽管您可能无法在Eclipse之外使用BPEL,但您是否考虑过将应用程序的各个部分移动到它里面
中列出了BPEL XML模式。因此,您还可以在此基础上进行工作,并在必要时与现有的BPEL应用程序集成。您可能想尝试一下。它帮助您将正式的BPEL XSD转换为Java类。您可以使用这些类来构造BPEL文档并将其输出。我与BPELUnit[1]有完全相同的问题,因此我在BPELUnit中启动了一个模块,该模块具有生成和读取BPEL模型[2]所需的第一件事,尽管它还远未完成。支持的只有BPEL 2.0(后面将是1.1),当前也不支持处理程序(但将添加)。它正在积极开发中,因为BPELUnit的代码覆盖率组件将基于它,所以它将随着时间的推移完成BPEL功能。如果您需要提前弥补差距,我们很高兴邀请您做出贡献 您可以从GitHub或grap中查看Maven工件 到目前为止,还没有文档,但是您可以看看读取和写入进程的JUnit测试 如果这不适合,我想与您分享一些经验:
[2] 在添加必要的类以处理相关性之后,使用解决了此问题。@Daniel所说的BPELUnit似乎是另一种选择。以防任何人在仍然运行在eclipse环境中的情况下希望解决上述问题 如Luca Pino所述,可通过添加以下内容解决该问题:
AdapterRegistry.INSTANCE.registerAdapterFactory( BPELPackage.eINSTANCE, BasicBPELAdapterFactory.INSTANCE );
在资源创建行之前,即
Resource bpelResource = rSet.createResource(uri);
注意:在我的另一个答案中,可以找到另一个解决相同问题的解决方案,也说明了如何解决依赖关系以使此代码正常工作。我问的是如何在Java代码中动态创建.bpel文件,我不需要创建图形模型。。只是一个基于inputs@user1925930我想这就是我说的。您可以通过EMF资源API将EMF模型保存为带有用户定义文件扩展名的xml。我编辑了我的问题,以包含我尝试使用org.eclipse.bpel.model和org.eclipse.EMF.ecore.resource的代码,但我收到了上面提到的错误。您知道如何解决吗?与您看到的错误大致相同。你已经遇到了吗?也许你应该坚持使用eclipse论坛来解决像你这样的问题。在stackoverflow上,其他人能够帮助您的概率比这里要高。您能提供一个关于如何解决问题的分步指南吗?据我所知,这些步骤取决于您想要生成的流程,下载API,并且您必须使用BpelProcess对象并将您想要的活动添加到其中(接收、分配、回复…)然后使用BpelSerializer序列化流程并生成.bpel文件,希望这对您有所帮助。非常感谢您的回复。如果您能发布一些示例代码,那就太好了?