windchill业务

更新时间:2024-04-24 13:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Info*Engine 的数据管理

Info*Engine 的数据管理机制基于5 个基本的概念:JSP、Task、Webject、Group 和Virtual Database(VDB)。JSP 页和Task定义了Info*Engine 如何获取和显示信息。Webject 则能够被JSP 页和Task 组织起来,具体实现数据的收集、处理和显示。Group 是JSP 页和Task 生成的信息块。VDB 是Group 的存储区域。

Info*Engine 的JSP 页面包含Info*Engine 的自定义标记,主要封装了一些可重用的功能,用于简化JSP 页和Task 文件的实现。

Task 的基本语法与功能JSP 相同,但不包含如HTML 标记等显示组件,因此不提供数据显示功能。

Webject 将特定Info*Engine 功能封装成一条命令,JSP 页和Task 可以通过调用这些Webject 达到动态的组织、处理信息的目的。

能够返回的数据Webject 被调用时会创建一个Object Group。Object Group 存储于VDB,并确保具有唯一的命名。

对task的作用和具体说明在jiaocai\\教材\\ 07_Windchill 9.x Client Customization Exercise Book.pdf中,具体参考文档 //创建一个task

<%@taglib uri=\//添加一个Get-Properties的webject对象

// 这个webject将返回一个wt.federation.ie.VMName对象

//添加一个通过名字查询产品

//定义一个instance作为wt.federation.ie.VMName的”properties”组的字段

//添加webject来创建文件,指定它的properties,CONTAINER_REF(对应的容器),所创建的类型(type)及字段(field,也就是文件的名称)

Jsp的客户端架构(jsp client achitecture简称JCA)UI技术的相关列表: Jsp pages (jsp的页面内容) Java beans

Custom tags/taglibs 自定义标签/标签库 Java service Javascript

JCA(jsp client architecture jsp客户端架构)是一个完整的框架

它包括(classes,method,property files,customization points),它有以下功能 1、 用一种共同的方式支持检索和显示数据 2、 支持客制化

3、 保持客制化的文件和ootb文件分开

4、 支持resource bundles和localization 5、 验证表单和数据

Jca是netmarket基础上的一个扩展,所以许多的JCA对象和类前面都有一个nm的前缀 如:NmCommandBean NmContext NmContextItem NmCustomRole

Action:

在windchill页面和逻辑上一个组合的链接的显示,当链接触发时执行 它在UI中表现为文本,图标,导航选项卡,菜单项等 JCA对象中表示一个action的是NmAction 它被定义在结尾为action.xml中

ActionModel:

一个逻辑相关的action的集合

Action model的内容为actions 或者是action model(即action model可以嵌套,如在二级下拉框中)

在jca中,NmHTMLActionModel对象表示action model

Jca的actionmodel都定义在以actionmodes.xml结尾的文件中

Action Service

service用于检索action和action models

通过一个action 的id(from action.xml),返回一个action(NmAction)

通过一个action model的id(from actionmodels.xml),返回一个action model(NmHTMLActionModel)

它在Windchill Method Server上运行

StandardNmActionService实际上是一个类

UI Component Validation(界面组件验证)

Component Validation也成为UI validation,action Validation,或者仅仅为Validation 作用:它确定界面上什么东西应该出现 它包括三种类型的验证: A、 Pre-validation(预验证)

它决定一些东西是否出现在界面上 在actions或者attributes执行 B、 Post-Select Validation(选择验证)

选定某个东西后,对应的action是否允许被执行 C、 Post-Submit Validation(提交验证)

它决定用户提交的表单中所输入的数据是否合法

在客户端的验证使用的是JavaScript,在Method Server上的验证使用的是validation service 和 validators.

UI Component Validation Service(UI组件验证服务)

Component Validation service也成为UI validation service,action Validation service,或者仅仅为Validation service

给一个UI element (action或attribute),将返回一个结果是否使用该UI elements在给定的context中有效

代表validators执行实际的逻辑决定有效性

它可以调用Pre-validation,Post-Select Validation,Post-Submit Validation 在Method Server上运行

它所代表的类是StandardUIComponentValidationService

UI Component validator(UI组件验证器)

也称为“action validator”或“validator” 代表UI Component Validation Service

