使用 M2Doc 核心生成 API 和 SiriusServices 出现问题
Posted
技术标签:
【中文标题】使用 M2Doc 核心生成 API 和 SiriusServices 出现问题【英文标题】:Trouble using M2Doc core generation API and SiriusServices 【发布时间】:2021-02-12 06:30:54 【问题描述】:我正在尝试使用核心生成 API 生成文档(如此处所述 https://www.m2doc.org/ref-doc/3.1.0/index.html#core-generation-api)。但我有以下错误: 找不到“isRepresentationDescriptionName()”服务。 (当我不以编程方式使用 genconf 时,它工作正常)。
我尝试使用 SiriusServiceConfigurator 添加 SiriusServices,但未能解决此问题。
或者可能是因为我没有添加引用 .aird 文件的 SiriusSession 选项?
我已经查看了如何在 newEnvironmentWithDefaultServices 中添加新服务,但它似乎不适用于 SiriusServices。
final IQueryEnvironment queryEnvironment = org.eclipse.acceleo.query.runtime.Query
.newEnvironmentWithDefaultServices(null);
final Monitor monitor = new BasicMonitor.Printing(System.out);
final ResourceSet resourceSetForModels = session.getTransactionalEditingDomain().getResourceSet();
resourceSetForModels.createResource(modelUri);
try (DocumentTemplate template = M2DocUtils.parse(resourceSetForModels.getURIConverter(), templateURI,
queryEnvironment, classProvider, monitor))
final Map<String, Object> variable = new HashMap<>();
M2DocUtils.generate(template, queryEnvironment, variable, resourceSetForModels, outputURI, monitor);
...
谢谢
【问题讨论】:
【参考方案1】:Sirius 相关服务需要 Sirius Session。使用 .genconf 文件中的 SiriusSession 选项初始化会话。它应该设置为引用 .aird 文件的 URI。在M2DocUtils 类中,您有几种方法可以创建一个 IQueryEnvironment,该方法采用 String 的 Map,您可以在其中添加 SiriusSession 选项,例如:
M2DocUtils.getQueryEnvironment(ResourceSet, URI, Map<String, String>)
请注意,您的代码需要在 Eclipse 中运行,而不是独立的 java 程序。
【讨论】:
以上是关于使用 M2Doc 核心生成 API 和 SiriusServices 出现问题的主要内容,如果未能解决你的问题,请参考以下文章
如何翻转或旋转 Word 中使用 m2doc 服务生成的图表图片