"스크립트 실행" 서비스를 사용하여 프로세스에 스크립트 추가

"스크립트 실행" 서비스 활동이 정의된 프로세스를 만든 후 이 프로세스에 스크립트를 추가할 수 있습니다. 이 프로세스에 스크립트를 추가하려면:

  1. 프로세스 속성 팔레트로 이동합니다. 이 팔레트 내에서 입력 섹션을 확장하고 "…" 아이콘을 클릭합니다.

  2. 표시되는 텍스트 상자에 스크립트를 작성합니다. 스크립트가 작성되면 확인을 누릅니다(아래 그림 참조).
    스크립트 실행

스크립트 실행 서비스를 사용하여 XML 생성

스크립트 실행 서비스가 포함된 프로세스가 만들어지면 이 스크립트를 사용하여 XML을 만들 수 있습니다. 위의 Execute Script 서비스를 사용하여 프로세스에 스크립트 추가 섹션에 설명된 텍스트 상자에 아래 설명된 스크립트를 작성합니다.

스크립트 서비스 실행 기술 정보

Execute Script 서비스의 능력과 한계가 무엇인지 알기 위해서는 서비스의 기술적 토대를 알아야 한다. AEM Forms on JEE는 Apache Xerces DOM(Document Object Model) 파서를 사용하여 프로세스 내에 XML 변수를 만들고 저장합니다. Xerces는 W3C의 문서 개체 모델 사양의 Java™ 구현입니다. DOM 사양은 1998년부터 있었던 XML을 조작하는 표준 방법입니다. Xerces의 Java™ 구현인 Xerces-J는 DOM 레벨 2 버전 1.0을 지원합니다.

XML 변수를 저장하는 데 사용되는 Java™ 클래스는 다음과 같습니다.

  • org.apache.xerces.dom.NodeImpl 및

  • org.apache.xerces.dom.DocumentImpl

DocumentImpl은 NodeImpl의 하위 클래스이므로 모든 XML 프로세스 변수가 NodeImpl 파생이라고 가정할 수 있습니다. 자세한 내용은 NodeImpl 설명서를 참조하세요.

스크립트 실행 서비스를 사용한 샘플 XML 만들기

다음은 스크립트 실행 서비스 내에서 XML을 만드는 예제입니다. 프로세스에 XML 유형의 변수 노드가 있습니다. 이 활동의 결과는 XML 문서입니다. 해당 문서의 기능 또는 전체 프로세스에 적용되는 방식은 이 자습서에서는 다루지 않습니다. 궁극적으로 전체 애플리케이션에서 XML이 수행해야 하는 작업에 해당합니다. 서론에서 언급했듯이 XML은 JEE 양식 및 프로세스의 AEM Forms에서 다양한 용도로 사용할 수 있으며, 이는 단순히 스크립트 실행 활동을 코딩하여 간단한 XML 문서를 출력하는 방법에 대한 설명입니다.

출력 XML에 대한 간단한 JavaScript은 다음과 같습니다.

import org.apache.xerces.dom.DocumentImpl;

import org.w3c.dom.Document;

import org.w3c.dom.Element;



Document document = new DocumentImpl();

Element topLevelResources = document.createElement("resources");

Element resource = document.createElement("resource");

resource.setAttribute("id", "first item id");

resource.setAttribute("value", "first item value");

topLevelResources.appendChild(resource);

document.appendChild(topLevelResources);

patExecContext.setProcessDataValue("/process_data/node", document);
NOTE
앞에서 언급한 DOM 개체를 스크립트로 가져와야 합니다.

이 간단한 스크립트의 결과는 변수 노드가 다음과 같이 설정된 새 XML 문서입니다.

<resources>

<resource id="first item id" value="first item value"/>

</resources>

반복 루프를 사용하여 XML에 노드 추가

노드를 프로세스 내에서 기존 XML 변수에 추가할 수도 있습니다. 변수 node에는 만들어진 XML 개체가 포함되어 있습니다.

Document document = patExecContext.getProcessDataValue("/process_data/node");

NodeList childNodes = document.getChildNodes();

int numChildren = childNodes.getLength();

for (int i = 0; i < numChildren; i++)

{

Node currentChild = childNodes.item(i);

if (currentChild.getNodeType() == Node.ELEMENT_NODE)

{

// found the top-level node

Element newResource = document.createElement("resource");

newResource.setAttribute("id", "second item id");

newResource.setAttribute("value", "second item value");

currentChild.appendChild(newResource);

break;

}

}

patExecContext.setProcessDataValue("/process_data/node", document);
The variable node in the XML is now set to:

<resources>

<resource id="first item id" value="first item value"/>

<resource id="second item id" value="second item value"/>

</resources>

Experience Manager