在发布规则中使用条件
配置附加文件类型
WVS 支持在发布期间生成附加文件类型。发布规则 XML 定义允许配置附加文件类型。本节描述了支持这种附加文件类型功能的发布规则。
|
有关如何在 “表示/注释”表格上显示可用文件类型列表的信息,请参阅 显示表示和注释。
|
附加文件类型元素
要配置发布期间生成的附加文件类型,请使用发布规则 XML 中的以下元素:
file 以及 additional-Files
有关上述发布规则 XML 元素的简单示例,请参见 <Windchill>/codebase/com/ptc/wvs/server/xml</Windchill> 目录中的示例 PublishRules-AdditionalFiles.xml 文件。
File - 每个可以生成的附加文件类型均可通过 <file> 元素表示,例如:
<file display-label="My IGES File" type="iges" output-prefix="2d" output-suffix=”001”default="true" />
其中:
• display-label 是 UI 中显示的标签,例如,“新建表示”向导第二步中的“附加文件”。
• type 是工作器需要导出的其他文件类型。
• output-prefix 和 output-suffix,可以向发布期间生成的附加文件的附加文件名中添加前缀或后缀。output-suffix 可选。
• default - 定义文件类型是否为适用于发布的默认文件类型。为使用 Windchill“新建表示”向导创建表示发布请求,该属性将标识预先选择的附加文件类型。对于检入和其他发布请求类型,此属性将标识要发布的附加文件类型。
◦ default=true - 在“新建表示”向导中预先选择,但会被其他发布请求类型自动输出。
◦ default=false - 不在“新建表示”向导中预先选择,且不会被其他发布请求类型自动输出。
每个 <file> 元素在其与创建表示发布请求的 default 元素进行交互的定义中还可以具有 visible 和 locked 元素,例如,当使用 Windchill“新建表示”向导时。
• visible 用于确定是否可在“附加文件”列表中显示附加文件类型。
• locked 用于确定用户是否可以选择附加文件类型的输出。设置 locked=true,将从“附加文件”列表中删除复选框,以防止 <file> 元素中的默认设置被更改。如果设置为 locked=false,将显示复选框。
这两个元素以及 default 的设置可提供多种不同的输出和显示,如下面的示例中所示。
• 该文件会显示在“附加文件”列表中,并进行发布。文件名旁边没有复选框,因此用户无法更改设置。
default="true" locked="true" visible="true"
• 文件已发布,但未显示文件名,因此,用户无法选择该文件。(锁定操作不可行,因为用户无法对其看不到内容进行设置更改。)
default="true" locked="true" visible="false"
• 文件将显示在“附加文件”列表中。用户可以选择或清除文件名旁边的复选框,以确定发布或不发布该文件。
default="true" locked="false" visible="true"
• 文件未被发布且不显示。用户不能执行任何操作。
default="false" locked="true visible="false"
每个 <file> 元素的定义中还可以有多个 <option> 元素。这些 <option> 元素用于将其他应用程序导出设置传递到工作器,例如:
<file display-label="iges 2D" type="iges" default="true" output-prefix="2d">
<option name="output_2d" value="true" />
</file>
<option> 元素的数量不受限制,但是选项的真实 "name" 和 "value" 必须能被工作器所识别。工作器所支持的文件类型选项记录在每个适配器的 Creo View MCAD Adapter Installation and Configuration Guide 中。
附加文件 - 每个 <file> 元素包含在要导出的附加文件类型列表中,并使用 <additional-files> 元素进行定义,如下所示。
<additional-files name="iges_files">
<file display-label="iges 2D" type="iges" default="true" outputPrefix="2d">
<option name="output_2d" value="true" />
</file>
<file display-label="iges 3D" type="iges" default="false" outputPrefix="3d">
<option name="output_2d" value="false" />
</file>
</additional-files>
"name" 属性用于引用其他元素中的此类附加文件类型定义 (请参阅下方 的 <publish> 元素)。可以有任意数量的 <file> 元素包含在 <additional-files> 列表中。
<additional-files> 元素可通过两种方式使用:
• 在根目录 <rules> 元素下 - 适用于所有 <authoring-application> 元素。
• 在某个特定 <authoring-application> 元素下 - 仅适用于某特定创作应用程序的 <authoring-application> 规则。
在 <publish> 元素中引用 - 要参考 additional-files 定义,需向 <publish> 元素添加 additional-files 属性,并以如下所示方式指定其名称。
<publish display-label=”iges files” on="checkin" additional-files="iges_files"/>
此属性也可以与 param-set 和 output 属性结合使用。
由于 param-set、output和 additional-files 都属于某个特定 <publish> 元素的一部分,所以它们都密切相关。但是,param-set 和 output 属性用于后发布活动 (例如,Arbortext),而 additional-files 用于实际发布过程中 (主要是 CAD 和多保真度发布),所以它们两个可能并不会经常一同使用。output 属性无法与 additional-files 属性结合。还要注意发布元素 display-label 属性的说明。display-label 属性的值,在创建表示发布请求期间显示在新建表示向导的 Creo View Output Options 列表中。
如果仅有一个 <publish on=”create-representation"> 元素,那么将仅显示该选项,但是如果有多个 <publish on=create-representation> 元素,那么每个都是一个单独的输出选项,并在顶部显示一个名为 All 的附加选项。如果选择了选项 All,则会针对每个 <publish on=create-representation> 元素创建单独的作业;如果选择的是除了 All 之外的任何选项,则仅支持 <publish on=”create-representation"> 元素 (和相应的 additional-files)。
如果指定 display-label,那么它就是表示说明的默认值。如果不需要在表示上设置说明,则设置
display-label=””
如果没有为 <publish on=create-representation> 元素指定 display-label,则 param-set、additional-files 和 evaluate-rules-on-republish 属性的字串串接将用作显示名称。以下示例包括两个 <publish on=”create-representation"> 元素,一个显示标签,另一个没有。
<publish on="create-representation" additional-files="dxf_iges_step_files">
<param-set-ref name="PostPublish_STEP" />
<param-set-ref name="PostPublish_IGES_DXF" />
</publish>
<publish on="create-representation" display-label="Fred's Publish Options"
additional-files="dxf_iges_step_files">
<param-set-ref name="PostPublish_STEP" />
<param-set-ref name="PostPublish_IGES_DXF" />
</publish>
条件元素
更高版本的 <condition> 元素使用户能够设置规则以便在 EPMDocument 上查询更多属性,例如生命周期状态 (如,In Work、Released)、CAD 类型 (如,Part、Assembly) 和容器。这包括对 AND、OR 和 NOT 等一些逻辑运算符的说明
属性 - 基础属性元素如下所示:
<attribute name="epmdoc_lifeCycleState" value="Released" />
此元素的 name 属性是要在计算 EPMDocument 时检查的属性。查找全部可用属性的一种方法是在 Creo View 中打开一个表示并查看属性。您将会看到一系列 epmdoc_* 属性,它们都可以用于这些发布规则。此外,任何相关 WTPart 的属性也可供使用。它们在 Creo View 中也都可见,并显示为 part_* 格式。
在此示例中,value 属性是要作为比较对象的值。如果 EPMDocument 的值与此元素的 value 相等 (区分大小写),则此属性被视为 true。
用户也可以不使用 value,而是通过 regex XML 属性来使用正则表达式,如下例所示:
<attribute name="epmdoc_CADName" regex=".*\.asm" />
在这种情况下,只要正则表达式模式返回此 EPMDocument 的匹配值,该属性就会被视为 true。
attribute 元素的另一个用途是检查某个属性在对象中是否存在,但它并不关注具体的值。这将不会使用 name 或 regex,它看上去类似于:
<attribute name="MyIBA" />
Instance-of - <instance-of> 元素的用法与 <attribute> 元素类似,只不过它是用来查看计算的对象是否为指定类型。它看上去类似于:
<instance-of type=”wt.epm.EPMDocument” />
如果对象是 EPMDocument,则它将在发布规则中计算为 true。或者,您也可以使用:
<instance-of type="wt.doc.WTDocument" />
如果对象是 WTDocument,它将在发布规则中计算为 true。
structure - <structure> 元素如下所示:
<structure type=”epm” />
<structure> 与现有的 <structure-type type="epm"> 元素类似,并具有相同的行为。有关这一新元素的详细信息,请参阅“发布规则元素的兼容性”。
Logical Operators - attribute、instance-of 和 structure 等元素可以单独使用,但是如果通过逻辑运算符将其组合到一起,则功能会变得更加强大。新支持的运算符有 AND、OR 和 NOT。例如:
<and>
<attribute name="epmdoc_lifeCycleState" value="Released" />
<attribute name="epmdoc_docType" value="Assembly"/>
</and>
在本例中,为使语句为真,正在计算的对象必须为装配和已发布状态。OR 的使用方式极为类似:
<or>
<attribute name="epmdoc_lifeCycleState" value="Released" />
<attribute name="epmdoc_lifeCycleState" value="In Work" />
</or>
在此示例中,该对象状态为 Released 或 In Work。<and> 和 <or> 可以有两个以上的子元素;但至少需要两个。例如:
<and>
<attribute name="epmdoc_lifeCycleState" value="Released" />
<attribute name="epmdoc_docType" value="Assembly"/>
<instance-of type=”EPMDocument” />
</and>
<NOT> 以类似的方式工作,但可以仅有一个子元素。下面的示例表明正在计算的对象“未发布”:
<not>
<attribute name="epmdoc_lifeCycleState" value="Released" />
</not>
要添加这些语句的能力,可以使用相互嵌套的逻辑运算符来创建复杂的计算。下面的示例表明这是一个处于“正在工作”或“已发布”状态的装配:
<and>
<attribute name="epmdoc_docType" value="Assembly"/>
<or>
<attribute name="epmdoc_lifeCycleState" value="In Work"/>
<attribute name="epmdoc_lifeCycleState" value="Released"/>
</or>
</and>
接下来的示例表明该对象处于“正在工作的绘图”或“已发布的装配”状态
<or>
<and>
<attribute name="epmdoc_lifeCycleState" value="In Work"/>
<attribute name="epmdoc_docType" value="Drawing"/>
</and>
<and>
<attribute name="epmdoc_docType" value="Assembly"/>
<attribute name="epmdoc_lifeCycleState" value="Released"/>
</and>
</or>
嵌套的深度没有层级限制。
条件封套 - 上述全部元素都必须封装在 <条件> 元素中,如下所示:
<condition name="In Work">
<attribute name="epmdoc_lifeCycleState" value="In Work" />
</condition>
<if> 元素 (参见下方) 将使用 "name" 属性来引用此条件。<condition> 元素可以位于根 <rules> 元素下,这时它们可用于全部 <authoring-application> 元素,它们也可以位于特定的 <authoring-application> 下,这时只能用在该上下文中。"name" 属性在整个发布规则文档中必须唯一。下面是另一个使用逻辑运算符的示例:
<condition name="Released Assembly”>
<and>
<attribute name="epmdoc_lifeCycleState" value="Released" />
<attribute name="epmdoc_docType" value="Assembly"/>
</and>
</condition>
if condition - 要使用已定义的 <condition> 元素控制发布,需要按以下方式使用 <if> 元素:
<if condition="Released Assembly">
<publish on="checkin" />
<publish on="create-representation" />
<publish on="schedule" />
</if>
此处,将在规则中定义名称为 Released Assembly 的条件 (如上所述)。
发布规则元素的兼容性
您不能将较高版本的 <condition>/<if> 或 <additional-files> 元素与用于先前条件计算的较旧条件元素 (<epm-number>、<epm-iba>、<epm-type> 和 <structure-type>) 一同使用。通过上述旧条件元素创建的发布规则文件可以像先前一样继续使用,但是,如果选择使用一个较新的元素后,则“旧”元素将无法再使用。
Migration - 以下是如何从发布规则文件中的旧条件元素移动到较新元素的一些示例:
较旧的:
<epm-number number="01-12345.PRT">
<publish on="checkin" />
</epm-number>
较新的:
<condition name="specific epm number">
<attribute name="epmdoc_number" value="01-12345.PRT" />
</condition>
<if condition="specific epm number">
<publish on="checkin" />
</if>
较旧的:
<epm-iba iba="MyIBA" value="true">
<publish on="checkin" />
</epm-iba>
较新的:
<condition name="iba with value">
<attribute name="epmdoc_MyIBA" value="true" />
</condition>
<if condition="iba with value">
<publish on="checkin" />
</if>
较旧的:
<epm-iba iba="MyIBA">
<publish on="checkin" />
</epm-iba>
较新的:
<condition name="iba without value">
<attribute name="epmdoc_MyIBA" />
</condition>
<if condition="iba without value">
<publish on="checkin" />
</if>
较旧的:
<epm-type type="EPMDocument">
<publish on="checkin" />
</epm-iba>
较新的:
<condition name="epm type">
<instace-of type="EPMDocument" />
</condition>
<if condition="epm type">
<publish on="checkin" />
</if>
较旧的:
<structure-type type="epm">
<publish on="checkin" />
</epm-iba>
较新的:
<condition name="structure type">
<structure type="epm" />
</condition>
<if condition="structure type">
<publish on="checkin" />
</if>
重新发布
为处理重新发布,会在重新发布期间参考原始发布期间存储在表示上的文件。该文件名为 publish_params.xml,且 content-role-type 为 PUBLISH_PARAMS。在重新发布期间,无论是“表示/注释”表格中的重新发布,还是安排的重新发布,该文件都用于确保重新发布期间所应用的选项与原始发布期间所应用的选项相同。由于这确保了在重新发布期间所创建的附加文件与在原始发布期间所创建的附加文件相同,因此会对附加文件概念产生影响。先前基于用户所选附加文件发布的附加文件类型的详细信息 (如果是手动创建表示) 将存储在 publish_params.xml 文件中。
在手动发布期间存储所选择的文件十分必要。例如,如果将新的附加文件添加到发布规则,那么默认情况下,重新发布时将创建该附加文件。如果文件已被移除,则不会创建附加文件。但是,如果 publish_params.xml 文件中的“默认”属性发生了更改,则需要重新创建最初创建的文件。由于选择列表应始终表示原始发布,因此在后续重新发布过程中,选择列表不得发生任何更改。
publish_params.xml 文件格式 - 以下是重新发布 publish_params.xml 文件的示例:
<result>
<publish on="create-representation" output="PDF"
param-set="Share with Arbortext"
additional-files=”standard_cad_xport_files”
evaluate-rules-on-republish="true" version="1.2">
<post-publish name="name">
GDD_of_01-2_VALVE_TIMING_SPROCKET.PRT<post-publish>
<post-publish name="delegate">
com.ptc.wvs.server.publish.EPMPostPublishDelegate</post-publish>
<post-publish name="published-content-link">create</post-publish>
<post-publish name="type">DynamicDocument</post-publish>
<file displayName="iges 2D" type="iges"
default="true" outputPrefix="2d">
<option name="output_2d" value="true" />
</file>
<file displayName="iges 3D" type="iges"
default="false" outputPrefix="3d">
<option name="output_2d" value="false" />
</file>
<file displayName="step file" type="step"
default="true" outputPrefix="step" />
</publish>
<user-selections>
<selected>
<file displayName="iges 2D" type="iges"
default="true" outputPrefix="2d">
<option name="output_2d" value="true" />
</file>
<file displayName="iges 3D" type="iges"
default="false" outputPrefix="3d">
<option name="output_2d" value="false" />
</file>
</selected>
<unselected>
<file displayName="step file" type="step"
default="true" outputPrefix="step" />
</unselected>
</user-selections>
</result>
在以上示例中:
• 当前根节点为 <result>。之前,它仅为 <publish> 部分。这是为了容纳 <user-selections> 和 <publish>。
• <publish> 下有一个新的 <file> 元素列表,表示发布规则文件中选定列表的所有附加文件。该列表对应 <publish> 元素上的新 "additional-files" 属性。
• 添加 <user-selections> 元素以存储用户实际选择的文件的列表。该元素下有两个列表,<selected> 和 <unselected>。
• 在 <publish> 标记上添加 evaluate-rules-on-republish 属性,以指示是否必须在重新发布中重新评估 (而不是查看) 发布规则文件。如果将 evaluate-rules-on-republish 属性设置为 true,那么,重新发布时不会使用 publish_params.xml 文件,而是对发布规则进行评估。如果将 evaluate-rules-on-republish 属性设置为 false,则重新发布时将使用该文件。evaluate-rules-on-republish 属性也可以作为规则元素的属性。在规则级别,任何未指定 evaluate-rules-on-republish 属性的发布元素都将使用此属性作为默认值。
根据出厂设置,如果未在“发布规则”中进行设置,则重新发布过程中的 evaluate-rules-on-republish 属性默认为 false。在最初发布请求中对“发布规则”进行评估时,“发布规则”与“表示”一起储存在 publish_params.xml 文件中。如果 publish_params.xml 中尚未包含 evaluate-rules-on-republish="true",则在重新发布现有“表示”时不会对规则进行重新评估,无论状态为“更改”还是“手动”。
wvs.properties 中存在两组特性,用于在重新发布期间对发布规则评估进行更精确的配置控制:
• publish.evaluaterulesonrepublish.default - 在 evaluate-rules-on-republish 不存在的情况下,用于提供定义默认设置的机制。
• publish.evaluaterulesonrepublish.override - 在 evaluate-rules-on-republish 存在的情况下,用于提供覆盖此属性的机制。
下面对两组新属性进行说明。
以下特性用于控制创建表示时是否为现有表示 (未在“发布规则”文件中指定 evaluate-rules-on-republish 标志时为重新发布提交的表示) 重新评估“发布规则”。这些属性的有效值为 true 或 false。没有任何属性时,默认值为 false。创作应用程序特定的属性始终优先于所有创作应用程序属性。
特性
|
说明
|
publish.evaluaterulesonrepublish.default
|
默认值:False
在重新发布期间,为包括在 publish.usesPublishRules 特性中的所有创作应用程序指定 evaluate-rules-on-republish 的默认行为。
|
publish.evaluaterulesonrepublish.default。<AUTHORING_APP>
|
默认值:False
在重新发布期间,为包括在 publish.usesPublishRules 特性中的特定创作应用程序指定 evaluate-rules-on-republish 的默认行为。
|
将表示提交到重新发布之后,以下特性将控制是否覆盖创建表示时在“发布规则”文件中指定的 evaluate-rules-on-republish 标志,或者如何对该标志进行覆盖。如果创建表示时并未在“发布规则”文件中指定 evaluate-rules-on-republish 标志,那么这些特性将不会产生影响。而是使用 publish.evaluaterulesonrepublish.default 特性所指定的默认值。
创作应用程序特定的属性始终优先于所有创作应用程序属性。有效值为 true 或 false。true 值意味着将始终评估重新发布的规则,而 false 值则表示无论表示上 evaluate-rules-on-republish 标志最初如何设置,都不会评估重新发布的规则。上述两个特性都不存在时,则默认值为空,这意味着将不覆盖最初指定的 evaluate-rules-on-republish 值。
特性
|
说明
|
publish.evaluaterulesonrepublish.override
|
默认值:False
在重新发布期间,为包括在 publish.usesPublishRules 特性中的所有创作应用程序覆盖 evaluate-rules-on-republish 默认行为。
|
publish.evaluaterulesonrepublish.override。<AUTHORING_APP>
|
默认值:False
在重新发布期间,为包括在 publish.usesPublishRules 特性中的特定创作应用程序覆盖 evaluate-rules-on-republish 默认行为。
|