Show Menu
화제×

양식 구조

양식에 대한 설명은 스키마 xtk:form ​문법을 준수하는 구조화된 XML 문서입니다.
양식 이름과 네임스페이스를 채우려면 입력 양식의 XML 문서에 <form> 이름 네임스페이스 특성이 있는 루트 요소가 있어야 합니다.
<form name="form_name" namespace="name_space">
...
</form>

기본적으로 양식은 동일한 이름 및 네임스페이스의 데이터 스키마와 연결됩니다. 양식을 다른 이름과 연결하려면 요소의 엔티티-스키마 <form> 속성을 스키마 키 이름으로 설정합니다. 입력 양식의 구조를 설명하려면 "cus:recipient" 예제 스키마를 사용하여 인터페이스에 대해 설명하겠습니다.
<srcSchema name="recipient" namespace="cus">
  <enumeration name="gender" basetype="byte">    
    <value name="unknown" label="Not specified" value="0"/>    
    <value name="male" label="Male" value="1"/>   
    <value name="female" label="Female" value="2"/>   
  </enumeration>

  <element name="recipient">
    <attribute name="email" type="string" length="80" label="Email" desc="E-mail address of recipient"/>
    <attribute name="birthDate" type="datetime" label="Date"/>
    <attribute name="gender" type="byte" label="Gender" enum="gender"/>
  </element>
</srcSchema>

예제 스키마를 기반으로 하는 입력 양식입니다.
<form name="recipient" namespace="cus">
  <input xpath="@gender"/>
  <input xpath="@birthDate"/>
  <input xpath="@email"/>
</form>

편집 컨트롤의 설명은 <form> 루트 요소에서 시작됩니다. 스키마의 필드 경로를 포함하는 <input> xpath ​특성이 있는 요소에 편집 컨트롤이 입력됩니다.
편집 컨트롤은 해당 데이터 유형에 자동으로 적용되며 스키마에 정의된 레이블을 사용합니다.
요소에 label <input> 속성을 추가하여 데이터 스키마에 정의된 레이블을 오버로드할 수 있습니다. <input label="E-mail address" xpath="@name" />
기본적으로 각 필드는 한 줄에 표시되며 데이터 유형에 따라 사용 가능한 모든 공간을 차지합니다.

서식 지정

컨트롤의 레이아웃은 HTML 표에 사용되는 레이아웃과 비슷하며, 컨트롤을 여러 열로 나누거나, 요소를 인터레이싱하거나, 사용 가능한 공간의 용도를 지정할 수 있습니다. 그러나 서식을 지정하면 비율을 기준으로 영역을 나눌 수 있습니다.객체의 고정 차원은 지정할 수 없습니다.
위의 예제의 컨트롤을 두 열에 표시하려면:
<form name="recipient" namespace="cus">
  <container colcount="2">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email"/>
  </container>
</form>

colcount 특성이 있는 <container> 요소를 사용하면 자식 컨트롤을 두 열에 강제 표시할 수 있습니다.
컨트롤의 colspan 특성은 값에 입력한 열 수로 컨트롤을 확장합니다.
<form name="recipient" namespace="cus">
  <container colcount="2">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
</form> 

이 컨테이너는 type="frame" 속성을 채우면 label 속성에 포함된 레이블로 자식 컨트롤 주위의 프레임을 추가합니다.
<form name="recipient" namespace="cus">
  <container colcount="2" type="frame" label="General">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
</form>

입력 양식의 서식을 지정하는 데 <static> 요소를 사용할 수 있습니다.
<form name="recipient" namespace="cus">
  <static type="separator" colspan="2" label="General"/>
  <input xpath="@gender"/>
  <input xpath="@birthDate"/>
  <input xpath="@email" colspan="2"/>
  <static type="help" label="General information about recipient with date of birth, gender, and e-mail address." colspan="2"/>
</form>

구분자 <static> 유형이 있는 태그를 사용하면 레이블 ​속성에 포함된 레이블이 있는 구분선을 추가할 수 있습니다.
도움말 유형이 있는 <static> 태그를 사용하여 도움말 텍스트가 추가되었습니다. 텍스트 컨텐츠는 label 속성에 입력됩니다.

컨테이너

컨테이너를 사용하면 일련의 컨트롤을 그룹화할 수 있습니다. 이러한 요소는 <container> 요소로 표현됩니다. 위에서 여러 열에 대한 컨트롤의 서식을 지정하는 데 사용되었습니다.
xpath 속성을 <container> 사용하면 자식 컨트롤 참조를 단순화할 수 있습니다. 그런 다음 컨트롤 참조는 상위 <container> 부모를 기준으로 합니다.
"xpath"가 없는 컨테이너의 예:
<container colcount="2">
  <input xpath="location/@zipCode"/>
  <input xpath="location/@city"/>
