Ana içeriğe geç

View

View bileşeni, ön uçta kullanıcı entegrasyonu (User Integration) sağlamak için tanımlanan UI yapılarıdır. Backend-Driven View mantığı ile platformların (Mobile, Web vb.) sürüm çıkışlarını minimize eder.

Schema: vnext-schema/view-definition.schema.json

Tanım JSON Örneği

JSON İçerikli View

Schema: view-definition.schema.json

{
"key": "account-type-selection-view",
"version": "1.0.0",
"domain": "banking",
"flow": "sys-views",
"flowVersion": "1.0.0",
"tags": ["banking", "account", "form"],
"_comment": "Hesap türü seçimi ekranı",
"attributes": {
"type": 1,
"display": "full-page",
"renderer": "pseudo-ui",
"content": {
"type": "form",
"title": {
"en-US": "Choose Your Account Type",
"tr-TR": "Hesap Türünüzü Seçin"
},
"fields": [
{
"name": "accountType",
"type": "select",
"label": { "en-US": "Account Type", "tr-TR": "Hesap Türü" },
"required": true
}
]
},
"labels": [
{ "label": "Account Type Selection", "language": "en-US" },
{ "label": "Hesap Türü Seçimi", "language": "tr-TR" }
]
}
}

Schema: view-definition.schema.json

{
"key": "otp-verification-view",
"version": "1.0.0",
"domain": "core",
"flow": "sys-views",
"flowVersion": "1.0.0",
"tags": ["core", "otp", "verification"],
"attributes": {
"type": 4,
"display": "popup",
"content": "myapp://otp-verify?flow=account-opening",
"labels": [
{ "label": "OTP Verification", "language": "en-US" },
{ "label": "OTP Doğrulama", "language": "tr-TR" }
]
}
}

Kullanım Modeli

State veya transition seviyesinde view tanımları yapılır. vNext Client Workflow Manager SDK state ve transition döngülerinde doğru view'ı kullanıcıya döner. View, gerekli data'yı Data Function'dan talep ederek render edilir.

Detaylı akış için: User Integration (kavramsal).


Properties

Top-Level Alanlar

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

attributes Alanları

AlanTipZorunluAçıklama
typeintegerEvetView içerik tipi — aşağıdaki enum tablosuna bakın
contentstring / object / arrayEvetView içeriği. Kabul edilen tip, type değerine bağlıdır (aşağıda)
displaystringHayırGösterim modu — aşağıdaki enum tablosuna bakın
labelsarrayHayırÇoklu dil etiketleri. Her öğe: label (string) + language (pattern: ^[a-z]{2}-[A-Z]{2}$)
renderer NewstringHayırUI SDK render motoru belirleyicisi. Yalnızca type: 1 (JSON) için geçerlidir — aşağıdaki enum tablosuna bakın
_commentstringHayırAçıklama / yorum

attributes.type Enum Değerleri

DeğerAdKabul Edilen content TipiAçıklama
1JSONstring, object veya arrayJSON içerikli view (form, liste vb.)
2HTMLstringHTML içerikli view
3MarkdownstringMarkdown içerikli view
4Deeplinkstring, object veya arrayMobil deeplink yönlendirmesi
5Httpstring, object veya arrayHTTP URL yönlendirmesi
6URNstring, object veya arrayURN tabanlı içerik referansı

display Enum Değerleri

DeğerAçıklama
full-pageTam sayfa görünüm
popupPopup / modal pencere
bottom-sheetAlt sayfa (bottom sheet)
top-sheetÜst sayfa (top sheet)
drawerYan menü / çekmece
inlineSayfa içi gömülü görünüm

renderer Enum Değerleri New

Yalnızca type: 1 (JSON) view'lar için geçerlidir. Client SDK'nın hangi render motoruyla içeriği yorumlayacağını belirtir.

DeğerAçıklama
pseudo-uiPseudo UI renderer (schema-driven form generation)
flutterFlutter renderer
angularAngular renderer
vueVue.js renderer
reactReact renderer
react-nativeReact Native renderer
native-iosNative iOS renderer
native-androidNative Android renderer

Platform Overrides

Tek bir view, platform-specific override'lar içerebilir:

  • default — fallback render
  • web — web-specific
  • mobile-ios — iOS-specific
  • mobile-android — Android-specific

Client SDK platform header'ını okuyarak doğru variant'ı render eder.

Tipik Kullanım Senaryoları

  • State view: state'e gelindiğinde render edilen ana ekran
  • Transition view: transition öncesi popup/modal onay mekanizması
  • Form rendering: Schema ile birlikte form generation
  • Backend-driven UI: ekran değişikliklerinin sadece backend deploy ile yapılması

İlgili