dvsa / mot-document-module
共享文档和报告生成模块
Requires
- php: ^8.2
- ext-json: *
- doctrine/doctrine-module: ^5.3
- doctrine/doctrine-orm-module: ^5.3
- laminas/laminas-dependency-plugin: ^2.6.0
- laminas/laminas-http: ^2.14
- laminas/laminas-log: ^2.17
- laminas/laminas-mvc: ^3.3.0
- laminas/laminas-servicemanager: ^3.10.0
Requires (Dev)
- captainhook/captainhook: ^5.16
- captainhook/plugin-composer: ^5.3
- dvsa/coding-standards: ^2.0
- phpstan/phpstan: ^1.11
- phpunit/phpunit: ^9.5.9
- vimeo/psalm: ^5.24
This package is auto-updated.
Last update: 2024-09-10 13:19:44 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
是一个简单的键/值对数组,它构成了文档的内容。
返回值
返回值始终是一个文档标识符;如果过程失败,将引发EmptyDocumentException
或TemplateNotFoundException
。
获取文档的报告名称(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。
贡献
请参阅我们的贡献指南。