包含业务逻辑来验证一个或多个UI组件(actions和attribute)

一个单一的validator可以包含Pre-validation,Post-Select Validation,Post-Submit Validation。 它是DefaultUIComponentValidator的一个子类

NmCommandBean

又名为Command Bean

包含HTTP request和所有JCA状态信息

所有JCA代表和组件可以使用这个数据来执行他们的逻辑 主要目标是给一些类型的MVC给不同的组件 Javadoc改善一些方法的描述

Object Reference

轻量级处理持久化(为Windchill business objects持久化的一个超类) 它代表数据库中的一行

它有两个关键的属性:表名和row 的id

Version Reference

轻量级处理一个Version 的持久化 代表一个对象的一个分支的一行

每个分支都有许多与像ClearCase的分支相关的对象 它有两个关键属性:表名和branch(分支)的id

每个分支上一定有唯一的一个最新标识的对象,所以得到一个持久化的version Reference经常会扩大对象的最近迭代。

begin.jspf

将所有的JCA的状态数据添加到HTML页面和请求的jSP片段 初始化所有的JCA beans(例如NmCommandBean , NmSessionBean) 包括JCA的JavaScript文件

负责绘制windchill的头文件和全局导航 包含执行action的逻辑

NmSessionBean

又名为“Session Bean”

包装JCA的Session state

包含辅助APIs获取和设置preferences

用于在请求和缓存之间传递信息来减少RMI次数

NMOid

Windchill WTReference的JCA包装(这可能是一个Object Reference, Version Reference) 在windchill中一个轻量级持久化

尝试隐藏一些不同类型的WTReference(如Version Reference和cachedObjectReference)的详细信息来提高性能

如一个字符串的例子:oid=OR: wt.org.WTUser:8897

NmSimpleOid

它是一个特别的NmOid类,它让开发者控制一些字符来表示页面上的一些对象 对于非持久化对象,NmSimpleOid是表示in-work(正在使用)对象的唯一途径。 通常它只是一个字符串类型的时间戳(如Example of a string: “oid=WTPart_3433048930”) 开发人员负责字符串的格式,这样就能够解析字符串和重建对象 NmSimpleOid经常被使用所以是更多的信息传递到row

Descriptor

又名为Component Descriptor

这个对象包含一个JCA组件的properties

它有点像一个properties对象,但它能有子descriptors(孩子描述符)。 这个properties被一些tags使用来控制它们的行为

DataUtility

从行对象中创建表格单元格数据

它通过service.properties文件中被映射到列的id

它可获得任何对象的显示值

在URL的后面加上JCADebug=1可以看到一个table的所有数据集

DataUtility代表应该至少能从Persistables , Type Instances, and Info*Engine elements得到任一可见元素的值

GUI Component (图形界面)

UI Bean对象代表每个表单元格中显示什么属性 这些数据实用程序应该返回的东西

例如:要显示row对象的图标,要使用IconComponent(extends from GuiComponent) 有一个HTML renderer映射到它,如何将一个IconComponent转换成一个 HTML tag 如果我们支持一些其他类型的显示,有一天有多个renderers映射到GUI Components

getModel & getIEModel Tags

获取表中业务数据的标签

这个标签将用RMI调用Method Server

The properties是方法调用(getModel)或Info*Engine Task(getIEModel)

这些标签作为在一个tableDescriptor tag(用来表示一个表的Component Descriptor)的输入

ModelCommand

它是getModel标签最终执行的对象,为了得到表的业务数据 它有很多子类,每个以自己的方式收集row-data

ModelCommand有一个hard-coded 逻辑关于根据在jsp中指定的参数使用哪一个子类

例如:如果知道jsp指定的a service class 和 method name,就去构造一个ServiceModelCommand。

这个表中是一些JCA工具和实例

用Info*Engine来获取数据

在本示例中是查询wtpart,并将wtpart的两个属性输出到表格中

目标:创建一个info*Engine task来搜索数据

为这个info*Engine task创建一个task Delegate(任务委托)(即在实用程序中任务委派管理器)中创建委派

创建一个JCA标签的jsp页面,使用task Delegate来搜索数据

Step1:创建一个名为test的info*Engine task,返回两个属性名称,版本

