高级自定义 > 业务逻辑自定义 > 报告生成 > 报告 Info*Engine 任务数据源自定义
  
报告 Info*Engine 任务数据源自定义
目标
您想要创建一个新的 Windchill 编程数据检索任务以在报告中使用。
背景
Windchill Business Reporting (WBR) 解决方案使用数据源对象从 Windchill 检索数据。Info*Engine 任务是一种数据源类型。Info*Engine 任务是基于文本的文档,通过使用编程结构来检索和处理 Windchill 数据。此类任务必须以表格格式返回其数据 (即,每个元素都必须具有相同数量的属性),并且必须使用特殊标记和语法对任务进行注释,以将其定义为 WBR 数据源。
范围/适用性/假设
本文档假定已成功安装并配置了 Windchill Business Reporting (WBR) 解决方案 (即 Cognos)。Windchill 实例名称称为 <WindchillInstanceName>。Cognos 的根 URL 称为 <WBRHomeURL>。通常,如果 WBR 解决方案安装在 <WBRHost> 上,则 <WBRHomeURL> 将为 http://<WBRHost>/cognos8/cgi-bin/cognos.cgi。假定您可以登录到 <WBRHomeURL>,并且您具有足够的 Cognos 权限来查看 Windchill 数据源对象和创建报告。
假定您有权访问 Windchill 服务器任务目录 <WindchillHome>\tasks,能够在子目录 <MyTaskPackage> 中创建 Info*Engine 任务 <MyTask>。
在进行 WBR 集成时,您还必须具有更新报告元模型的访问权限。
此文档不包含有关如何构造 Info*Engine 任务的详细信息。有关此类信息,请参阅 Info*Engine User's Guide (《Info*Engine 用户指南》)。
预期结果
此解决方案的最终结果是创建可用于创作 Cognos 报告的数据源。
解决方案
构造 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
7. 更新 Cognos 模型以识别此新数据源。从已安装的 Windchill 快捷方式启动 JConsole。连接到 Embedded Servlet Engine (基于 Tomcat) JVM 实例。从 MBeans 选项卡的 "com.ptc > Monitors > ReportingSystem" 中选择报告管理 bean。在 Operations 选项卡中,单击 "updateModel"。
8. 验证数据源是否存在于 Cognos 中。使用 <WBRHomeURL> 登录到 Cognos,并启动 "Report Studio"。在 "Insertable Objects" 窗口中 "Source" 选项卡下的 "Windchill > Report Tasks > com.ptc.windchill.enterprise.report.ReportTask" 级别查找 <MyTask> 数据源。
以下是数据源的任务注释示例。
<!--com.infoengine.soap.rpc.def
Report Task Example.
@param java.lang.String param1 A string parameter named param1.
@param java.lang.Long param2 A numeric parameter named param2.
@return INFOENGINE_GROUP ${out} {columns: java.lang.String
name, com.ptc.core.meta.common.Hyperlink url, java.util.Date
deadline, java.math.BigDecimal duration}
-->
自定义点
过程 - 在另一类型下创建 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 任务数据源”过程的步骤 7 之前,必须更改此特性。
3. 在上述“创建 Info*Engine 任务数据源”过程的步骤 5 中,typeId 的 .delegateInfo 条目应指定 "myPackage.MyReportTask"。
4. 在上述“创建 Info*Engine 任务数据源”过程的步骤 8 中,数据源现可从 "Windchill > Report Tasks > myPackage.MyReportTask" 级别找到。
过程 - 删除 Info*Engine 任务数据源
可从系统中移除不再需要的 Info*Engine 任务数据源,具体方法是将其从 Windchill 中删除并更新 Cognos 模型。或者,可以移除任务注释,以使其不被识别为数据源。
1. 要移除任务,请卸载包并从任务目录中移除 XML 文件。
2. 然后,通过上述“创建 Info*Engine 任务数据源”过程的步骤 3 更新 Cognos 模型。
限制
.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 数据源自定义
报告 - Cognos 演示自定义
相关的包/类 Javadoc
Reporting 模块
com.ptc.windchill.enterprise.report
相关自定义文档
其他相关 Windchill 文档
Info*Engine User's Guide (《Info*Engine 用户指南》) (Prerequisite)
Info*Engine 实施
专业化管理
相关网站
http://support.cognow.com/support