주소 지정

주소 지정은 UI 페이지에서 정의된 다른 보기 내에 중첩된 보기를 포함한 UI Toolkit의 모든 보기에서 지원됩니다.

주소 지정 스킴은 계층 구조의 트리 형식 구조이며 이 안에서 루트는 표시된 페이지의 맨 위에 /로 정의됩니다. 주소 지정 스킴의 구조는 디렉토리에 사용된 것과 비슷합니다. 트리의 후속 노드는 페이지가 로드될 때 추가됩니다.

두 개의 기본 노드 유형이 사용 가능하며 이 두 유형은 컨테이너 및 요소입니다. 컨테이너 노드에는 요소, 보기 및 기타 컨테이너 노드와 같은 다른 노드가 포함됩니다.
제한사항: 더 이상 사용되지 않는 Coach Toolkit의 보기는 설명된 주소 지정 스킴을 사용하여 주소를 지정할 수 없습니다.

일반적으로 일부 보기에서 사용되는 보기 이벤트 또는 공식에 의해 호출되는 함수가 있는 경우 UI 보기에서 주소 지정을 사용합니다. 함수는 페이지에 있는 사용자 정의 HTML의 JavaScript 스크립트 블록 또는 보기의 동작 특성에 있는 인라인 JavaScript 섹션에서와 같이 인라인으로 지정할 수 있습니다.

주소 지정 스타일

상대 및 절대 주소 지정 스타일이 지원됩니다. /를 사용하여 참조를 시작하는 것은 절대 참조를 의미합니다. 예를 들어, 보기 트리의 루트 레벨에서 시작합니다. 경로의 시작 부분에서 /를 생략하는 것은 "from where I am"을 의미합니다. 참조에서 ..를 사용하면 파일 디렉토리 트리가 작동하는 방식과 동일하게 한 레벨 위로 되돌아가게 됩니다.

공식에서 참조는 사용자가 공식을 설정하고 있는 필드의 참조점에서 계산됩니다.
  • 현재 레벨과 동일한 레벨의 필드는 필드 이름을 사용하여 참조됩니다(참조의 시작 부분에 /를 사용하지 않음).
  • 한 레벨 위에 있는 필드는 ../FieldOneLevelAboveMe로 참조될 수 있습니다.
  • 두 레벨 위에 있는 필드는 ../../FieldOneLevelAboveMe 등으로 참조됩니다.
  • ../를 사용한 상대 주소 지정이 일부 경우에 편리할 수 있습니다.

보기에 액세스하기 위한 JavaScript 메소드

사용자 정의 HTML에서
JavaScript 블록에서 보기에 액세스하려면 페이지 글로벌 보기 및 해당 page.ui.get(ControlId path) 메소드를 사용하십시오. 예를 들어, Text1이라는 이름의 텍스트 보기가 있고 유효성 검증을 목적으로 단추의 On click 이벤트에서 호출되는 함수로 이 보기에 액세스하려는 것으로 가정합니다. 이를 수행하려면 다음 예와 비슷한 코드를 사용하십시오.
var myTextField = page.ui.get("/Text1");
myTextField.getValue() // returns the value in the text field
myTextField.focus() // would set the focus to the text field.
보기의 인라인 JavaScript에서
컨테이너 보기에 포함된 함수에서 보기에 액세스하려면 다음 옵션 중 하나를 사용하십시오.
bpmEventHelper.ui.getView(ControlId [, thisview])
thisview.ui.get(ControlId)
여기서, thisview는 컨테이너 보기에서 정의됩니다.
예를 들어, Text1Select1 라는 두 개의 보기를 포함하는 컨테이너 보기를 정의했고 유효성 검증을 위해 상위 보기에 있는 단추의 On click 이벤트에서 호출되는 validateControls 함수에서 두 개의 중첩된 보기에 액세스하려고 합니다. 보기에 액세스하려면 컨테이너 보기의 동작 특성에 있는 인라인 JavaScript 섹션에 다음 예와 비슷한 코드를 배치하십시오.
var thisview = this; // required

