使用 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 出现问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 m2doc 生成表列

如何翻转或旋转 Word 中使用 m2doc 服务生成的图表图片

以编程方式使用 M2Doc:生成的 .docx 文档中的错误

M2Doc 一般问题

使用 M2Doc 打开 Word 时出现异常

使用 M2DOC 导出高质量图像