Acceleo首先将BPEL文件转换为Java类

时间:2012-07-19 15:30:02

标签: transformation bpel acceleo

我正在尝试使用Acceleo从BPEL转换到Java。 我做了2到3个教程,所有都参与了UML输入模型的使用,虽然我认为我理解我应该如何处理bpel模型及其bpel.ecore元模型。

尽管如此,我在运行一个非常简单的转换时遇到了问题,该转换应该只生成一个名为BPEL流程文件的java文件。

这是我的Acceleo generate.mtl文件:

[comment encoding = UTF-8 /]
[module generate('http:///org/eclipse/bpel/model/bpel.ecore')]

[template public generateElement(aProcess : Process)]
[comment @main /]
[file (aProcess.name, false, 'UTF-8')]
[/file]
[/template]

这里是输入.bpel文件(只是其中的一部分):

<!-- BPEL_sayHelloProcess BPEL Process [Generated by the Eclipse BPEL Designer] -->
<!-- Date: Wed Jul 18 11:00:50 CEST 2012 -->
<bpel:process name="BPEL_sayHelloProcess"
         targetNamespace="http://bpeltojava.uni"
         suppressJoinFailure="yes"
....
....
</bpel:process>

这是我得到的错误:

  

生成无法生成任何文件,因为没有模型   至少匹配一个第一个参数类型的元素   你的主要模板。问题可能是由问题引起的   您的元模型的注册,请参阅名为的方法   您的生成器的Java启动程序中的“registerPackages”。它可能   也来自于用作模板的模板中缺少[comment @ main /]   这一代的切入点。

我正在使用Eclipse Modeling Juno 4.2和Acceleo 3.3.0 谢谢: - )

2 个答案:

答案 0 :(得分:0)

当您在模型没有任何实例的目标类型上定义“主”模板时,通常会出现此错误。在此示例中,您的主模板:

[template public generateElement(aProcess : Process)]
[comment @main /]

定义为将“Process”元素作为输入。您需要确保输入模型确实包含此类型的元素。

还请确保正确注册您的软件包和资源工厂(可选,可能没有任何BPEL文件)。这是在主模块旁边生成的Java类中完成的:查看“registerPackage”和“registerFactories”的示例实现。您的BPEL注册应该与我们提供的样本接近。

答案 1 :(得分:0)

我似乎发现了问题。

我下载并安装了Eclipse Indigo Modeling 3.7.2,从更新站点添加了Acceleo 3.3插件,BPEL插件版本1.0和Acceleo转换工作正常,没有特别的事情可做,我只是不喜欢&#39; t再次出错。

我认为这个问题依赖于我在这里http://www.eclipse.org/forums/index.php/m/895663/#msg_895663所做的,同时在Eclipse Juno和BPEL插件中做了一些关于BPEL的教程。

希望这会帮助其他人遇到同样的麻烦