this.validateControls = function(button)
{
    var textControl = bpmEventHelper.ui.getView("Text1", thisview);
    var selectControl =  thisview.ui.get("Select1");
    textControl.getValue(); // returns the value of the SPARK control in 
    this coach view with the ControlId "Text1"
    selectControl.getSelectedItem(); // returns the selected value in the 
    SPARK control in this coach view with the ControlId "Select1"
}
		
일반적인 예로 Address 보기의 내부에 있는 FirstName 텍스트 보기에 액세스하려면 다음과 같이 절대 주소를 사용하여 주소 지정하십시오.
"/Address/FirstName" or "${Address}.ui.get('FirstName')"
공식에서
다음 구문을 사용하여 보기를 공식에서 참조할 수 있습니다.
  • ${FieldName}control id = FieldName인 보기를 참조합니다.
  • @{FieldName}control id = FieldName인 보기의 값을 참조합니다.
  • ${FieldName).getValue()@{FieldName}은 동등합니다.

주소 지정 불가 레이아웃 보기

레이아웃용으로만 사용되는 보기의 경우 주소에서 생략되어야 합니다. 예를 들어, /VerticalLayout/FirstName가 아닌 /FirstName 주소를 사용하여 VerticalLayout 보기에 중첩된 FirstName 보기의 주소를 지정할 수 있습니다.
팁: 주소에서 주소를 지정할 수 없는 사용자 정의 컨테이너 보기를 제외하려면 동작아래의 인라인 JavaScript 섹션에 있는 사용자 정의 보기의 load 함수에서 다음 특성을 true 로 설정하십시오.
this.constructor.prototype.IS_ADDRESS_INVISIBLE = true;

주소 지정 가능 사용자 정의 보기

주소를 지정할 수 있도록 할 사용자 정의 보기를 작성하는 경우 load 메소드에서 다음 함수를 호출하십시오.
bpmEventHelper.ui.loadView(this)
사용자 정의 보기에 컨텐츠 상자가 있는 경우 대신 다음 함수를 호출하십시오.
bpmEventHelper.ui.loadContainer(this)
보기의 unload 함수에서 다음 중 적절한 함수를 호출하십시오.
bpmEventHelper.ui.unloadView(this)
또는
bpmEventHelper.ui.unloadContainer(this)

테이블의 피어 필드에 대한 참조

테이블에서 공식을 사용하는 경우 필드 이름 뒤에 =가 있는 구문을 사용하여 my 행의 필드에 액세스할 수 있습니다. 예를 들어, 테이블에서 Quantity(Integer), Cost(Decimal) 및 Total(Decimal) 보기를 정의한 것으로 가정합니다. 다음 공식을 사용하여 Total 보기의 값을 지정할 수 있습니다.
@{Quantity=} * @{Cost=}
Total 보기에는 데이터 바인딩이 필요하지 않음을 참고하십시오. 즉, 테이블에 총계 데이터 필드가 필요하지 않음을 의미합니다.

헬퍼 기능

예를 들어, bpmext.ui.View 네임스페이스 내에서 헬퍼 함수 getParentgetSibling 을 사용할 수 있습니다. 예에서는 전체 계층 구조를 알지 못해도 컨테이너 보기 또는 피어 보기에 쉽게 도달할 수 있습니다.

예를 들어, Button1Button2라는 이름의 두 보기가 포함된 CV라는 이름의 컨테이너 보기가 있다고 가정합니다. btn1ViewButton1에 대한 bpmext.ui.View 오브젝트라고 가정하면 btn1View.ui.get(“CV”) 또는 btn1View.ui.getParent();를 사용하여 CV 에 도달할 수 있습니다. bt1View.ui.getSibling(“Button2”)를 사용하여 Button2 에 도달할 수 있습니다.