워크플로 프레젠테이션에서는 워크플로의 입력 매개 변수에 전달할 수 있는 값에 대한 제약 조건(예: 미리 정의된 값 목록 또는 특정 값 범위)을 정의할 수 있습니다. 워크플로를 성공적으로 실행하려면 워크플로 프레젠테이션의 정의에 대해 워크플로의 입력 매개 변수로 전달하는 값의 유효성을 검사해야 합니다.

시작하기 전에

Orchestrator에서 샘플 워크플로 패키지를 가져왔는지 확인합니다. 이 패키지는 Orchestrator 설명서 페이지에서 다운로드할 수 있는 Orchestrator 샘플 애플리케이션 ZIP 파일에 포함되어 있습니다.

이 태스크 정보

사용자 지정 애플리케이션에 워크플로를 통합하는 경우 워크플로를 실행할 때 해당 입력 매개 변수 값을 입력할 마법사를 만들어야 할 수 있습니다. 워크플로 프레젠테이션 서비스를 사용하면 워크플로의 프레젠테이션을 인스턴스화하여 마법사의 여러 화면에 해당하는 부분에서 입력 매개 변수 값을 전달할 수 있습니다. 워크플로 프레젠테이션에 정의된 제약 조건에 대해 입력 매개 변수에 전달하는 값의 유효성을 검사할 수 있습니다.

프로시저

  1. 워크플로 정의가 포함된 URL에서 GET 요청을 만들어 실행할 워크플로의 정의를 검색합니다.
    GET https://{orchestrator_host}:{port}/vco/api/workflows/{workflowID}/

    워크플로의 정의가 요청의 응답 본문에 수신됩니다. 워크플로 정의에서 해당 워크플로의 입력 매개 변수, 워크플로 설명 및 기타 정보를 확인할 수 있습니다.

  2. 해당 URL에서 GET 요청을 만들어 워크플로 프레젠테이션의 정의를 검색합니다.
    GET https://{orchestrator_host}:{port}/vco/api/workflows/{workflowID}/presentation/
  3. 요청의 응답 본문에서 입력 매개 변수에 전달할 수 있는 값에 대한 제약 조건을 기준으로 워크플로 프레젠테이션의 정의를 검토합니다.

    예를 들어 입력 매개 변수에 선택할 수 있는 미리 정의된 값 목록이 있을 수 있습니다.

  4. 프레젠테이션 인스턴스의 URL에서 POST 요청을 만들어 워크플로 프레젠테이션을 인스턴스화합니다.
    POST https://{orchestrator_host}:{port}/vco/api/workflows/{workflowID}/presentation/instances/
  5. 요청 본문에 execution-context 요소를 제공하여 프레젠테이션을 인스턴스화합니다.

    execution-context를 전달하거나, 일부 입력 매개 변수 값만 있는 execution-context를 전달할 수 있습니다.

  6. 입력 매개 변수에 부분적으로 값을 전달하려면 프레젠테이션 인스턴스를 유지하는 URL에서 필요한 수만큼 POST 또는 PUT 요청을 만듭니다.
    PUT https://{orchestrator_host}:{port}/vco/api/workflows/{workflowID}/presentation/instances/{executionID}/
  7. 만든 POST 또는 PUT 요청의 응답 본문을 검토합니다.

    입력 매개 변수에 전달한 값이 유효한 경우 execution 태그에 valid="true" 특성이 있습니다. 프레젠테이션이 유효한 경우 응답의 out-parameters 요소에 나열된 값을 가져와 워크플로를 실행할 때 입력 매개 변수에 값으로 전달할 수 있습니다.

  8. 입력 매개 변수의 값이 유효한 경우 워크플로 실행을 유지하는 URL에서 POST 요청을 만들어 워크플로를 실행합니다.
    POST https://{orchestrator_host}:{port}/vco/api/workflows/{workflowID}/executions/
  9. execution-context 요소에서 워크플로의 입력 매개 변수에 유효한 값을 제공합니다.

입력 매개 변수의 유효성을 검사하여 Send Hello 워크플로 실행

해당 프레젠테이션 정의에 대해 입력 매개 변수의 유효성을 검사하여 Send Hello 워크플로를 실행할 수 있습니다.

  1. Send Hello 워크플로 정의를 유지하는 URL에서 GET 요청을 만듭니다.

    GET https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/

    워크플로 정의가 요청의 응답 본문에 수신됩니다.

    <xml version="1.0" encoding="UTF-8" standalone="yes">
    <workflow xmlns="http://www.vmware.com/vco" customized-icon="false"
       href="https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/">
       <relations>
          <link rel="up"
              href="https://localhost:8281/vco/api/inventory/System/Workflows/Samples/HelloWorld/" />
          <link rel="add"
              href="https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/executions/" />
          <link rel="down"
              href="https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/executions/" />
          <link rel="down"
              href="https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/presentation/" />
          <link rel="down"
      	       href="https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/tasks/" />
          <link rel="down"
              href="https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/icon/" />
       </relations>
       <input-parameters>
          <parameter name="name" type="string" />
       </input-parameters>
       <output-parameters>
          <parameter name="message" type="string" />
       </output-parameters>
       <name>Send Hello</name>
    	  <description></description>
    </workflow>
  2. 워크플로 프레젠테이션의 정의를 유지하는 URL에서 GET 요청을 만듭니다.

    GET https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/presentation/
  3. 워크플로 프레젠테이션의 실행 인스턴스를 유지하는 URL에서 POST 요청을 만듭니다.

    POST https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/presentation/instances/ 

    입력 매개 변수 값을 제공하지 않고 프레젠테이션을 인스턴스화할 수 있도록 빈 execution-context를 제공합니다.

    <execution-context xmlns="http://www.vmware.com/vco"/>

    응답 본문의 모든 필드에 입력 매개 변수 값이 잘못되었음을 나타내는 오류 메시지가 추가됩니다.

    .......
    <fields>
      <field type="string" hidden="false" id="name">
        <display-name>name</display-name>
        <description>name</description>
        <messages>
           <message severity="ERROR" code="VCO-CNS0002">
              <Summary>
                    The minimum number of characters allowed for this field is 3.0
              </Summary>
           </message>
        </messages>
        <constraints>
           <number-range max="15.0" min="3.0" />
        </constraints>
    .......
  4. 특정 프레젠테이션 인스턴스를 유지하는 URL에서 POST 요청을 만듭니다.

    POST https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/presentation/instances/888080808080808080808080808080803F8080800132145338690643f66a027ec/

    요청 본문에서 입력 매개 변수의 값을 제공합니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
     <execution-context xmlns="http://www.vmware.com/vco">
      <parameters>
        <parameter name="name" type="string">
          <string>John Smith</string>
        </parameter>
      </parameters>
    </execution-context>

    요청의 응답 본문에서 입력 매개 변수의 값이 유효한지 확인할 수 있습니다.

    <execution started-by="vcoadmin" .... valid="true".....>
  5. 프레젠테이션이 유효한 경우 워크플로 실행을 유지하는 URL에서 POST 요청을 만들어 워크플로를 실행합니다.

    POST https://localhost:8281/vco/api/workflows/CF808080808080808080808080808080DA808080013086668236014a0614d16e1/executions/

    요청 본문에서 워크플로의 입력 매개 변수에 값을 전달합니다. 워크플로 프레젠테이션의 출력 매개 변수로 반환되는 값을 그대로 사용하거나, 워크플로 프레젠테이션에 대한 마지막 POST 요청의 요청 본문을 직접 사용합니다.