Ringkasan Form Schema

Di Katalog Layanan, salah satu jenis solusi yang didukung adalah konfigurasi Deployment Manager. Untuk membantu Anda membuat dan men-deploy konfigurasi Deployment Manager, kami memiliki Skema Formulir.

Skema Formulir digunakan untuk menata letak komponen antarmuka pengguna (UI) dalam bentuk HTML. Secara khusus, hal ini memungkinkan admin dan developer cloud menyediakan UI untuk memasukkan parameter saat membuat instance baru atau deployment cloud.

Admin Cloud menggunakan Skema Formulir untuk membuat formulir yang memungkinkan pengguna menyesuaikan solusi berbasis template Deployment Manager sebelum meluncurkan solusi tersebut. Misalnya, pengguna dapat memilih jenis mesin, ukuran disk, zona, dan jumlah CPU yang akan dimiliki virtual machine. Formulir ini terlihat seperti formulir yang digunakan di Cloud Marketplace.

Screenshot berikut menggambarkan tampilan formulir deployment:

Formulir deployment

Alternatif untuk Form Schema

Skema Formulir adalah alternatif untuk cara membuat formulir UI yang ada, yang disebut Metadata Tampilan.

Dibandingkan dengan Metadata Tampilan, Skema Formulir memiliki fleksibilitas yang lebih baik dan bersifat open source.

Hubungan dengan Skema JSON

Skema Formulir dibuat berdasarkan formulir skema JSON, yang merupakan skema open source yang ditulis dalam JSON untuk menentukan dan memvalidasi serangkaian parameter.

Skema Formulir mereferensikan kolom dalam Skema JSON dan mewarisi atribut darinya.

Anda dapat menyertakan Skema Formulir di dalam Skema JSON dengan menyertakan array objek form entry di dalam atribut form, seperti yang diilustrasikan oleh contoh berikut:

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

Cara menentukan instance Skema Formulir

Anda dapat menentukan instance Skema Formulir dalam format YAML.

Anda membuat file skema yang menata widget UI sesuai urutan yang seharusnya muncul di UI. File skema ini memiliki ekstensi file .py atau .jinja, seperti yang dijelaskan dalam dokumentasi Deployment Manager.

Kemudian, Anda menambahkan file ke arsip zip template Deployment Manager dan mengupload arsip zip.

Cara Skema Formulir sesuai dengan alur kerja Katalog Layanan

Admin cloud menggunakan Skema Formulir dengan Katalog Layanan sebagai berikut:

  1. Buat template Deployment Manager.
  2. Tentukan Skema JSON untuk menentukan atau memvalidasi kolom input yang dapat digunakan di UI untuk konfigurasi template Deployment Manager.
  3. Tentukan di Skema Formulir kolom mana yang akan disertakan untuk solusi tertentu dan urutan kemunculan kolom tersebut. Selain pengurutan, Anda dapat menggunakan Skema Formulir untuk memberikan teks yang mudah digunakan untuk kolom yang dihitung, seperti dropdown, dan menggabungkan kolom dengan judul bagian.

Daftar formulir

Array objek form entry. Setiap objek mewakili komponen UI dalam bentuk. Anda harus menentukan kolom sesuai urutan yang Anda inginkan untuk muncul dalam formulir, terlepas dari lokasinya dalam skema.

Entri formulir

Entri formulir menentukan tampilan komponen UI dalam formulir. Ini dapat berupa string, yang menentukan kunci untuk kolom dalam Skema JSON, atau objek. Jika entri formulir berupa string, nilai default untuk tampilan akan diwarisi dari entri JSON Schema.

Jika entri formulir adalah objek, atribut key akan merujuk ke entri Skema JSON. Gunakan titik . untuk memisahkan node untuk nilai bertingkat. Misalnya, gunakan name.first untuk mereferensikan kolom first di dalam objek name. Semua kolom lainnya bersifat opsional, dan jika ditentukan, akan mewarisi nilai default dari Skema JSON.

Kolom
key*String
Menentukan definisi kolom dalam skema JSON.
widgetWidget
Menentukan widget UI yang akan digunakan untuk kolom ini. Default: berdasarkan pemetaan jenis kolom.
titleString
Judul untuk kolom. Mewarisi title dari skema.
notitleBoolean
Apakah akan menyembunyikan judul. Default: false.
descriptionString
Digunakan sebagai petunjuk atau tooltip untuk kolom. Mewarisi description dari skema.
validationMessageString
Pesan yang akan ditampilkan saat kolom tidak valid.
placeholderString
Placeholder untuk kolom. Catatan: Desain Material menggunakan title sebagai placeholder.
readonlyBoolean
Apakah kolom bersifat hanya baca. Mewarisi readonly dari skema.
conditionString
Ekspresi logis yang menentukan apakah kolom ditampilkan.
titleMapTitle map
Memberikan label teks untuk opsi di widget checkboxes, radio, dan select.

* wajib diisi

Penanganan khusus untuk jenis

Objek

