양식 스키마 개요

서비스 카탈로그에서 지원되는 솔루션 유형 중 한 가지는 Deployment Manager 구성입니다. Deployment Manager 구성을 만들고 배포하는 데 도움을 주는 양식 스키마가 있습니다.

양식 스키마는 사용자 인터페이스(UI) 구성요소를 HTML 형식으로 배치하는 데 사용됩니다. 특히 클라우드 관리자와 개발자는 새 인스턴스 또는 클라우드 배포를 만들 때 매개변수를 입력할 수 있는 UI를 제공할 수 있습니다.

클라우드 관리자는 양식 스키마를 사용하여 솔루션을 실행하기 전에 사용자가 Deployment Manager 템플릿 기반 솔루션을 맞춤설정할 수 있게 하는 양식을 만듭니다. 예를 들어 사용자는 가상 머신에서 사용할 머신 유형, 디스크 크기, 영역, CPU 수를 선택할 수 있습니다. 이러한 형식은 Cloud Marketplace에서 사용되는 양식과 유사합니다.

다음 스크린샷은 배포 양식이 어떤 모습인지 보여줍니다.

배포 양식

양식 스키마의 대안

양식 스키마는 디스플레이 메타데이터라는 UI 형식을 만드는 기존의 방식을 대신합니다.

디스플레이 메타데이터와 비교했을 때 양식 스키마는 유연성이 강화되었으며 오픈소스입니다.

JSON 스키마와의 관계

양식 스키마는 JSON 스키마 양식을 기반으로 빌드되며, 이는 매개변수 집합을 지정하고 검증을 위해 JSON으로 작성된 오픈소스 스키마입니다.

양식 스키마는 JSON 스키마의 필드를 참조하고 속성을 상속합니다.

다음 예시와 같이 form 속성 내 form entry 객체 배열을 포함하여 JSON 스키마 내에 양식 스키마를 포함할 수 있습니다.

    {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "type": "object",
      "properties": {...}
      "form": [
        ...Form List goes here...
      ]
    }

양식 스키마 인스턴스 지정 방법

양식 스키마 인스턴스를 YAML 형식으로 지정할 수 있습니다.

UI 위젯을 UI에 표시되는 순서대로 배치하는 스키마 파일을 만듭니다. 이 스키마 파일은 Deployment Manager 문서에 설명된 대로 .py 또는 .jinja 파일 확장자를 가집니다.

그런 다음 Deployment Manager 템플릿 zip 보관 파일에 파일을 추가하고 zip 보관 파일을 업로드합니다.

양식 스키마가 서비스 카탈로그 워크플로에 적용되는 방식

클라우드 관리자는 다음과 같이 서비스 카탈로그와 함께 양식 스키마를 사용합니다.

  1. Deployment Manager 템플릿을 만듭니다.
  2. JSON 스키마를 지정하여 Deployment Manager 템플릿 구성의 UI에서 사용할 수 있는 입력 필드를 정의하거나 검증합니다.
  3. 특정 솔루션에 포함할 필드 및 이러한 필드가 표시되어야 하는 순서를 양식 스키마에 정의합니다. 순서 지정 외에도 양식 스키마를 사용하여 드롭다운과 같은 열거된 필드에 사용자에게 친숙한 텍스트를 제공하고 필드를 섹션 제목과 함께 그룹화할 수 있습니다.

양식 목록

form entry 객체의 배열입니다. 각 객체는 양식의 UI 구성요소를 나타냅니다. 스키마의 위치와 관계없이 양식에 표시할 순서로 필드를 지정해야 합니다.

양식 항목

양식 항목은 양식에서 UI 구성요소의 모양을 지정합니다. JSON 스키마 필드의 키를 지정하는 문자열이거나 객체일 수 있습니다. 양식 항목이 문자열인 경우 모양의 기본값은 JSON 스키마 항목에서 상속됩니다.