</container>

"location"이라는 요소에 "xpath"가 추가된 예:
<container colcount="2" xpath="location">
  <input xpath="@zipCode"/>
  <input xpath="@city"/>
</container>

컨테이너 유형

컨테이너는 페이지에서 서식이 지정된 필드 집합을 사용하여 복잡한 컨트롤을 구성하는 데 사용됩니다.

탭 컨테이너

탭 컨테이너는 탭에서 액세스할 수 있는 페이지의 데이터 형식을 지정합니다.
<container type="notebook">
  <container colcount="2" label="General">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
  <container colcount="2" label="Location">
    ...
  </container>
</container>

기본 컨테이너는 type="notebook" 속성으로 정의됩니다. 탭은 하위 컨테이너에서 선언되며 탭의 레이블은 레이블 속성에서 채워집니다.
style=" down|up (기본적으로) " 기능은 컨트롤 아래 또는 위의 탭 레이블의 세로 위치를 강제로 지정합니다. 이 기능은 선택 사항입니다. <container style="down" type="notebook"> ... </container>

아이콘 목록

이 컨테이너에는 표시할 페이지를 선택할 수 있는 세로 아이콘 막대가 표시됩니다.
<container type="iconbox">
  <container colcount="2" label="General" img="xtk:properties.png">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
  <container colcount="2" label="Location" img="nms:msgfolder.png">
    ...
  </container>
</container>

기본 컨테이너는 type="iconbox" 속성으로 정의됩니다. 아이콘과 연결된 페이지는 하위 컨테이너에서 선언됩니다. 아이콘의 레이블은 label 속성에서 채워집니다.
페이지의 아이콘은 img="<image>" 속성에서 채워집니다. <image> 여기서 은 이름과 네임스페이스로 구성된 키에 해당하는 이미지의 이름입니다(예: "xtk:properties.png").
이미지는 Administration > Configuration > Images 노드에서 사용할 수 있습니다.

가시성 컨테이너

동적 조건을 통해 컨트롤 세트를 마스크 처리할 수 있습니다.
이 예에서는 "성별" 필드의 값에 대한 컨트롤의 가시성을 보여 줍니다.
<container type="visibleGroup" visibleIf="@gender=1">
  ...
</container>
<container type="visibleGroup" visibleIf="@gender=2">
  ...
</container>

가시성 컨테이너는 속성 type="visibleGroup"으로 정의됩니다 . visibleIf 속성에 가시성 조건이 포함되어 있습니다.
조건 구문의 예:
  • visibleIf="@email='peter.martinezATneolane.net'" :문자열 유형 데이터에 대한 평등을 테스트합니다. 비교 값은 따옴표로 묶어야 합니다.
  • visibleIf="@gender >= 1 및 @gender != 2" :조건을 숫자 값으로 설정합니다.
  • visibleIf="@boolean1==true 또는 @boolean2==false" :부울 필드에서 테스트합니다.

컨테이너 활성화

이 컨테이너를 사용하면 동적 조건에서 데이터 세트를 활성화하거나 비활성화할 수 있습니다. 컨트롤을 비활성화하면 컨트롤이 편집되지 않습니다. 다음 예에서는 "성별" 필드의 값에서 컨트롤을 활성화하는 방법을 보여 줍니다.
<container type="enabledGroup" enabledIf="@gender=1">
  ...
</container>
<container type="enabledGroup" enabledIf="@gender=2">
  ...
</container>

활성화 컨테이너는 type="enabledGroup" 특성에 의해 정의됩니다. enabledIf 특성에 활성화 조건이 포함되어 있습니다.

메모리 목록 컨트롤

메모리 목록을 사용하면 목록 데이터 미리 로드를 사용하여 수집 요소를 편집할 수 있습니다. 이 목록은 필터링하거나 구성할 수 없습니다.
이러한 목록은 XML 매핑 컬렉션 요소 또는 볼륨 부족 링크에서 사용됩니다.

열 목록

이 컨트롤은 추가 및 삭제 단추가 포함된 도구 모음이 있는 편집 가능한 열 목록을 표시합니다.
<input xpath="rcpEvent" type="list">
  <input xpath="@label"/>
  <input xpath="@date"/>
</input>