A、 创建一个文件在WT_HOME/tasks/com/gsdev/client/test.xml B、 在文件中添加一个Query-Objects webject.

C、 硬编码(硬编码是指将可变变量用一个固定值来代替的方法)的INSTANCE参数,

它对所有的wt.lifecycle.LifeCycleTemplates进行搜索 例如:

<%@taglib uri=\

D、 保存这个task

Step2:实现这个task Delegate(任务委托)

A、 选择Site > Utilities > Task Delegate Administrator .

B、 输入LDAp的管理员用户和密码(一般为用户:cn=manager 密码:ldap) C、 选择创建委托 D、 对于Repository Type(库类型),选择com.ptc.windchill E、 对于名称,随便你输入,在这里我输入test

F、 对于Source URL(源URL),输入刚创建的名为test.xml的task的地址 G、 对于type,选择WCTYPE|wt.fc.Persistable . H、 选择创建

Step3:创建JSP页面

A、 创建一个jsp页面,把它放在WT_HOME/codebase/netmarkets/jsp/Lenovo/fru这个文

件夹下,名为testTask.jsp B、 打开这个jsp

C、 添加begin.jspf 和 end.jspf语句

D、 引入JCA组件中的taglib指令

E、 添加2列的describeTable tag:name和number

F、 添加getIeModel 标签,使用Info*Engine core tags来指明WHERE and TYPE G、 添加renderTable标签 H、 保存Jsp文件

例如:

<%@ include file=\

<%@ taglib uri=\

<%@ include file=\

Step3:做国际化

为the table label ( “Search Results”)添加一个国际化。

配置task Dispatching 提供表单数据 如果jsp中的请求参数在你task中作为一个表单数据,那么,表单可以配置如下: 例如:这个页面的网址/somePage.jsp?foo=bar,那么这个task将form的foo映射到bar 步骤:

Step1、在jsp页面中创建form group(使用Info*Engine’ s JSP tag library) Step2、指定group的name,作为getIeModel标签的一个属性

descriptor=\

form=\

支持配置view的参数 在getIeModel中配置table view

步骤:

A、 将当前table view的排序和筛选条件传递给你的task,使用

\,windchill库护短架构提供信息请求的component和视图中

显示的属性

Component使用配置的表

Task可以使用此信息来查询数据,,提供给task的参数映射到一个Query-Objects对象的子集

以下参数:

B、 ? A TTRIBUTE: This contains the list of attributes the component wants to display C、 ? SORTBY : What attributes to sort by SORTED: The sort direction for each attribute

D、 ? WHERE: Filter criteria

E、 ? TYPE: The type or types to search for .

F、 ? VERSION: Whether LATEST or ALL versions should be returned. G、 ? ITERATION: Whether LATEST or ALL iterations should be returned

H、 ? A TTRIBUTE_TYPE_CONTEXT : 当提供多种类型,应作为一个上下文用于查找属性定义的类型

I、 ? P AGE_LIMIT : The number of results per page

J、 ? P AGE_OFFSET : The first result row to return from the paging session, if any

K、 ? P AGING_SESSION_ID: The current paging session id, if any

上面一个实例的另一个方法是用Java类来实现:

这里只写步骤:

Step1、写一个java类,查询你所需要的类,如WTPart,类名为com.ptc.TestClient,然后返回一个含有WTPart的一个结果集,并生成相应的.class文件,放在codebase下对应的包里

Step2、用JCA框架来调用这个类并写在一个table中。新建一个jsp,添加以下内容:

<%@ taglib uri=\<%@ include file=\

再看一个与上个实例相似的东西—?视图和树形结构

serviceName=\

这个用的也是java方法

以view为例子,先看它的步骤:可以综合上面那个例子: Step1、写一个java类,并在tree或者view中输出属性。将编译后的.class文件放到codebase对应的文件夹下

Step2、在codebase目录下注册一个服务,调用类

Step3、写一个jsp页面,用JCA框架下引用这个服务,并描绘一个tree或者view输出相应的属性

这个实例具体请见第5周学习总结

创建wizard的做法在jiaocai\\教材\\ 07_Windchill 9.x Client Customization Exercise Book.pdf的P77

本文来源:https://www.bwwdw.com/article/41pp.html

Top