定义新操作
系统中的操作由操作名称和对象类型唯一标识。操作应在遵循基于 codebase\config\actions\actions.dtd 的结构的 XML 文件中进行定义。
以下是“新建文档”窗口的操作定义示例。
<objecttype name="document" class="wt.doc.WTDocument"
resourceBundle="com.ptc.windchill.enterprise.doc.documentResource">
<action name="create" uicomponent="CREATE_DOC" dtiUpload="true">
<command
class="com.ptc.windchill.enterprise.doc.forms.CreateDocFormProcessor"
method="execute" windowType="popup" onClick="validateCreateLocation(event)"/>
<includeFilter name="projectM4D" />
<nonSupportedTypes value="wt.part.WTPart"/>
<supportedTypes value="wt.doc.WTDocument"/>
</action>
</objecttype>
objecttype 标记
objecttype 是创建命名空间以及为特定对象或功能区域的相关操作进行封装的一种方法。在上述示例中,名称 "document" 为适用于 wt.doc.WTDocuments 的操作创建了唯一的命名空间。
objecttype 名称的命名约定可以是字母数字字符的任意组合。大多数 objecttypes 是与操作相关的可持续对象的别名。适用于任何对象类型的操作 (如复制) 均可放置在 "object" 的 objecttype 中。
* 
PTC 建议所有自定义 objecttypes 都使用公司特定的前缀,以防与随产品一起交付的对象类型发生冲突。
下表介绍了 objecttype 的有效参数。有关这些参数的详细信息,另请参阅 codebase\config\actions\actions.dtd
参数
默认值
可能的值
必需?
说明
name
字母数字字符的任意组合
用于参考此对象类型的名称
有效的 Java 类
所包含操作的对象类
resourceBundle
任何有效的资源束类名称
针对要本地化的操作的特性所使用默认资源束的类名称
操作标记
name 操作是对象类型上下文中操作的唯一标识符。对象类型与操作名称结合使用,以使操作在系统内是唯一的。
默认情况下,操作名称与包中为对象类型命名的 JSP 名称相对应。封装相对于 codebase\netmarkets\jsp。例如,上面 XML 示例中的操作名称为 "create"。在文档对象类型中,该操作与 codebase\netmarkets\jsp\document\create.jsp 相对应。
操作名称的命名约定可以是字母数字字符的任意组合。
* 
PTC 建议所有自定义操作都使用公司特定的前缀,以防与随产品一起交付的操作名称发生冲突。
下表介绍了 action 的有效参数。有关这些参数的详细信息,另请参阅 codebase\config\actions\actions.dtd
参数
默认值
可能的值
必需?
说明
name
这是用于参考操作的名称
cad
false
true
指示此操作是否仅在 Creo 嵌入式浏览器中有效
installType
WINDCHILL
PDM
PDM
PJL
PDM
基于已安装组件的适用操作。仅出于继承目的。
multiselect
false
false/true
指示可对此操作进行行数据多选。仅当此操作的 selectRequired 属性也将这种操作也设置为 true 时,此参数才为 true。
selectRequired
false
false/true
确定用户界面是否允许在未选择任何内容时执行此操作。否则,会出现错误消息。
* 
如果定义了 onClick 操作处理程序,则 onClick 函数必须检查是否选择了项。要执行此操作,请调用 JavaScript 函数 table.getSelectionModel().hasSelection()
afterJS
操作窗口步骤完成后,在进行客户端验证时针对此步骤调用的 JavaScript 函数名称。
beforeJS
操作窗口步骤加载后,在进行客户端验证时针对此步骤调用的 JavaScript 函数名称。
afterVK
操作窗口步骤完成后,在进行客户端验证时针对此步骤调用的服务器验证器名称。
beforeVK
操作窗口步骤加载后,在进行客户端验证时针对此步骤调用的服务器验证器名称。
id
objecttype.action
覆盖操作窗口步骤的 ID。
preloadWizardPage
true
false
true
指定在启动操作窗口时要下载的操作窗口步骤
hidden
false
false
true
指示要首先隐藏的操作窗口步骤,或呈现为不可单击的操作
required
false
false
true
用于表示操作窗口中完整步骤的操作。指定需要此步骤。
resourceBundle
针对要本地化的操作的特性所使用资源束的类名称
renderType
PDM
默认值
http://<host>/<webapp>
常规值:
http://<host>/<webapp> <command.method>
带有上下文的常规值:
http://<host>/<webapp> <command.method> ?oid=...
PDM:由 URLactionDelegate 生成的 URL;用于模板处理
uicomponent
引用 roleaccessprefs.xml (uic.name) 中的条目来指定基于角色的访问权限。
preloadJS
在加载或显示操作窗口步骤之前执行的 JavaScript 函数。
postloadJS
在将操作窗口步骤加载到内存之后但在显示给用户之前,执行 JavaScript 函数。
命令和组件属性
如有必要,将 <command><component> 标记放置在 <action> 标记的主体中以定义操作的处理方面。
<command
class="com.ptc.windchill.enterprise.doc.forms.CreateDocFormProcessor"
method="execute" windowType="popup" onClick="validateCreateLocation(event)"/>
或:
<component name="my.component.id" windowType="page" />
class 属性用于定义要处理的类。
method 属性用于定义要在类中执行的方法。
windowType 属性用于确定要执行的窗口操作。
在上面的示例中,此命令用于“新建文档”操作,这是一个操作窗口 (向导)。因此,windowType 为 "popup"。框架中添加的 JavaScript 用于在新窗口中启动此操作。在提交时执行指定的类和方法。
命令参数
参数
默认值
可能的值
必需?
说明
要用于处理的类。
方法
类中要执行的方法。
url
用于覆盖生成的 URL
此属性可用于指定与操作关联的 JSP 的位置。值应为 JSP 相对于 <Windchill>/codebase 的路径。
onClick
指定要调用的附加 onClick 函数。这对于确认用户是否执行特殊操作很有用。
对于使用操作的某些位置 (如菜单栏或表格上的工具栏),onClick 需为 "if" 语句的有效表达式。因此,onClick 应仅调用函数。
以下项包含在 onClick 函数可将其作为自变量传递的范围变量中:
event - 浏览器事件
target - 表示“已单击”的用户界面组件的对象
table - 包含操作的表如果操作未包含在表中,则其值为 null。
onClick 不应包含分号或 return 语句。例如:
正确:
onClick="doFoo()"
onClick="doFoo(event)"
不正确:
onClick="doFoo();doBar();"
onclick="doFoo();Event.stop(event);"
* 
不需要使用 HTML 编码的 "'" 字符来引用单引号;请改为使用常规的单引号。
解析操作时,操作框架会尝试修复棘手的定义。如果无法修复,则 onClick 函数将被替换为警报。如果操作已修复,则会记录警告;否则会记录错误。
如果针对操作设置了 selectRequired 属性,则会在任何其他处理程序之前调用 onClick 处理程序。因此,onClick 处理程序必须检查是否在表中选择了项。
windowType
page
new
no_content
normal
popup
wizard_step
new - 看起来与其他窗口类似,但启动方式有所不同。所有表单数据都将提交到弹窗,这样便可获得更多信息。但是,额外的表单数据可能与弹窗中已有的表单数据重叠。通过覆盖 URL 操作来添加其他信息可能更容易。
no_content - 浏览器忽略服务器对此请求的响应。不建议使用此值,而建议通过 JavaScript 函数手动创建 Ajax 请求。
normal - 提交表单。
page - 显示新页面。
popup - 创建非模态弹出式操作窗口。
wizard_step - 在操作窗口中将操作显示为步骤。
组件属性与 command 属性非常类似。在给定 MVC 组件 ID 的情况下生成 URL,而不是提供直接 URL。MVC 组件可在 MVC 委派中确定正确的 URL。有关详细信息,请参阅MVC 组件
组件参数
参数
默认值
可能的值
必需?
说明
name
单击此操作时显示 MVC 组件 ID。
componentType
INFO
PICKER
SEARCH
TABLE
WIZARD
WIZARD_TABLE
WIZARD_ATTRIBUTES_TABLE
INFO_ATTRIBUTES_TABLE
SIMPLE
MINI_INFO
PRIMARY_ATTRIBUTES
componentType 会影响生成页面上呈现的对象是可编辑、只读还是已验证。值来自 com.ptc.core.ui.resources.ComponentType
在某些情况下,组件类型 (如 INFO) 可将 URL 更改为 typeBased。某些操作仅在某些组件类型下可用。
urlParams
每次呈现操作时添加到生成的 MVC URL 中的 URL 参数。
typeBased
false
true
确定 MVC 委派查找是否应包含正在处理的对象类型。针对基于类型的组件生成的 MVC URL 是 /tcomp/ 而不是 /comp/
onClick
指定要调用的附加 onClick 函数。这对于确认用户是否执行特殊操作很有用。
对于使用操作的某些位置 (如菜单栏或表格上的工具栏),onClick 需为 "if" 语句的有效表达式。因此,onClick 应仅调用函数。
以下项包含在 onClick 函数可将其作为自变量传递的范围变量中:
event - 浏览器事件
target - 表示“已单击”的用户界面组件的对象
table - 包含操作的表如果操作未包含在表中,则其值为 null。
onClick 不应包含分号或 return 语句。例如:
正确:
onClick="doFoo()"
onClick="doFoo(event)"
不正确:
onClick="doFoo();doBar();"
onclick="doFoo();Event.stop(event);"
* 
不需要使用 HTML 编码的 "'" 字符来引用单引号;请改为使用常规的单引号。
解析操作时,操作框架会尝试修复棘手的定义。如果无法修复,则 onClick 函数将被替换为警报。如果操作已修复,则会记录警告;否则会记录错误。
如果针对操作设置了 selectRequired 属性,则会在任何其他处理程序之前调用 onClick 处理程序。因此,onClick 处理程序必须检查是否在表中选择了项。
windowType
page
new
no_content
normal
popup
wizard_step
new - 看起来与其他窗口类似,但启动方式有所不同。所有表单数据都将提交到弹窗,这样便可获得更多信息。但是,额外的表单数据可能与弹窗中已有的表单数据重叠。通过覆盖 URL 操作来添加其他信息可能更容易。
no_content - 浏览器忽略服务器对此请求的响应。不建议使用此值,而建议通过 JavaScript 函数手动创建 Ajax 请求。
normal - 提交表单。
page - 显示新页面。
popup - 创建非模态弹出式操作窗口。
wizard_step - 在操作窗口中将操作显示为步骤。
这对您有帮助吗?