高级自定义 > 业务逻辑自定义 > 部署 Arbortext 自定义 > 匿名 Arbortext 访问
  
匿名 Arbortext 访问
过程概述
要在 Windchill 中托管 XML 应用程序并在 Arbortext Editor 中对其进行使用:
1. 创建一个 custom 目录结构的 zip 存档。
2. 登录到 Windchill,找到一个产品或存储库 (或根据需要创建一个),然后为容器选择“文件夹”二级导航。
* 
仅支持产品和存储库。此功能不支持其他容器 (站点、组织、程序、项目)。
3. 创建一个文件夹 (如果需要) 以保存 Arbortext 自定义。此文件夹可以位于顶层,也可以嵌套在其他任何文件夹中 (任意深度)。
4. 在同一产品或存储库中,打开“首选项管理”实用程序,展开 Arbortext 首选项组,然后找到“自定义文件夹”首选项。
5. 编辑该首选项并输入所需文件夹的名称和路径。以下是一些示例值:
说明
Arbortext 自定义
文件夹名称中有空格的顶层文件夹。
Arbortext/应用程序
名为 "Arbortext" 的顶层文件夹,其子文件夹名为“应用程序”。
设置此首选项后,指定文件夹中的任何 WTDocument 对象现在都可以通过匿名 HTTP 使用。(有关构造 URL 的特定详细信息,将在本文档的后面部分介绍)。
6. 将 zip 文件上载到所需的文件夹中。在 Windchill 中创建文档时,“类型”和“CAGE 代码”值并不重要。
7. 将存档的匿名访问 URL 放入浏览器,并确认您可以成功下载压缩的存档。有关匿名访问 URL 的信息,请参阅“匿名访问 URL 格式”一节。
8. APTCUSTOM 环境变量设置为 zip 存档的匿名访问 URL,然后启动 Arbortext Editor 以使用自定义设置。
* 
有关压缩的 Arbortext 自定义的详细信息,请参阅 Arbortext 帮助中心的 "Deploying zipped customizations" 一节 (“编程”> Arbortext Customizer's Guide > Custom Applications > Deploying Zipped Customizations)。
匿名访问 URL 格式
类型
URL 格式
存储库
http://server:port/Windchill/servlet/WindchillGW/com.ptc.arbortext.windchill.anonymous.AnonymousAccessDownloader/lib/orgName/libraryName/name[?params]
产品
http://server:port/Windchill/servlet/WindchillGW/com.ptc.arbortext.windchill.anonymous.AnonymousAccessDownloader/product/orgName/productName/name[?params]
* 
文件夹名称本身未包含在 URL 中。文件夹名称在“自定义文件夹”首选项中定义。有关设置此首选项的信息,请参阅“配置匿名访问的文件夹路径”一节。
* 
与 HTTP URL 一样,URL 中的某些字符 (如空格、冒号和非拉丁字符) 需要转义;例如,空格字符将需要替换为 %20。
URL 的 name 部分可以是以下三种内容之一:
Windchill 中的对象编号
Windchill 中的对象名称
基础文件的文件名。通常,这是最初上载的文件名。
由于 Windchill 中的文件夹可能包含具有相同名称或基础文件名的多个对象,因此确保获得正确对象的最安全方法是使用其编号。名称冲突应该很少。
例如,假设您将名为 hello.txt 的文件上载到此文件夹中。对象名称可以是 "hello",示例对象编号可以是 "0000007324",文件名可以是 "hello.txt"。在这种情况下,其中的任何一个都可用于在 URL 中指定此对象。
查找与给定字符串匹配的对象时,匹配编号的优先级最高。如果未找到匹配的编号,则将与第一个具有相同名称的对象进行匹配。如果未找到匹配的名称,最后将与第一个具有相同文件名的对象进行匹配。
通常,不太可能会有多个具有相同名称或文件名的对象。但是,如果存在这种情况,则可以使用该编号安全访问所需的对象。
查询参数的可选组合如下:这些参数的顺序并不重要。
参数
说明
(无参数)
从最新版本中选择最新小版本;未计算工作 (已检出) 的小版本数。
state
将选择与给定生命周期状态匹配的最新版本中的最新小版本。
版本
将选择指定版本的最新小版本。
小版本
小版本参数将被忽略。这仅与版本参数一起使用。
状态,小版本
小版本参数将被忽略。请参阅上面的“状态”。
状态,版本
将选择与给定状态匹配的指定版本中的最新小版本。
版本,小版本
将选择指定版本中的指定小版本。
状态,版本,小版本
小版本参数将被忽略。请参阅上面的“状态,版本”。
查询参数用法示例:
查询参数
说明
.../custom.zip.xml?version=C&iteration=2
custom.zip 的 C.2 版本
.../custom.zip?state=Approved
标记为“已批准”的最新版本。
.../custom.zip?state=Approved&version=B
使用版本 B 标记为已批准的最新版本。
.../custom.zip?version=B
B 版中的最新小版本。
如果您指定文件夹中不存在的对象的名称,或者该对象的任何小版本都与给定的请求参数不匹配,则匿名访问 URL 将向调用者返回 404 响应。未找到请求的对象时,这是正常的 HTTP 行为。
* 
选择“最新”版本
在处理版本为 Windchill 的对象时,约定“最新”对象首先通过版本选择,然后通过小版本选择。即使该小版本是最新创建的,版本 D 中的最新小版本也始终比版本 C 中的最新小版本“更新”。例如,当使用 web UI 浏览文件夹内容时,即使其他版本中有更新的小版本,您也始终会看到最新版本的最新小版本。
匿名访问 URL 的版本选择以这种方式工作。例如,如果指定的状态参数没有版本,并且 A.4 和 B.2 都具有请求的状态,则无论何时创建 A.4,始终都会返回 B.2。
可用于匿名访问的对象
尽管此功能主要是为了允许 Arbortext 产品访问 Windchill 管理的 XML 应用程序,但也可以访问其他文件类型,例如 word 文档或文本文件。为了使匿名访问 URL 起作用,目标对象必须是 WTDocument 对象 (或其子类型)。您无法访问其他 Windchill 对象类型,例如 EPMDocument 对象 (CAD 文件或 Arbortext Editor 创建的 XML 文件) 或 WTPart 结构。
配置匿名访问的文件夹路径
“自定义文件夹”首选项指定包含压缩格式的 Arbortext 自定义的文件夹的路径。指定文件夹中所有 Windchill 文档中的内容都可以通过特殊构造的 URL 获得,而无需进行身份验证。
要设置此首选项,请导航至“站点” > “实用程序” > “首选项管理” > Arbortext > “自定义文件夹”
站点/组织:要禁用匿名访问,请为此首选项设置一个空值,然后选中“锁定”复选框。
对于产品/存储库:指定此产品或存储库中包含压缩格式的 Arbortext 自定义的文件夹的路径。此首选项的空值表示不会匿名公开产品或存储库中的文件夹
* 
有关压缩的 Arbortext 自定义的详细信息,请参阅 Arbortext 帮助中心的 "Deploying zipped customizations" 一节 (“编程”> Arbortext Customizer's Guide > Custom Applications > Deploying Zipped Customizations)。
默认情况下,此首选项的值为空。如果产品或存储库的此首选项的值为空,则不允许对该容器进行匿名访问。
管理员强制禁用此功能的一种方法是,将站点或组织级别的首选项设置为空值并将其锁定。由于 Windchill 的常规继承规则,这将强制所有子产品和存储库容器的此首选项也具有空值,因此该功能将被完全禁用。
以下是一些示例首选项值:
Arbortext Customizations:创建一个名为 "Arbortext Customizations" 的顶层文件夹,该文件夹名称中包括一个空格。
Arbortext/Applications:创建一个名为 "Arbortext" 的父文件夹,并创建一个名为 "Applications" 的子文件夹。
假设在项目或程序中为此首选项设置了非空值。该设置将不起作用,因为该功能不适用于那些容器类型。更准确地说,没有可以构建的 HTTP URL 来从这些容器访问任何此类文件夹。
假设在站点或组织中为此首选项设置了非空值。这实际上是不可取的,因为由于继承规则,所有子容器都将继承此值 (除非这些子容器覆盖自己的特定值)。这意味着,任何具有与首选项值相匹配的文件夹路径的子产品或存储库,都将以匿名方式显示该文件夹的内容。
设置首选项的值时,如果将非空值分配给站点、组织、项目或程序容器上下文,则将显示警报。分配给站点或组织容器的非空值将强制将该值分配给每个子容器,并且可能会无意间暴露材料。分配给项目或程序的非空值不起作用,并且没有警报,用户可能会对意外结果感到困惑。
列出可用于匿名访问的对象
可通过匿名访问功能生成可用对象的列表。这可帮助您确定是否有错误显示任何对象,并可帮助您为每个对象提供 HTTP URL。生成可通过匿名访问获得的对象列表仅限于具有管理员访问权限的用户。
要生成匿名共享对象的列表:
1. 打开 Windchill Shell。有关详细信息,请参阅 Windchill Shell
2. cd bin
3. ant -f anonymousAccess.xml listAvailableResources
4. 输入您的管理员凭证。
可用项的示例输出
输出包含可通过匿名访问来访问的每个文档的条目,并且每个条目会列出组织、容器 (产品或存储库) 和包含文档的文件夹以及文档名称和可用于匿名访问文档的 URL 的基干。
******************************************************************************
!+! STARTED @ Fri Oct 14 13:28:10 EDT 2011
******************************************************************************
Log file is '<Windchill>\Windchill\buildlogs\0000-anonymousAccess.log'
------------------------------------------------------------------------------
!+! ENTERING Anonymous Access
------------------------------------------------------------------------------
listAvailableResources:
[echo] ------------------------------------------------------------------
[echo] The following is a list of documents in Windchill that are exposed
[echo] to anonymous http access. Each entry lists the Organization,
[echo] Product or Library, and Name of the document as well as the Url
[echo] used to access it.
[echo] ------------------------------------------------------------------
[java]
[java] Organization: Demo Organization
[java] Library: New Library
[java] Folder: /Shared Folder
[java] Document: Lib Item 1
[java] URL: http://wcserver:1600/Windchill/servlet/WindchillGW/
com.ptc.arbortext.windchill.anonymous.AnonymousAccessDownloader/lib/
Demo%20Organization/New%20Library/Lib%20Item%201
[java]
[java]
[java] ------------------------------------------------------------------
[java]
[java] Organization: Demo Organization
[java] Product: GOLF_CART
[java] Folder: /Apps
[java] Document: Thing1
[java] URL: http://wcserver:1600/Windchill/servlet/WindchillGW/
com.ptc.arbortext.
windchill.anonymous.AnonymousAccessDownloader/product/Demo%20Organization/
GOLF_CART/Thing1
[java]
[java] -------------------------------------------------------------
[java]
[java] Organization: Demo Organization
[java] Product: GOLF_CART
[java] Folder: /Apps
[java] Document: Thing 2
[java] URL: http://wcserver:1600/Windchill/servlet/WindchillGW/
com.ptc.arbortext.
windchill.anonymous.AnonymousAccessDownloader/product/
Demo%20Organization/GOLF_CART/Thing%202
[java]
[echo] ------------------------------------------------------------------
[echo] Example:
[echo] http://MyServerName/Windchill/servlet/WindchillGW/
com.ptc.arbortext.
windchill.anonymous.AnonymousAccessDownloader/lib/ExampleOrganization/
ExampleLibraryName/ExampleDocName
[echo] ------------------------------------------------------------------
******************************************************************************
!+! FINISHED @Fri Oct 14 13:28:19 EDT 2011
!+! Log: <Windchill>\Windchill\buildlogs\0000-anonymousAccess.log
******************************************************************************
BUILD SUCCESSFUL
Total time: 9 seconds
请注意,示例 URL 不包含实际的 hostnameweb-app 值,原因在于这些值无法通过命令行界面使用。显示的 URL 相当长,并且在命令提示符下跨行断行。查看列表开始处所引用的日志文件是查看输出的一种更简便的方法。
此列表包括在整个 Windchill 安装过程中共享的所有文档对象,其中包括所有组织中的所有产品和存储库。
无可用项的示例输出
在以下三种情况下,不会显示任何对象:
1. 已将“自定义文件夹”首选项设置为空值并在站点级别锁定。
2. 未匿名公开任何文件夹。
3. 至少有一个文件夹是匿名公开的,但其中不包含任何 WTDocument 对象。
如果当前未使用匿名访问功能共享任何文档,则会生成以下输出:

******************************************************************************
!+! STARTED @ Fri Oct 14 14:19:59 CDT 2011
******************************************************************************
Created log dir <Windchill>\Windchill\buildlogs'
------------------------------------------------------------------------------
!+! ENTERING Anonymous Access[<Windchill>\Windchill\bin\anonymousAccess.xml]
------------------------------------------------------------------------------
listAvailableResources:
[echo] ------------------------------------------------------------------
[echo] The following is a list of documents in Windchill that are exposed
[echo] to anonymous http access. Each entry lists the Organization,
[echo] Product or Library, and Name of the document as well as the Url
[echo] used to access it.
[echo] ------------------------------------------------------------------
[java]
[java] No shared documents found.
[java]
[echo] ------------------------------------------------------------------
[echo] Example:
[echo] http://MyServerName/Windchill/servlet/WindchillGW/com.ptc.arbortext.
windchill.anonymous.AnonymousAccessDownloader/lib/ExampleOrganization/
ExampleLibraryName/ExampleDocName
[echo] ------------------------------------------------------------------
********************************************************************************
!+! FINISHED @ Fri Oct 14 14:20:23 CDT 2011
!+! Log: <Windchill>\Windchill\buildlogs\0000-anonymousAccess.log
******************************************************************************
BUILD SUCCESSFUL
Total time: 24 seconds