高级自定义 > 业务逻辑自定义 > 报告生成 > 报告 Info*Engine 任务数据源自定义
报告 Info*Engine 任务数据源自定义
目标
您想要创建一个新的 Windchill 编程数据检索任务以在报告中使用。
背景
Windchill Business Reporting (WBR) 解决方案使用数据源对象从 Windchill 检索数据。Info*Engine 任务是一种数据源类型。Info*Engine 任务是基于文本的文档,通过使用编程结构来检索和处理 Windchill 数据。此类任务必须以表格格式返回其数据 (即,每个元素都必须具有相同数量的属性),并且必须使用特殊标记和语法对任务进行注释,以将其定义为 WBR 数据源。
范围/适用性/假设
报告任务创作机制仅对 Jasper 报告集成有效。
此文档不包含有关如何构造 Info*Engine 任务的详细信息。有关此类信息,请参阅 Info*Engine User's Guide (《Info*Engine 用户指南》)。
预期结果
此解决方案的最终结果是创建可用于创作 Jasper 报告的数据源。
解决方案
构造 Info*Engine 任务数据源。
过程 - 创建 Info*Engine 任务数据源
1. 在 <WindchillHome>\tasks\<MyTaskPackage> 中创建 Info*Engine 任务 XML 文件。
2. 写入报告任务,以表格格式返回结果。此 Info*Engine 任务在其他方面正常,同时遵循某些附加约定。首先,它会返回一个表格组,其中每一列都具有相同类型的对象。以下是允许使用的列类型:
java.lang.Boolean
java.lang.Long
java.lang.String
java.sql.Timestamp
java.util.Date
java.lang.Double
com.ptc.core.meta.common.FloatingPoint
com.ptc.core.meta.common.Hyperlink
java.math.BigDecimal
3. 将 WBR 数据源参数信息添加到任务注释。可以没有参数注释,也可以有多条参数注释。每个指定参数都必须以单行形式存在。参数注释的语法如下:
@param <type> <name> <description>
其中 <type> 是 Java 参数类型,<name> 是参数名称,<description> 用于描述参数。以下是允许使用的参数类型:
java.lang.Boolean
java.lang.Long
java.lang.String
java.sql.Timestamp
java.util.Date
java.lang.Double
java.math.BigDecimal
4. 将 WBR 数据源列信息添加到 "return" 任务注释。必须以正确的格式指定列信息,才能将此任务视为数据源。列注释的语法如下:
@return <type> ${<variableName>} {columns: <columnList>}
其中 <type> 是 Info*Engine 任务输出类型,<variableName> 是对将要返回的任务变量的引用,<columnList> 用于描述输出的表格格式。有关 <type> 和 {<variableName>} 的详细信息,请参阅 Windchill 帮助中心Info*Engine Task Invocation with SOAP 部分。列即表格输出中每一列的一个或多个类型和名称对的逗号分隔列表。类型和名称以空格分隔。以下是允许使用的列类型:
java.lang.Boolean
java.lang.Long
java.lang.String
java.sql.Timestamp
java.util.Date
java.lang.Double
com.ptc.core.meta.common.FloatingPoint
com.ptc.core.meta.common.Hyperlink
java.math.BigDecimal
5. 将任务作为方法添加到 ReportTask 类型。在任务文件所在的目录中创建一个名为 ".delegateInfo" 的文件。该文件应包含以下两行:
repositoryType=com.ptc.windchill
typeId=com.ptc.windchill.enterprise.report.ReportTask
6. 为 <MyTask> 创建包并进行安装。请参阅 Info*Engine Packages
自定义点
过程 - 在另一类型下创建 Info*Engine 任务数据源
在上述主要过程中,使用默认报告类型 com.ptc.windchill.enterprise.report.ReportTask 创建了 Info*Engine 任务。该类型与 "Source" 选项卡的 "Windchill > Report Tasks > com.ptc.windchill.enterprise.report.ReportTask" 级别相关联。报告任务类型可用于以逻辑方式对数据源进行分组。主要过程的变化是在另一类型 "myPackage.MyReportTask" 下创建 Info*Engine 任务。
1. 需要将此类型添加到 com.ptc.windchill.enterprise.report.reportTaskClassNames 特性中所指定的以逗号分隔的报告类型列表。
2. 在上述“创建 Info*Engine 任务数据源”过程的步骤 5 中,typeId 的 .delegateInfo 条目应指定 "myPackage.MyReportTask"。
过程 - 删除 Info*Engine 任务数据源
可从系统中移除不再需要的 Info*Engine 任务数据源,方法是将其从 Windchill 中删除。或者,可以移除任务注释,以使其不被识别为数据源。
要移除任务,请卸载包并从任务目录中移除 XML 文件。
限制
.delegateInfo 文件中的 typeId 映射到 SOAP 类,而任务文件名映射到该类中的 SOAP 方法。这两个名称都仅包含对 Java 标识符有效的字符。此外,对于给定类,这些方法都必须是唯一的。对于给定的 typeId,每个任务名称都必须是唯一的。
示例代码
Windchill 代码中的使用示例
提供的多个预设报告均使用 Info*Engine 任务数据源。这些数据源在 "Source" 选项卡的 "Windchill > Report Tasks > com.ptc.windchill.enterprise.report.ReportTask" 级别列出。这些数据源可用于创建 Cognos 报告。但是,不支持直接修改关联的 Info*Engine 任务。
随附的示例
演示 Info*Engine 任务数据源 ContextItems 可在 "Source" 选项卡的 "Windchill > Report Tasks > com.ptc.windchill.enterprise.report.ReportTask" 级别找到。该任务数据源位于 <WindchillHome>\tasks\com\ptc\windchill\enterprise\reports\ContextItems.xml 下,用于在指定的上下文中检索所有部件和文档的并集。
更多资源
相关的最佳做法
报告 - ReportTemplate 数据源自定义
相关的包/类 Javadoc
Reporting 模块
com.ptc.windchill.enterprise.report
相关自定义文档
其他相关 Windchill 文档
Info*Engine User's Guide (《Info*Engine 用户指南》) (Prerequisite)
这对您有帮助吗?