게시 규칙에서 조건 사용
추가 파일 유형 구성
WVS는 게시 중 추가 파일 유형 생성에 대한 지원을 제공합니다. 게시 규칙 XML 정의를 통해 추가 파일 유형을 구성할 수 있습니다. 이 단원에서는 추가 파일 유형 기능을 지원하는 게시 규칙을 설명합니다.
|
표현/주석 테이블에 사용 가능한 파일 유형 목록을 표시하는 방법에 대한 자세한 내용은 표현 및 주석 표시를 참조하십시오.
|
추가 파일 형식 요소
게시 중에 추가 파일 유형을 생성하도록 구성하려면 게시 규칙 XML에서 다음 요소를 사용합니다.
file 및 additional-Files
이러한 게시 규칙 XML 요소에 대한 간단한 예는 <Windchill>/codebase/com/ptc/wvs/server/xml 디렉토리의 PublishRules-AdditionalFiles.xml 예제 파일을 참조하십시오.
파일 - 생성될 수 있는 각 추가 파일 유형은 <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 새 표현 마법사를 사용하는 create-representation 게시 요청의 경우 이 속성은 출력을 위해 미리 선택할 추가 파일 유형을 식별합니다. 체크 인 및 기타 게시 요청 유형의 경우 게시할 해당 추가 파일 유형을 식별합니다.
◦ default=true - 새 표현 마법사에서 미리 선택되어 있지만 다른 게시 요청 유형에 의해 자동 출력됩니다.
◦ default=false - 새 표현 마법사에서 미리 선택되어 있지 않으며 다른 게시 요청 유형에 의해 자동 출력되지 않습니다.
또한 각 <file> 요소의 정의 내에 Windchill 새 표현 마법사를 사용할 때와 같이 create-representation 게시 요청에 대한 default 요소와 상호 작용하는 visible 및 locked 요소가 포함될 수 있습니다.
• 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="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> 요소의 수에는 제한이 없지만 옵션의 실제 "이름"과 "값"을 작업자가 인식할 수 있어야 합니다. 작업자에서 지원하는 파일 유형 옵션이 Creo View MCAD Adapter Installation and Configuration Guide(Creo View MCAD 어댑터 설치 및 구성 안내서)에서 각 어댑터에 대해 문서화되어 있습니다.
추가 파일 - 각 <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> 요소 참조). <additional-files> 목록의 <file> 요소 수에는 제한이 없습니다.
<additional-files> 요소는 다음 두 가지 방법으로 사용될 수 있습니다.
• 루트 <rules> 요소 아래에서 - 모든 <authoring-application> 요소에 적용합니다.
• 하나의 특정 <authoring-application> 요소 아래에서 - 해당 특정 저장 응용 프로그램에만 해당되는 <authoring-application> 규칙에 적용합니다.
<publish> 요소 내에서 참조 - additional-files 정의를 참조하려면 아래에 나와 있는 대로 additional-files 속성을 <publish> 요소에 추가하여 해당 이름을 지정합니다.
<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 속성의 값은 create-representation 게시 요청 시 새 표현 마법사의 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=””
display-label이 <publish on=create-representation> 요소에 대해 지정되지 않은 경우 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”> 요소와 비슷하며 같은 방식으로 동작합니다. 이 새 요소에 대한 자세한 내용은 아래의 "게시 규칙 요소의 호환성"을 참조하십시오.
논리 연산자 - attribute, instance-of 및 structure 요소를 따로 사용할 수 있지만 논리 연산자로 이들 요소를 결합하면 훨씬 더 강력해집니다. 지원되는 새로운 연산자는 and, or 및 not입니다. 예:
<and>
<attribute name="epmdoc_lifeCycleState" value="Released" />
<attribute name="epmdoc_docType" value="Assembly"/>
</and>
이 예에서 문이 true가 되려면 평가 중인 객체가 모두 어셈블리이고 릴리즈됨 상태여야 합니다. 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> 요소로 래핑해야 합니다.
<condition name="In Work">
<attribute name="epmdoc_lifeCycleState" value="In Work" />
</condition>
"name" 속성은 <if> 요소(아래 참조)에서 이 조건을 참조하는 데 사용됩니다. <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>)와 함께 사용할 수 없습니다. 이전 조건 요소를 사용하여 작성된 게시 규칙 파일은 이전과 같이 계속 작동하지만 최신 요소 중 하나를 사용하기로 선택하는 경우 "이전" 요소를 더 이상 사용할 수 없습니다.
마이그레이션 - 다음은 게시 규칙 파일의 이전 조건 요소를 최신 조건 요소로 이동하는 방법에 대한 몇 가지 예입니다.
이전:
<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 파일에서 "default" 속성이 변경되는 경우 처음에 작성된 파일을 재작성해야 합니다. 선택 목록은 항상 원래 게시를 나타내야 하므로 이후에 다시 게시할 때 변경되지 않아야 합니다.
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"를 포함하지 않은 경우 해당 규칙은 상태 변경 또는 수동으로 기존 표현을 다시 게시할 때 재평가되지 않습니다.
Windchill 10.2 M010에서 다시 게시 중 게시 규칙 평가에 대한 구성을 더 잘 제어할 수 있도록 다음 두 그룹의 등록 정보가 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입니다. 표현에서 evaluate-rules-on-republish 플래그가 원래 무엇으로 설정되었는지와 상관없이 true 값은 다시 게시할 때 규칙을 항상 평가함을 의미하고 false 값은 다시 게시할 때 규칙을 평가하지 않음을 의미합니다. 등록 정보가 없는 경우 기본값은 null입니다. 이는 원래 지정된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 동작을 덮어씁니다.
|