Ana içeriğe geç

Extension

Extension bileşeni, instance data zenginleştirme için kullanılır. Data Function ve GetInstanceData endpoint'lerinde extension'lar çağrılır ve sonuçları response'da extensions objesinde yer alır.

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

Tanım JSON Örneği

Schema: extension-definition.schema.json

{
"key": "extension-customer-detail",
"version": "1.0.0",
"domain": "core",
"flow": "sys-extensions",
"flowVersion": "1.0.0",
"tags": ["core", "customer", "enrichment"],
"_comment": "Müşteri detay bilgisini instance verisine ekleyen extension",
"attributes": {
"type": 3,
"scope": 1,
"task": {
"order": 1,
"task": {
"key": "get-customer-detail",
"domain": "core",
"flow": "sys-tasks",
"version": "1.0.0"
},
"mapping": {
"type": "L",
"location": "./src/CustomerDetailMapping.csx",
"code": "<BASE64_ENCODED_CODE>",
"encoding": "B64"
}
},
"labels": [
{ "label": "Customer Detail", "language": "en-US" },
{ "label": "Müşteri Detay", "language": "tr-TR" }
]
}
}

Kullanım Modeli

Bir instance veri sorgulandığında veya bir Data Function çağrıldığında, workflow tanımındaki extensions listesi çalıştırılır ve sonuçlar response'a eklenir:

{
"id": "...",
"key": "...",
"metadata": { },
"attributes": { },
"extensions": {
"customerDetail": { },
"creditHistory": { }
}
}

Her extension key'i, extensions objesinde camelCase property olarak yer alır (örn. customer-detailcustomerDetail) ve içeriği extension'ın döndürdüğü veridir.


Properties

Top-Level Alanlar

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

attributes Alanları

AlanTipZorunluAçıklama
typeintegerEvetExtension tipi — aşağıdaki enum tablosuna bakın
scopeintegerEvetExtension kapsamı — aşağıdaki enum tablosuna bakın
taskobjectEvetExtension'ın çalıştıracağı task tanımı (aşağıda)
labelsarrayHayırÇoklu dil etiketleri. Her öğe: label (string) + language (pattern: ^[a-z]{2}-[A-Z]{2}$)

attributes.type Enum Değerleri

DeğerAdAçıklama
1GlobalTüm akışlarda kayıt örnekleri dönerken çalışır
2GlobalAndRequestedTüm akışlarda ve kayıt örnekleri talep edildiğinde çalışır
3DefinedFlowsYalnızca tanımlandığı akışlarda çalışır
4DefinedFlowAndRequestedTanımlandığı akışlarda ve talep edildiğinde çalışır

attributes.scope Enum Değerleri

DeğerAdAçıklama
1GetInstance{domain}/workflows/{workflow}/instances/{instance} endpoint'inde çalışır
2GetAllInstances{domain}/workflows/{workflow}/instances endpoint'inde çalışır
3EverywhereTüm get endpoint'lerinde çalışır

task Yapısı

AlanTipZorunluAçıklama
orderintegerEvetTask çalışma sırası (minimum: 1)
taskobjectEvetTask referansı — explicit (key, domain, flow, version) veya ref (ref)
mappingobjectEvetMapping kodu tanımı (aşağıda)

Mapping

AlanTipZorunluVarsayılanAçıklama
typestringHayırLG = Global, L = Local. Global ise code gerekmez
locationstringHayırKod dosyası yolu (pattern: ^\.\/.*\.csx$)
codestringKoşulluMapping kodu. type = L ise zorunlu
encodingstringHayırB64Kodlama formatı: B64 (Base64) veya NAT (Native)

Tipik Kullanım Senaryoları

  • Customer enrichment: müşteri ID'sinden tam müşteri bilgisi
  • Credit history: instance ile ilişkili kredi geçmişi
  • External system data: dış sistemlerden veri çekme
  • Computed fields: instance verisi üzerinden hesaplanan alanlar

İlgili