dvsa / mot-document-module

该软件包最新版本(v3.0.0)的许可证信息不可用。

共享文档和报告生成模块

v3.0.0 2024-07-10 12:55 UTC

README

该库提供两个模块;一个用于创建文档的实时快照,另一个基于给定的模板和文档标识符生成报告。这些模块强制执行略有尴尬的职责分离;文档创建模块需要数据库连接,而报告服务直接通过RESTful API调用lambda证书生成服务。

模块

  • DvsaDocument
  • DvsaReport

安装

将Git仓库添加到应用程序的composer.json文件中的repositories部分

"repositories": [
    {
        "type": "git",
        "url": "ssh://git@gitlab.clb.npm/sc/dvsa-document-module.git"
    }
]

然后简单地使用require相关标签

"require": {
    "dvsa/dvsa-document-module": "0.1.0"
}

配置

文档模块

文档模块不需要任何独立配置,尽管它依赖于doctrine和一个数据库连接可用于消费者应用程序。

报告模块

如果您需要生成报告,请确保以下密钥在您的应用程序配置中存在(即在config/autoload或类似位置)

'certificate_generation' => [
        'uri' => {lambda_uri},
        'x-api-key' => {labda_api_key},
        'logCalls' => {true or false value}
]

用法

创建文档(DvsaDocument)

文档模块不公开创建新文档的路由,因为这种逻辑通常会被包含在特定应用程序的调用中。`DocumentService`公开了一个直接执行此操作的方法

public function createSnapshot($templateName, $data = [])

templateName必须是一个由消费者应用程序定义的有效“友好名称”;这将在数据库模板列表中进行查找,并作为外键存储在新创建的文档中。

data是一个简单的键/值对数组,它构成了文档的内容。

返回值

返回值始终是一个文档标识符;如果过程失败,将引发EmptyDocumentExceptionTemplateNotFoundException

获取文档的报告名称(DvsaDocument)

文档模块公开了一条路由,用于查找给定文档标识符和可选变化的相应jasper报告名称,进而调用以下DocumentService方法

public function getReportName($documentId, $variation = null)

可选的variation参数必须对应于在应用程序数据库中定义的有效模板变化。这允许一个文档作为多个报告的数据源,同时仍然强制报告之间有某种关联;即同一报告翻译成不同的语言。

返回值

返回值始终是一个表示完整Jasper报告名称的字符串。如果过程失败,将引发TemplateNotFound异常。

路由

上述服务调用通过单个路由公开,即/get-report-name/:id/:variation,如果成功,将返回一个包含单个属性report-name的JSON对象。

检索报告(DvsaReport)

有了$documentId$reportName,只需获取一个ReportService实例并调用以下方法

public function getReportById($documentId, $reportName, $runtimeParams = [])

该方法构建一个URL,然后通过Jasper服务器RESTful API直接请求;因此,在这个例子中,消费者应用程序必须能够直接与您的配置Jasper端点通信。

可选的 runtimeParams 变量将在请求中传递,允许您的模板在报告生成时接受额外的输入。数组中的每个键都将作为 $P{KeyName} 在您的报告中可用,其值将相应替换。

返回值

此方法将返回一个原始的 \Laminas\Http\Response 对象,您可以查询相关文档信息(大小、内容类型等)。响应还存储了一个总的成功状态,$response->isSuccess()

将报告响应转换为领域模型(DvsaReport)

如果 Zend Http 响应对象不合适,您可以将其注入到服务的辅助方法中,该方法将其转换为报告模型

public function getReportFromResponse(\Laminas\Http\Response $response)

返回值

这将返回一个报告模型,它是原始响应的业务层表示。如果响应不成功,它将抛出 ReportNotFoundException。

贡献

请参阅我们的贡献指南