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:
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:
- Buat template Deployment Manager.
- Tentukan Skema JSON untuk menentukan atau memvalidasi kolom input yang dapat digunakan di UI untuk konfigurasi template Deployment Manager.
- 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. |
widget | Widget Menentukan widget UI yang akan digunakan untuk kolom ini. Default: berdasarkan pemetaan jenis kolom. |
title | String Judul untuk kolom. Mewarisi title dari skema. |
notitle | Boolean Apakah akan menyembunyikan judul. Default: false. |
description | String Digunakan sebagai petunjuk atau tooltip untuk kolom. Mewarisi description dari skema. |
validationMessage | String Pesan yang akan ditampilkan saat kolom tidak valid. |
placeholder | String Placeholder untuk kolom. Catatan: Desain Material menggunakan title sebagai placeholder. |
readonly | Boolean Apakah kolom bersifat hanya baca. Mewarisi readonly dari skema. |
condition | String Ekspresi logis yang menentukan apakah kolom ditampilkan. |
titleMap | Title 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