我正在尝试使用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 谢谢: - )
答案 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的教程。
希望这会帮助其他人遇到同样的麻烦