양식 항목이 객체인 경우 key 속성은 JSON 스키마 항목을 참조합니다. 점 .을 사용하여 중첩 값의 노드를 구분합니다. 예를 들어 name 객체 내부의 first 필드를 참조하려면 name.first를 사용합니다. 다른 필드는 모두 선택사항이며 지정된 경우 JSON 스키마에서 기본값을 상속받습니다.

필드
key*String
JSON 스키마의 필드 정의를 지정합니다.
widgetWidget
이 필드에 사용할 UI 위젯을 지정합니다. 기본값은 필드 유형 매핑 기준입니다.
titleString
필드 제목입니다. 스키마에서 title을 상속합니다.
notitleBoolean
제목을 숨길지 여부입니다. 기본값은 false입니다.
descriptionString
필드에 대한 힌트 또는 도움말로 사용됩니다. 스키마에서 description을 상속합니다.
validationMessageString
필드가 유효하지 않을 때 표시할 메시지
placeholderString
필드의 자리표시자입니다. 참고: 머티리얼 디자인에서는 title을 자리표시자로 대신 사용합니다.
readonlyBoolean
필드가 읽기 전용인지 여부입니다. 스키마에서 readonly을 상속합니다.
conditionString
필드의 표시 여부를 결정하는 논리 표현식입니다.
titleMapTitle map
checkboxes, radio, select 위젯의 옵션을 위한 텍스트 라벨을 제공합니다.

* 필수 항목

유형별 특수 처리

객체

object 유형의 additionalProperties 필드는 추가 속성이 있는지 여부를 정의합니다. 필드에는 허용되는 추가 속성을 제한하는 true(모두 허용), false(추가 속성 없음) 또는 일부 JSON 스키마 값이 있을 수 있습니다. 값이 false이거나 없으면 items 속성에 나열된 필드에 위젯이 표시됩니다. 다른 값(true 또는 JSON 스키마)의 경우 JSON 값을 입력하기 위한 텍스트 영역이 표시됩니다.

유형-위젯 매핑

양식 스키마에 위젯이 지정되지 않은 경우 다음과 같이 필드의 JSON 스키마 유형에 따라 기본값이 사용됩니다.

스키마 유형 스키마 양식 위젯
문자열 텍스트
숫자 숫자
정수 숫자
부울 체크박스(하나)
객체 필드세트
문자열 + 열거형 라디오(3개 이하 선택 옵션)
문자열 + 열거형 선택 (4개 이상 선택 옵션)
배열 + 열거형 체크박스(둘 이상)
배열 배열

위젯

위젯은 다음 데이터 구조 중 하나를 참조하는 문자열로 지정됩니다.

배열

행을 추가, 삭제, 재정렬할 수 있는 목록입니다. JSON 스키마를 사용하면 array 유형의 items 속성을 스키마 또는 스키마 목록으로 지정할 수 있습니다. 이 목록은 양식 스키마에서 지원되지 않습니다.

기본 항목을 가진 배열

양식 스키마에는 모든 양식 항목에 키가 있어야 하고 기본(비객체) 항목을 포함한 배열에는 참조할 키가 없으므로, 양식은 예약된 키워드 'x-googleProperty'을 사용하여 기본 배열 항목을 참조해야 합니다.

예를 들어 문자열을 포함하는 JSON 스키마 배열을 다음과 같이 정의할 수 있습니다.

    {
      'exampleArray': {
        'type': 'array',
        'items': {
          'type': 'string'
        }
      }
    }

그런 다음 양식 스키마에서 다음과 같이 참조되어야 합니다.

    [
      {
        'key': 'exampleArray',
        'widget': 'array',
        'items': [
          {
            'key': 'exampleArray.x-arrayPrimitive'
          }
        ]
      },
    ]

객체 항목을 가진 배열

객체를 포함하는 배열에서는 양식에 렌더링 되어야 하는 항목 유형의 각 키를 지정해야 합니다.

