1

我正在尝试使用 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 谢谢 :-)

4

2 回答 2

0

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

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

被定义为将“过程”元素作为输入。您需要确保您的输入模型确实包含这种类型的元素。

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

于 2012-07-23T07:27:11.127 回答
0

看来我发现了问题。

我下载并安装了 Eclipse Indigo Modeling 3.7.2,从更新站点添加了 Acceleo 3.3 插件,BPEL 插件版本 1.0 和 Acceleo 转换立即工作,没有什么特别的事情要做,我只是不再收到错误.

我认为问题在于,正如我已经在http://www.eclipse.org/forums/index.php/m/895663/#msg_895663 在 Eclipse Juno 和 BPEL 插件中做一些关于 BPEL 的教程时所经历的那样。

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

于 2012-07-26T12:44:38.053 回答