Ana içeriğe geç

Schema

Schema bileşeni, transition, flow ve master-data için JSON şema tanımıdır. Hem ön uçta hem arka uçta istekler doğrulanır ve instance data tutarlılığı korunur.

Schema kaynağı: vnext-schema/schema-definition.schema.json

Tanım JSON Örneği

Schema: schema-definition.schema.json

{
"key": "account-type-selection",
"version": "1.0.0",
"domain": "banking",
"flow": "sys-schemas",
"flowVersion": "1.0.0",
"tags": ["banking", "account", "selection"],
"_comment": "Hesap türü seçimi için transition schema",
"attributes": {
"type": "workflow",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schemas.vnext.com/banking/account-type-selection.json",
"title": "Account Type Selection",
"description": "Schema for account type selection input",
"type": "object",
"required": ["accountType"],
"properties": {
"accountType": {
"type": "string",
"title": "Account Type",
"description": "Type of account to be opened",
"oneOf": [
{ "const": "demand-deposit", "description": "Vadesiz Hesap" },
{ "const": "time-deposit", "description": "Vadeli Hesap" },
{ "const": "savings-account", "description": "Tasarruf Hesabı" }
]
}
},
"additionalProperties": false
},
"labels": [
{ "label": "Account Type Selection", "language": "en-US" },
{ "label": "Hesap Türü Seçimi", "language": "tr-TR" }
]
}
}

Kullanım Türleri

TürAtandığı YerAmacı
Master SchemaWorkflow root (attributes.schema)Instance data ana yapısı; her değişimde tutarlılık kontrolü
Transition SchemaTransition tanımıTransition request body validation

Properties

Top-Level Alanlar

AlanTipZorunluPattern / KısıtAçıklama
$schemastringHayırJSON Schema referansı
keystringEvet^[a-z0-9-]+$Schema'nın benzersiz tanımlayıcısı
versionstringEvet^\d+\.\d+\.\d+(-[a-zA-Z]+\.\d+)?$Semantic versioning (Major.Minor.Patch)
domainstringEvet^[a-z0-9-]+$Schema'nın ait olduğu domain
flowstringEvetSabit: sys-schemasFlow tanımlayıcısı
flowVersionstringEvet^\d+\.\d+\.\d+(-[a-zA-Z]+\.\d+)?$Flow versiyonu
tagsstring[]EvetminItems: 1Kategorilendirme ve arama etiketleri
_commentstringHayırAçıklama / yorum
attributesobjectEvetSchema davranış tanımı (aşağıda)

attributes Alanları

AlanTipZorunluAçıklama
typestringEvetSchema tipi — aşağıdaki enum tablosuna bakın
schemaobjectEvetJSON Schema tanımı (Draft 2020-12). Aşağıdaki iç yapı tablosuna bakın
labelsarrayHayırÇoklu dil etiketleri. Her öğe: label (string) + language (pattern: ^[a-z]{2}-[A-Z]{2}$)

attributes.type Enum Değerleri

DeğerAçıklama
workflowWorkflow bileşeni tanımı
taskTask bileşeni tanımı
functionFunction bileşeni tanımı
viewView bileşeni tanımı
schemaSchema bileşeni tanımı
extensionExtension bileşeni tanımı
headersHeaders schema tanımı

attributes.schema İç Yapısı (JSON Schema)

AlanTipZorunluAçıklama
$schemastringEvetJSON Schema spesifikasyon versiyonu. Sabit: https://json-schema.org/draft/2020-12/schema
$idstringEvetSchema tanımlayıcı URI'si
titlestringEvetSchema başlığı (minLength: 1)
typestringEvetJSON tipi: object, array, string, number, integer, boolean, null
descriptionstringHayırSchema açıklaması
propertiesobjectHayırObje property tanımları
requiredstring[]HayırZorunlu property listesi
additionalPropertiesbooleanHayırEk property'lere izin verilip verilmeyeceği
itemsobjectHayırArray elemanları schema tanımı
enumarrayHayırİzin verilen sabit değerler listesi
oneOfarrayHayırAlternatif schema seçenekleri (tam bir eşleşme)
anyOfarrayHayırAlternatif schema seçenekleri (en az bir eşleşme)
allOfarrayHayırTüm schema gereksinimleri (tümü eşleşmeli)
if / then / elseobjectHayırKoşullu schema tanımları
formatstringHayırString format doğrulaması (örn. email, date-time, uri)
patternstringHayırString regex doğrulaması
minimum / maximumnumberHayırSayısal değer aralığı
minLength / maxLengthintegerHayırString uzunluk aralığı
minItems / maxItemsintegerHayırArray eleman sayısı aralığı
constanyHayırSabit değer
defaultanyHayırVarsayılan değer

Validation

Schema'lar Ajv2019 ile doğrulanır. Front-end'de form validation için annotation'lar kullanılabilir; back-end'de transition/start request'lerinde otomatik valide edilir.

  • Frontend: form annotation, real-time validation
  • Backend: request body validation, instance data merge validation
  • CI/CD: schema kendisi vnext-schema repo'da merkezi olarak doğrulanır

Tipik Kullanım Senaryoları

  • Master schema ile instance data'nın immutable ve versionable kalmasını garanti et
  • Transition schema ile her transition için farklı request body validation

İlgili