예를 들어 객체가 포함된 JSON 스키마 배열을 살펴보겠습니다.

    {
      'exampleArray': {
        'type': 'array',
        'items': {
          'type': 'object',
          'properties': {
            'someArrayItemAttribute': {
              'type': 'string'
            }
          }
        }
      }
    }

someArrayItemAttribute 속성의 입력으로 양식 배열을 만드는 데 필요한 양식 스키마는 다음과 같습니다.

    [
      {
        'key': 'exampleArray',
        'widget': 'array',
        'items': [
          {
            'key': 'exampleArray.someArrayItemAttribute'
          }
        ]
      },
    ]

체크박스(하나)

checkbox 유형의 입력 필드입니다.

체크박스(둘 이상)

checkbox 유형의 입력 필드 목록입니다. JSON 스키마 필드는 array 유형이어야 하며 enum 속성이 있어야 합니다. 옵션의 라벨을 제공하려면 titleMap을 지정하면 됩니다.

확장기

섹션과 매우 비슷하지만 사용자가 제목을 클릭하여 열고 닫을 수 있는 확장 패널 위젯 내에 필드를 배치합니다.

숫자

number 유형의 입력 필드입니다. JSON 스키마의 다음 속성은 minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf 필드에 대한 검사기입니다.

비밀번호

password 유형의 입력 필드입니다.

무선

radio 유형의 입력 필드입니다. JSON 스키마에 enum 목록이 있거나 부울 유형인 필드에 사용합니다. 옵션의 라벨을 제공하려면 titleMap을 지정하면 됩니다.

섹션

이 위젯은 일련의 필드를 그룹화합니다. key 필드는 무시됩니다. 섹션에는 양식 항목 객체의 배열인 필수 items 속성이 있습니다. 섹션에는 title, description, condition 속성(선택사항)을 포함할 수 있습니다.

선택

select 입력 필드입니다. JSON 스키마에 enum 목록이 있거나 부울 유형인 필드에 사용합니다. 옵션의 라벨을 제공하려면 titleMap을 지정하면 됩니다.

텍스트

text 유형의 입력 위젯입니다. JSON 스키마에 pattern 속성이 포함되어 있으면 패턴이 정규식 검사기로 사용됩니다.

텍스트 영역

텍스트 영역 입력 위젯입니다. 이 위젯은 JSON을 직접 입력하는 여러 상황에서 표시됩니다. 객체를 참조하세요.

제목 맵

titleMap 속성은 checkboxes, radio, select 유형의 위젯에 지정될 수 있습니다. 다른 위젯에서는 무시됩니다.

이 속성은 valuename의 두 가지 속성이 포함된 객체의 배열입니다. value 속성은 필드의 열거형 값 하나에 대한 참조입니다. name 속성은 UI 위젯에서 해당 옵션의 라벨로 사용할 텍스트입니다. 위젯이 radio 또는 checkboxes이면 선택사항인 description 필드가 해당 라디오 버튼 또는 체크박스의 하위 텍스트로 추가됩니다.

titleMap을 제공하지 않으면 enum 값이 대신 사용됩니다.

지원되지 않는 기능

다음 기능은 현재 양식 스키마에서 지원되지 않습니다.

  • 전체 옵션
  • 복합적인 유효성 검사 메시지(하나의 메시지만 지원)
  • 유효성 검사 메시지 보간 유형
  • 유효성 검사 메시지 함수
  • 커스텀 유효성 검사
  • 지원되지 않는 위젯: actions, fieldset, radios-inline, radiobuttons, help, template, tab, tabarray
  • 지원되지 않는 옵션: onChange, feedback, disabledSuccessState, disabledErrorState, ngModelOptions, htmlClass, fieldHtmlClass, labelHtmlClass, copyValueTo, destroyStrategy
  • 후처리 함수
  • 이벤트
  • 수동 필드 삽입