목록 컨트롤은 type="list" 속성으로 채워져야 하며 목록의 경로는 컬렉션 요소를 참조해야 합니다.
열은 목록의 하위 <input> 태그에 선언됩니다. 열 레이블과 크기는 레이블 및 colSize 특성을 사용하여 강제할 수 있습니다.
정렬 순서 화살표는 ordered="true" 속성이 데이터 스키마의 컬렉션 요소에 추가될 때 자동으로 추가됩니다.
도구 모음 단추를 가로로 정렬할 수 있습니다.
<input nolabel="true" toolbarCaption="List of events" type="list" xpath="rcpEvent" zoom="true">
  <input xpath="@label"/>
  <input xpath="@date"/>
</input>

toolbarCaption ​속성은 도구 모음의 가로 정렬을 강제로 적용하고 목록 위에 제목을 입력합니다.

목록 확대

목록에 있는 데이터의 삽입 및 편집은 별도의 편집 양식에 입력할 수 있습니다.
<input nolabel="true" toolbarCaption="List of events" type="list" xpath="rcpEvent" zoom="true" zoomOnAdd="true">
  <input xpath="@label"/>
  <input xpath="@date"/>

  <form colcount="2" label="Event">
    <input xpath="@label"/>
    <input xpath="@date"/>
  </form>
</input>

편집 양식은 목록 정의 아래의 <form> 요소에서 완성됩니다. 입력 양식의 구조와 동일합니다. 목록의 Detail 태그에 zoom="true" <input> 특성이 완료되면 단추가 자동으로 추가됩니다. 이 속성을 사용하면 선택한 라인의 편집 양식을 시작할 수 있습니다.
zoomOnAdd="true" ​속성을 추가하면 목록 요소가 삽입될 때 편집 양식이 호출됩니다.

목록 속성

  • noToolbar :도구 모음을 숨깁니다(값 "true" 사용).
  • toolbarCaption :도구 모음 레이블 오버로드
  • toolbarAlign :도구 모음의 위치를 수정합니다(가능한 값:"vertical"|"horizontal")
  • img :목록에 연결된 이미지를 표시합니다.
  • 양식 :타깃팅된 요소의 편집 양식을 오버로드합니다.
  • 확대/축소 :타깃팅된 요소를 편집할 Zoom 단추를 추가합니다.
  • zoomOnAdd :추가에서 편집 양식을 시작합니다.
  • xpathChoiceTarget :를 추가하여 입력한 링크에서 선택 양식을 시작합니다.

편집할 수 없는 필드

필드를 표시하고 편집할 수 없도록 하려면 <value> 태그를 사용하거나 태그에서 readOnly="true" 속성을 <input> 완료하십시오.
"성별" 필드의 예:
<value value="@gender"/>
<input xpath="@gender" readOnly="true"/>

라디오 단추

라디오 단추를 사용하면 여러 옵션 중에서 선택할 수 있습니다. 이 <input> 태그는 가능한 옵션을 나열하는 데 사용되며 checkedValue 속성은 선택 사항과 연관된 값을 지정합니다.
"성별" 필드의 예:
<input type="RadioButton" xpath="@gender" checkedValue="0" label="Choice 1"/>
<input type="RadioButton" xpath="@gender" checkedValue="1" label="Choice 2"/>
<input type="RadioButton" xpath="@gender" checkedValue="2" label="Choice 3"/>

확인란

확인란은 부울 상태(선택 또는 선택 안 함)를 반영합니다. 기본적으로 이 컨트롤은 "Boolean"(true/false) 필드에서 사용됩니다. 기본값 0 또는 1을 사용하는 변수는 이 단추와 연결할 수 있습니다. 이 값은 checkValue 속성을 통해 오버로드될 수 있습니다 .
<input xpath="@boolean1"/>
<input xpath="@field1" type="checkbox" checkedValue="Y"/>

표현식 필드

표현식 필드는 표현식에서 동적으로 필드를 업데이트합니다.xpath <input> 속성과 함께 태그를 사용하여 업데이트할 필드의 경로와 업데이트 식이 포함된 expr ​속성을 입력합니다.
<!-- Example: updating the boolean1 field from the value contained in the field with path /tmp/@flag -->
<input expr="Iif([/tmp/@flag]=='On', true, false)" type="expr" xpath="@boolean1"/>
<input expr="[/ignored/@action] == 'FCP'" type="expr" xpath="@launchFCP"/>

양식 컨텍스트

입력 양식 실행은 편집 중인 엔티티의 데이터를 포함하는 XML 문서를 초기화합니다. 이 문서는 양식의 컨텍스트를 나타내며 작업 공간으로 사용할 수 있습니다.

컨텍스트 업데이트