Untuk jenis object, kolom additionalProperties menentukan apakah properti tambahan dapat ada atau tidak. Kolom ini dapat memiliki nilai true (izinkan apa pun), false (tidak ada properti tambahan yang diizinkan), atau beberapa skema JSON yang membatasi properti tambahan yang diizinkan. Jika nilainya salah atau tidak ada, widget akan ditampilkan untuk kolom yang tercantum dalam atribut items. Untuk nilai lain (true atau skema JSON), textarea ditampilkan untuk memasukkan nilai JSON.

Pemetaan jenis ke widget

Jika tidak ada widget yang ditentukan dalam Skema Formulir, nilai default akan digunakan berdasarkan Jenis Skema JSON kolom, sebagai berikut:

Jenis Skema Widget Formulir Skema
string text
angka angka
bilangan bulat angka
boolean checkbox
objek fieldset
string + enum radio (3 pilihan atau kurang)
string + enum pilih (4 pilihan atau lebih)
array + enum kotak centang
array array

Widget

Widget ditentukan sebagai string yang merujuk ke salah satu struktur data berikut.

Array

Daftar tempat baris dapat ditambahkan, dihapus, dan diurutkan ulang. JSON Schema memungkinkan properti items untuk jenis array berupa skema atau daftar skema. Daftar ini tidak didukung oleh Skema Formulir.

Array dengan item primitif

Karena skema formulir mewajibkan semua entri formulir memiliki kunci, dan array yang berisi item primitif (non-objek) tidak memiliki kunci untuk mereferensikannya, formulir harus mereferensikan entri array primitif menggunakan kata kunci yang dicadangkan: 'x-googleProperty'.

Misalnya, Anda akan menentukan array skema JSON yang berisi string sebagai berikut:

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

Kemudian, harus direferensikan dalam skema formulir sebagai:

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

Array dengan item objek

Array yang berisi objek harus menentukan setiap kunci dalam jenis item yang harus dirender dalam formulir.

Misalnya, pertimbangkan array skema JSON yang berisi objek:

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

Skema formulir yang diperlukan untuk membuat array formulir dengan input untuk atribut someArrayItemAttribute adalah:

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

Kotak centang

Kolom input dengan jenis checkbox.

Kotak centang

Daftar kolom input jenis checkbox. Kolom Skema JSON harus berjenis array dan memiliki atribut enum. Untuk memberikan label pada opsi, Anda dapat menentukan titleMap.

Expander

Sangat mirip dengan bagian, tetapi menempatkan kolom di dalam widget panel perluasan yang dapat dibuka dan ditutup oleh pengguna dengan mengklik judul.

Angka

Kolom input dengan jenis number. Atribut berikut dari JSON Schema adalah validator untuk kolom: minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf.

Sandi

Kolom input dengan jenis password.

Radio

Kolom input dengan jenis radio. Gunakan ini untuk kolom yang memiliki daftar enum dalam Skema JSON, atau berjenis boolean. Untuk memberikan label pada opsi, Anda dapat menentukan titleMap.

Bagian

Widget ini mengelompokkan sekumpulan kolom. Kolom key akan diabaikan. Bagian memiliki atribut items yang diperlukan, yang merupakan array objek entri formulir. Bagian dapat memiliki atribut opsional berikut: title, description, condition.

Pilih

Kolom input select. Gunakan ini untuk kolom yang memiliki daftar enum dalam Skema JSON, atau berjenis boolean. Untuk memberikan label pada opsi, Anda dapat menentukan titleMap.

Teks

Widget input dengan jenis text. Jika Skema JSON berisi atribut pattern, pola tersebut akan digunakan sebagai validator ekspresi reguler.

Area teks

Widget input textarea. Widget ini ditampilkan dalam beberapa situasi untuk memasukkan JSON secara langsung. Lihat objek.

Peta judul

Atribut titleMap dapat ditentukan untuk widget jenis checkboxes, radio, dan select. Atribut ini diabaikan untuk widget lain.

Atribut ini adalah array objek yang berisi dua atribut, value dan name. Atribut value adalah referensi ke satu nilai enum untuk kolom. Atribut name adalah teks yang akan digunakan sebagai label untuk opsi yang sesuai di widget UI. Jika widget adalah radio atau checkboxes, kolom description opsional akan ditambahkan sebagai subteks untuk tombol pilihan atau kotak centang tersebut.

Jika tidak ada titleMap yang diberikan, nilai enum akan digunakan.

Fitur yang tidak didukung

Fitur berikut saat ini tidak didukung di Skema Formulir:

  • Opsi global
  • Pesan validasi kompleks (hanya satu pesan yang didukung)
  • Interpolasi pesan validasi
  • Fungsi pesan validasi
  • Validasi kustom
  • Widget yang tidak didukung: actions, fieldset, radios-inline, radiobuttons, help, template, tab, tabarray
  • Opsi yang tidak didukung: onChange, feedback, disabledSuccessState, disabledErrorState, ngModelOptions, htmlClass, fieldHtmlClass, labelHtmlClass, copyValueTo, destroyStrategy
  • Fungsi pascapemrosesan
  • Acara
  • Penyisipan kolom manual