양식의 컨텍스트를 수정하려면 <set expr="<value>" xpath="<field>"/> 태그를 사용합니다. 여기서 <field> <value> 는 대상 필드이며, 는 업데이트 표현식 또는 값입니다.
태그의 사용 <set> 예:
  • <set expr="'Test'" xpath="/tmp/@test" /> :임시 위치 /tmp/@test1에 'Test' 값을 배치합니다.
  • <set expr="'Test'" xpath="@lastName" /> :'Test' 값으로 "lastName" 특성의 엔티티를 업데이트합니다.
  • <set expr="true" xpath="@boolean1" /> :"boolean1" 필드의 값을 "true"로 설정합니다.
  • <set expr="@lastName" xpath="/tmp/@test" /> :"lastName" 특성의 내용으로 업데이트합니다.
양식 컨텍스트는 <enter> <leave> 태그를 통해 양식을 초기화 및 닫을 때 업데이트할 수 있습니다.
<form name="recipient" namespace="cus">
  <enter>
    <set...
  </enter>
  ...
  <leave>
    <set...
  </leave>
</form>

페이지("전자 필기장" 및 "아이콘 상자" 유형) <enter> <leave> <container> 에서 및 태그를 사용할 수 있습니다.

표현 언어

조건부 테스트를 수행하기 위해 매크로 언어를 양식 정의에 사용할 수 있습니다.
표현식이 확인되는 경우 태그에서 지정된 지침을 <if expr="<expression>" /> 실행합니다.
<if expr="([/tmp/@test] == 'Test' or @lastName != 'Doe') and @boolean2 == true">
  <set xpath="@boolean1" expr="true"/>
</if>

태그와 함께 <check expr="<condition>" /> 태그를 지정하면 양식의 <error> 유효성 검사가 금지되며 조건이 충족되지 않을 경우 오류 메시지가 표시됩니다.
<leave>
  <check expr="/tmp/@test != ''">
    <error>You must populate the 'Test' field!</error> 
  </check>
</leave>

마법사

마법사가 페이지 형태의 데이터 입력 단계를 안내합니다. 입력한 데이터는 양식의 유효성을 검사할 때 저장됩니다.
마법사의 구조는 다음과 같습니다.
<form type="wizard" name="example" namespace="cus" img="nms:rcpgroup32.png" label="Wizard example" entity-schema="nms:recipient">
  <container title="Title of page 1" desc="Long description of page 1">
    <input xpath="@lastName"/>
    <input xpath="comment"/>
  </container>
  <container title="Title of page 2" desc="Long description of page 2">
    ...
  </container>
  ...
</form>

요소에 type="wizard" 속성이 있으면 <form> 양식 작성 시 마법사 모드를 정의할 수 있습니다. 페이지는 요소의 하위 요소인 <container> 요소에서 <form> 완료됩니다. 페이지의 <container> 요소는 페이지 제목 아래에 설명을 표시하는 제목 및 desc 속성으로 채워집니다. 페이지와 Previous Next 단추가 자동으로 추가되어 페이지 간 검색이 가능합니다.
Finish 단추를 클릭하면 입력한 데이터가 저장되고 양식이 닫힙니다.

SOAP 메서드

페이지 끝에 채워진 <leave> 태그에서 SOAP 메서드 실행을 시작할 수 있습니다.
태그에는 다음 입력 매개 변수를 사용하는 메서드에 대한 호출이 포함되어 있습니다. <soapcall>
<soapCall name="<name>" service="<schema>">
  <param type="<type>" exprIn="<xpath>"/>  
  ...
</soapCall>

서비스 이름 및 해당 구현 스키마는 태그의 이름 서비스 속성을 통해 <soapcall> 입력됩니다.
입력 매개 변수는 <param> 태그 아래의 <soapcall> 요소에 대해 설명합니다.
매개 변수 유형은 type 속성을 통해 지정해야 합니다. 가능한 유형은 다음과 같습니다.
  • 문자열 :문자 문자열
  • 부울 :부울
  • 바이트 :8비트 정수
  • short :16비트 정수
  • :32비트 정수
  • short :16비트 정수
  • double :배정밀도 부동 소수점 숫자
  • :element-type node
exprIn 속성은 매개 변수로 전달할 데이터의 위치를 포함합니다.
:
<leave>
  <soapCall name="RegisterGroup" service="nms:recipient">         
    <param type="DOMElement" exprIn="/tmp/entityList"/>         
    <param type="DOMElement" exprIn="/tmp/choiceList"/>         
    <param type="boolean"    exprIn="true"/>       
  </soapCall>
</leave>