@burgan-tech/vnext-core-runtime
Version:
vNext Core Domain - Runtime Package for engine deployment
1,347 lines • 124 kB
JSON
{
"key": "sys-schemas",
"version": "1.0.0",
"domain": "core",
"flow": "sys-flows",
"flowVersion": "1.0.0",
"tags": [
"core",
"schema",
"lifecycle",
"repository"
],
"attributes": {
"timeout": null,
"type": "F",
"labels": [
{
"language": "en-US",
"label": "Schema Lifecycle Management"
},
{
"language": "tr-TR",
"label": "Şema Yaşam Döngüsü Yönetimi"
}
],
"functions": [],
"sharedTransitions": [],
"extensions": [],
"features": [],
"startTransition": {
"key": "create",
"target": "draft",
"triggerType": 0,
"labels": [
{
"language": "en-US",
"label": "Create Schema"
},
{
"language": "tr-TR",
"label": "Şema Oluştur"
}
],
"versionStrategy": "Minor",
"schema": {
"key": "schema",
"version": "1.0.0",
"domain": "core",
"flow": "sys-schemas"
},
"onExecutionTasks": [],
"view": null
},
"states": [
{
"key": "draft",
"stateType": 1,
"labels": [
{
"language": "en-US",
"label": "Draft State"
},
{
"language": "tr-TR",
"label": "Taslak Durumu"
}
],
"transitions": [
{
"key": "activate",
"from": "draft",
"target": "active",
"triggerType": 0,
"labels": [
{
"language": "en-US",
"label": "Activate Schema"
},
{
"language": "tr-TR",
"label": "Şemayı Aktifleştir"
}
],
"versionStrategy": "Minor",
"onExecutionTasks": [
{
"order": 1,
"task": {
"key": "invalidate-cache",
"version": "1.0.0",
"domain": "core",
"flow": "sys-tasks"
},
"mapping": {
"location": "./src/InvalideCacheMapping.csx",
"code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKcHVibGljIGNsYXNzIEludmFsaWRhdGVDYWNoZU1hcHBpbmcgOiBJTWFwcGluZwp7CiAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogIHsKICAgIHZhciBkYXByVGFzayA9IHRhc2sgYXMgRGFwclNlcnZpY2VUYXNrOwogICAgZGFwclRhc2suU2V0TWV0aG9kTmFtZSgiL2FwaS92MS9hZG1pbi9pbnZhbGlkYXRlIik7CiAgICB2YXIgZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudC5HZXRFbnZpcm9ubWVudFZhcmlhYmxlKCJBU1BORVRDT1JFX0VOVklST05NRU5UIik7CgogICAgaWYgKGVudmlyb25tZW50ID09ICJEZXZlbG9wbWVudCIpCiAgICB7CiAgICAgIC8vIExvY2FsIGRldmVsb3BtZW50CiAgICAgIGRhcHJUYXNrLlNldEFwcElkKCJ2bmV4dC1hcHAiKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgZGFwclRhc2suU2V0QXBwSWQoJCJhbW9ycGhpZS12bmV4dC57ZW52aXJvbm1lbnQuVG9Mb3dlcigpfS1hbW9ycGhpZS12bmV4dCIpOwogICAgfQoKICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICB7CiAgICAgIERhdGEgPSBuZXcKICAgICAgewogICAgICAgIGtleSA9IGNvbnRleHQuSW5zdGFuY2UuS2V5LAogICAgICAgIGZsb3cgPSBjb250ZXh0LldvcmtmbG93LktleSwKICAgICAgICBkb21haW4gPSBjb250ZXh0LlJ1bnRpbWUuRG9tYWluLAogICAgICAgIHZlcnNpb24gPSBjb250ZXh0Lkluc3RhbmNlLkxhdGVzdERhdGE/LlZlcnNpb24gPz8gIjEuMC4wIgogICAgICB9LAogICAgICBIZWFkZXJzID0gbnVsbAogICAgfSk7CiAgfQoKICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgewogICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgfQp9Cg=="
}
},
{
"order": 1,
"task": {
"key": "invalidate-cache",
"version": "1.0.0",
"domain": "core",
"flow": "sys-tasks"
},
"mapping": {
"location": "./src/InvalideCacheExecutionMapping.csx",
"code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKcHVibGljIGNsYXNzIEludmFsaWRlQ2FjaGVFeGVjdXRpb25NYXBwaW5nIDogSU1hcHBpbmcKewogIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICB7CiAgICB2YXIgZGFwclRhc2sgPSB0YXNrIGFzIERhcHJTZXJ2aWNlVGFzazsKICAgIGRhcHJUYXNrLlNldE1ldGhvZE5hbWUoIi9hcGkvdjEvdXRpbGl0aWVzL2ludmFsaWRhdGUiKTsKICAgIHZhciBlbnZpcm9ubWVudCA9IEVudmlyb25tZW50LkdldEVudmlyb25tZW50VmFyaWFibGUoIkFTUE5FVENPUkVfRU5WSVJPTk1FTlQiKTsKCiAgICBpZiAoZW52aXJvbm1lbnQgPT0gIkRldmVsb3BtZW50IikKICAgIHsKICAgICAgLy8gTG9jYWwgZGV2ZWxvcG1lbnQKICAgICAgZGFwclRhc2suU2V0QXBwSWQoInZuZXh0LWV4ZWN1dGlvbi1hcHAiKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgZGFwclRhc2suU2V0QXBwSWQoJCJhbW9ycGhpZS12bmV4dC1leGVjdXRpb24ue2Vudmlyb25tZW50LlRvTG93ZXIoKX0tYW1vcnBoaWUtdm5leHQtZXhlY3V0aW9uIik7CiAgICB9CgogICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgIHsKICAgICAgRGF0YSA9IG5ldwogICAgICB7CiAgICAgICAga2V5ID0gY29udGV4dC5JbnN0YW5jZS5LZXksCiAgICAgICAgZmxvdyA9IGNvbnRleHQuV29ya2Zsb3cuS2V5LAogICAgICAgIGRvbWFpbiA9IGNvbnRleHQuUnVudGltZS5Eb21haW4sCiAgICAgICAgdmVyc2lvbiA9IGNvbnRleHQuSW5zdGFuY2UuTGF0ZXN0RGF0YT8uVmVyc2lvbiA/PyAiMS4wLjAiCiAgICAgIH0sCiAgICAgIEhlYWRlcnMgPSBudWxsCiAgICB9KTsKICB9CgogIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICB7CiAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICB9Cn0K"
}
}
],
"view": null
},
{
"key": "delete",
"from": "draft",
"target": "draft",
"triggerType": 0,
"labels": [
{
"language": "en-US",
"label": "Delete Draft"
},
{
"language": "tr-TR",
"label": "Taslağı Sil"
}
],
"versionStrategy": "Minor",
"onExecutionTasks": [],
"view": null
}
],
"view": null,
"onEntries": [],
"onExits": [],
"versionStrategy": "Minor"
},
{
"key": "active",
"stateType": 2,
"labels": [
{
"language": "en-US",
"label": "Active State"
},
{
"language": "tr-TR",
"label": "Aktif Durumu"
}
],
"transitions": [
{
"key": "deactivate",
"from": "active",
"target": "passive",
"triggerType": 0,
"labels": [
{
"language": "en-US",
"label": "Deactivate Schema"
},
{
"language": "tr-TR",
"label": "Şemayı Pasifleştir"
}
],
"versionStrategy": "Minor",
"onExecutionTasks": [],
"view": null
},
{
"key": "update",
"from": "active",
"target": "active",
"triggerType": 0,
"labels": [
{
"language": "en-US",
"label": "Update Schema"
},
{
"language": "tr-TR",
"label": "Şemayı Güncelle"
}
],
"versionStrategy": "Minor",
"onExecutionTasks": [
{
"order": 1,
"task": {
"key": "invalidate-cache",
"version": "1.0.0",
"domain": "core",
"flow": "sys-tasks"
},
"mapping": {
"location": "./src/InvalideCacheMapping.csx",
"code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKcHVibGljIGNsYXNzIEludmFsaWRhdGVDYWNoZU1hcHBpbmcgOiBJTWFwcGluZwp7CiAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogIHsKICAgIHZhciBkYXByVGFzayA9IHRhc2sgYXMgRGFwclNlcnZpY2VUYXNrOwogICAgZGFwclRhc2suU2V0TWV0aG9kTmFtZSgiL2FwaS92MS9hZG1pbi9pbnZhbGlkYXRlIik7CiAgICB2YXIgZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudC5HZXRFbnZpcm9ubWVudFZhcmlhYmxlKCJBU1BORVRDT1JFX0VOVklST05NRU5UIik7CgogICAgaWYgKGVudmlyb25tZW50ID09ICJEZXZlbG9wbWVudCIpCiAgICB7CiAgICAgIC8vIExvY2FsIGRldmVsb3BtZW50CiAgICAgIGRhcHJUYXNrLlNldEFwcElkKCJ2bmV4dC1hcHAiKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgZGFwclRhc2suU2V0QXBwSWQoJCJhbW9ycGhpZS12bmV4dC57ZW52aXJvbm1lbnQuVG9Mb3dlcigpfS1hbW9ycGhpZS12bmV4dCIpOwogICAgfQoKICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICB7CiAgICAgIERhdGEgPSBuZXcKICAgICAgewogICAgICAgIGtleSA9IGNvbnRleHQuSW5zdGFuY2UuS2V5LAogICAgICAgIGZsb3cgPSBjb250ZXh0LldvcmtmbG93LktleSwKICAgICAgICBkb21haW4gPSBjb250ZXh0LlJ1bnRpbWUuRG9tYWluLAogICAgICAgIHZlcnNpb24gPSBjb250ZXh0Lkluc3RhbmNlLkxhdGVzdERhdGE/LlZlcnNpb24gPz8gIjEuMC4wIgogICAgICB9LAogICAgICBIZWFkZXJzID0gbnVsbAogICAgfSk7CiAgfQoKICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgewogICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgfQp9Cg=="
}
},
{
"order": 1,
"task": {
"key": "invalidate-cache",
"version": "1.0.0",
"domain": "core",
"flow": "sys-tasks"
},
"mapping": {
"location": "./src/InvalideCacheExecutionMapping.csx",
"code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKcHVibGljIGNsYXNzIEludmFsaWRlQ2FjaGVFeGVjdXRpb25NYXBwaW5nIDogSU1hcHBpbmcKewogIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICB7CiAgICB2YXIgZGFwclRhc2sgPSB0YXNrIGFzIERhcHJTZXJ2aWNlVGFzazsKICAgIGRhcHJUYXNrLlNldE1ldGhvZE5hbWUoIi9hcGkvdjEvdXRpbGl0aWVzL2ludmFsaWRhdGUiKTsKICAgIHZhciBlbnZpcm9ubWVudCA9IEVudmlyb25tZW50LkdldEVudmlyb25tZW50VmFyaWFibGUoIkFTUE5FVENPUkVfRU5WSVJPTk1FTlQiKTsKCiAgICBpZiAoZW52aXJvbm1lbnQgPT0gIkRldmVsb3BtZW50IikKICAgIHsKICAgICAgLy8gTG9jYWwgZGV2ZWxvcG1lbnQKICAgICAgZGFwclRhc2suU2V0QXBwSWQoInZuZXh0LWV4ZWN1dGlvbi1hcHAiKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgZGFwclRhc2suU2V0QXBwSWQoJCJhbW9ycGhpZS12bmV4dC1leGVjdXRpb24ue2Vudmlyb25tZW50LlRvTG93ZXIoKX0tYW1vcnBoaWUtdm5leHQtZXhlY3V0aW9uIik7CiAgICB9CgogICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgIHsKICAgICAgRGF0YSA9IG5ldwogICAgICB7CiAgICAgICAga2V5ID0gY29udGV4dC5JbnN0YW5jZS5LZXksCiAgICAgICAgZmxvdyA9IGNvbnRleHQuV29ya2Zsb3cuS2V5LAogICAgICAgIGRvbWFpbiA9IGNvbnRleHQuUnVudGltZS5Eb21haW4sCiAgICAgICAgdmVyc2lvbiA9IGNvbnRleHQuSW5zdGFuY2UuTGF0ZXN0RGF0YT8uVmVyc2lvbiA/PyAiMS4wLjAiCiAgICAgIH0sCiAgICAgIEhlYWRlcnMgPSBudWxsCiAgICB9KTsKICB9CgogIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICB7CiAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICB9Cn0K"
}
}
],
"schema": {
"key": "schema",
"version": "1.0.0",
"domain": "core",
"flow": "sys-schemas"
},
"view": null
}
],
"view": null,
"onEntries": [],
"onExits": [],
"versionStrategy": "Minor"
},
{
"key": "passive",
"stateType": 2,
"labels": [
{
"language": "en-US",
"label": "Passive State"
},
{
"language": "tr-TR",
"label": "Pasif Durumu"
}
],
"transitions": [
{
"key": "reactivate",
"from": "passive",
"target": "active",
"triggerType": 0,
"labels": [
{
"language": "en-US",
"label": "Reactivate Schema"
},
{
"language": "tr-TR",
"label": "Şemayı Yeniden Aktifleştir"
}
],
"versionStrategy": "Minor",
"onExecutionTasks": [],
"view": null
},
{
"key": "archive",
"from": "passive",
"target": "passive",
"triggerType": 0,
"labels": [
{
"language": "en-US",
"label": "Archive Schema"
},
{
"language": "tr-TR",
"label": "Şemayı Arşivle"
}
],
"versionStrategy": "Minor",
"onExecutionTasks": [],
"view": null
}
],
"view": null,
"onEntries": [],
"onExits": [],
"versionStrategy": "Minor"
},
{
"key": "deleted",
"stateType": 2,
"labels": [
{
"language": "en-US",
"label": "Deleted State"
},
{
"language": "tr-TR",
"label": "Silinmiş Durum"
}
],
"transitions": [
{
"key": "recover",
"from": "deleted",
"target": "active",
"triggerType": 0,
"labels": [
{
"language": "en-US",
"label": "Recover"
},
{
"language": "tr-TR",
"label": "Geri Al"
}
],
"versionStrategy": "Minor",
"onExecutionTasks": [],
"view": null
}
],
"view": null,
"onEntries": [],
"onExits": [],
"versionStrategy": "Minor"
}
]
},
"data": [
{
"key": "schema",
"version": "1.0.0",
"tags": [
"core",
"schema",
"metaSchema",
"base"
],
"attributes": {
"type": "schema",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schemas.vnext.com/core/schema.json",
"title": "Schema Definition",
"description": "Gerçek JSON Schema tanımının bulunduğu alan. Bu alan valid bir JSON Schema olmalıdır.",
"type": "object",
"properties": {
"$schema": {
"type": "string",
"format": "uri",
"description": "JSON Schema versiyonu"
},
"$id": {
"type": "string",
"format": "uri",
"description": "Şemanın benzersiz URI'si"
},
"title": {
"type": "string",
"description": "Şemanın başlığı"
},
"description": {
"type": "string",
"description": "Şemanın açıklaması"
},
"type": {
"type": [
"string",
"array"
],
"description": "JSON Schema type tanımı"
}
},
"required": [
"$schema",
"$id",
"title",
"description",
"type"
],
"additionalProperties": true
}
}
},
{
"key": "task",
"version": "1.0.0",
"tags": [
"core",
"schema",
"task",
"polymorphic"
],
"attributes": {
"type": "task",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schemas.vnext.com/core/task.json",
"title": "Task Definition",
"description": "Polimorfik task tanımları. Task tipine göre farklı konfigürasyon şemaları kullanır.",
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Task tipi (TaskType enum değeri string olarak)",
"enum": [
"1",
"2",
"3",
"4",
"5",
"6",
"7"
]
},
"config": {
"type": "object",
"description": "Task konfigürasyon objesi"
}
},
"required": [
"type",
"config"
],
"allOf": [
{
"if": {
"properties": {
"type": {
"const": "1"
}
}
},
"then": {
"title": "DaprHttpEndpoint Task",
"properties": {
"type": {
"const": "1"
},
"config": {
"type": "object",
"description": "Dapr HTTP Endpoint konfigürasyonu",
"properties": {
"endpointName": {
"type": "string",
"description": "Dapr HTTP endpoint adı",
"minLength": 1
},
"path": {
"type": "string",
"description": "HTTP endpoint path",
"minLength": 1
},
"method": {
"type": "string",
"description": "HTTP metodu",
"enum": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH"
],
"default": "GET"
},
"headers": {
"type": "object",
"description": "HTTP header bilgileri"
}
},
"required": [
"endpointName",
"path",
"method"
],
"additionalProperties": false
}
},
"required": [
"type",
"config"
],
"additionalProperties": false
}
},
{
"if": {
"properties": {
"type": {
"const": "2"
}
}
},
"then": {
"title": "DaprBinding Task",
"properties": {
"type": {
"const": "2"
},
"config": {
"type": "object",
"description": "Dapr Binding konfigürasyonu",
"properties": {
"bindingName": {
"type": "string",
"description": "Dapr binding adı",
"minLength": 1
},
"operation": {
"type": "string",
"description": "Binding operasyonu",
"minLength": 1
},
"metadata": {
"type": "object",
"description": "Binding metadata bilgileri"
},
"data": {
"type": "object",
"description": "Binding data bilgileri"
}
},
"required": [
"bindingName",
"operation"
],
"additionalProperties": false
}
},
"required": [
"type",
"config"
],
"additionalProperties": false
}
},
{
"if": {
"properties": {
"type": {
"const": "3"
}
}
},
"then": {
"title": "DaprService Task",
"properties": {
"type": {
"const": "3"
},
"config": {
"type": "object",
"description": "Dapr Service konfigürasyonu",
"properties": {
"appId": {
"type": "string",
"description": "Dapr app ID",
"minLength": 1
},
"methodName": {
"type": "string",
"description": "Servis method adı",
"minLength": 1
},
"httpVerb": {
"type": "string",
"description": "HTTP verb",
"enum": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH"
]
},
"data": {
"type": "object",
"description": "Servis çağrısı data"
},
"queryString": {
"type": "string",
"description": "Query string parametreleri"
},
"timeoutSeconds": {
"type": "integer",
"description": "Timeout süresi (saniye)",
"minimum": 1,
"default": 30
}
},
"required": [
"appId",
"methodName"
],
"additionalProperties": false
}
},
"required": [
"type",
"config"
],
"additionalProperties": false
}
},
{
"if": {
"properties": {
"type": {
"const": "4"
}
}
},
"then": {
"title": "DaprPubSub Task",
"properties": {
"type": {
"const": "4"
},
"config": {
"type": "object",
"description": "Dapr PubSub konfigürasyonu",
"properties": {
"pubSubName": {
"type": "string",
"description": "PubSub component adı",
"minLength": 1
},
"topic": {
"type": "string",
"description": "Topic adı",
"minLength": 1
},
"data": {
"type": "object",
"description": "Message data"
},
"metadata": {
"type": "object",
"description": "Message metadata"
}
},
"required": [
"pubSubName",
"topic"
],
"additionalProperties": false
}
},
"required": [
"type",
"config"
],
"additionalProperties": false
}
},
{
"if": {
"properties": {
"type": {
"const": "5"
}
}
},
"then": {
"title": "Human Task",
"properties": {
"type": {
"const": "5"
},
"config": {
"type": "object",
"description": "Human Task konfigürasyonu",
"properties": {
"title": {
"type": "string",
"description": "Task başlığı",
"minLength": 1
},
"instructions": {
"type": "string",
"description": "Task talimatları",
"minLength": 1
},
"assignedTo": {
"type": "string",
"description": "Atanan kişi/grup",
"minLength": 1
},
"dueDate": {
"type": [
"string",
"null"
],
"description": "Bitiş tarihi (ISO 8601 format)",
"format": "date-time"
},
"form": {
"description": "Form tanımı JSON formatında"
},
"reminderIntervalMinutes": {
"type": "integer",
"description": "Hatırlatma aralığı (dakika)",
"minimum": 0
},
"escalationTimeoutMinutes": {
"type": "integer",
"description": "Escalation timeout (dakika)",
"minimum": 0
},
"escalationAssignee": {
"type": "string",
"description": "Escalation atanacak kişi/grup"
}
},
"required": [
"title",
"instructions",
"assignedTo"
],
"additionalProperties": false
}
},
"required": [
"type",
"config"
],
"additionalProperties": false
}
},
{
"if": {
"properties": {
"type": {
"const": "6"
}
}
},
"then": {
"title": "Http Task",
"properties": {
"type": {
"const": "6"
},
"config": {
"type": "object",
"description": "HTTP Task konfigürasyonu",
"properties": {
"url": {
"type": "string",
"description": "HTTP URL"
},
"method": {
"type": "string",
"description": "HTTP metodu",
"enum": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH"
],
"default": "GET"
},
"headers": {
"type": "object",
"description": "HTTP header bilgileri"
},
"body": {
"type": "object",
"description": "HTTP request body"
},
"timeoutSeconds": {
"type": "integer",
"description": "Timeout süresi (saniye)",
"minimum": 1,
"default": 30
},
"validateSsl": {
"type": "boolean",
"description": "SSL doğrulaması yapılsın mı",
"default": true
}
},
"required": [
"url",
"method"
],
"additionalProperties": false
}
},
"required": [
"type",
"config"
],
"additionalProperties": false
}
},
{
"if": {
"properties": {
"type": {
"const": "7"
}
}
},
"then": {
"title": "Script Task",
"properties": {
"type": {
"const": "7"
},
"config": {
"type": "object",
"description": "Script Task konfigürasyonu",
"properties": {},
"additionalProperties": false
}
},
"required": [
"type",
"config"
],
"additionalProperties": false
}
}
],
"additionalProperties": false
}
}
},
{
"key": "view",
"version": "1.0.0",
"tags": [
"core",
"schema",
"view",
"ui"
],
"attributes": {
"type": "view",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schemas.vnext.com/core/view.json",
"title": "View Definition",
"description": "vNext platformunda view tanımları için şema. View içerik türü, hedef ve içerik bilgilerini içerir.",
"type": "object",
"properties": {
"type": {
"type": "integer",
"description": "View içerik türü",
"oneOf": [
{
"const": 1,
"description": "Json içerik türü"
},
{
"const": 2,
"description": "Html içerik türü"
},
{
"const": 3,
"description": "Markdown içerik türü"
}
]
},
"target": {
"type": "integer",
"description": "View'in hedef aldığı workflow component türü",
"oneOf": [
{
"const": 1,
"description": "State hedefli view"
},
{
"const": 2,
"description": "Transition hedefli view"
},
{
"const": 3,
"description": "Task hedefli view"
}
]
},
"content": {
"type": "string",
"description": "View'in içeriği. Json, Html veya Markdown formatında olabilir.",
"minLength": 1
}
},
"required": [
"type",
"target",
"content"
],
"additionalProperties": false
}
}
},
{
"key": "workflow",
"version": "1.0.0",
"tags": [
"core",
"workflow",
"stateMachine",
"schema"
],
"attributes": {
"type": "workflow",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schemas.vnext.com/core/workflow.json",
"title": "Workflow Definition",
"description": "vNext platformunda iş akışı tanımlarını yapılandıran şema. Sadece workflow attributes yapısını tanımlar.",
"type": "object",
"properties": {
"timeout": {
"anyOf": [
{
"type": "object",
"description": "Workflow timeout yapılandırması",
"required": [
"key",
"target",
"versionStrategy",
"timer"
],
"properties": {
"key": {
"type": "string",
"description": "Timeout anahtar değeri",
"pattern": "^[a-z0-9-]+$",
"maxLength": 255
},
"target": {
"type": "string",
"description": "Timeout durumunda hedef state",
"pattern": "^[a-z0-9-]+$",
"maxLength": 255
},
"versionStrategy": {
"type": "string",
"enum": [
"Minor",
"Major"
],
"description": "Timeout sonrası versiyon stratejisi",
"maxLength": 50
},
"timer": {
"type": "object",
"required": [
"reset",
"duration"
],
"properties": {
"reset": {
"type": "string",
"description": "Timer reset stratejisi"
},
"duration": {
"type": "string",
"pattern": "^P(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?$",
"description": "Süre bilgisi (ISO 8601 formatında)",
"maxLength": 100
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Workflow genel timeout tanımı"
},
"type": {
"oneOf": [
{
"const": "C",
"description": "Core workflow türü"
},
{
"const": "F",
"description": "Flow workflow türü"
},
{
"const": "S",
"description": "SubFlow workflow türü"
},
{
"const": "P",
"description": "Sub Process workflow türü"
}
],
"description": "Workflow'un türü"
},
"labels": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"language"
],
"properties": {
"label": {
"type": "string",
"description": "Kullanıcıya gösterilecek metin içeriği",
"maxLength": 500
},
"language": {
"type": "string",
"description": "ISO 639 formatında dil kodu",
"pattern": "^[a-z]{2}(-[A-Z]{2})?$",
"maxLength": 10
}
},
"additionalProperties": false
},
"minItems": 1,
"examples": [
[
{
"label": "User Login",
"language": "en-US"
},
{
"label": "Kullanıcı Girişi",
"language": "tr-TR"
}
],
[
{
"label": "Data Processing",
"language": "en-US"
},
{
"label": "Veri İşleme",
"language": "tr-TR"
}
]
],
"description": "Workflow'un çoklu dil etiketleri"
},
"functions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Referans edilen kaydın anahtar değeri (okunabilir identifier)",
"pattern": "^[a-z0-9-]+$",
"maxLength": 255
},
"domain": {
"type": "string",
"description": "Referans edilen kaydın bulunduğu domain (cross-domain referanslar için zorunlu)",
"pattern": "^[a-zA-Z\\-]+$",
"maxLength": 100,
"examples": [
"core",
"idm",
"banking",
"payment"
]
},
"flow": {
"type": "string",
"description": "Referans edilen kaydın bulunduğu flow adı",
"pattern": "^[a-z\\-]+$",
"maxLength": 100
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$",
"description": "Referans edilen kaydın sürüm bilgisi (semantic versioning MAJOR.MINOR.PATCH formatında)",
"maxLength": 50
}
},
"required": [
"key",
"domain",
"flow",
"version"
],
"additionalProperties": false,
"examples": [
{
"key": "user-authentication-workflow",
"domain": "idm",
"flow": "user-authentication",
"version": "1.0.0"
},
{
"key": "user-login-state",
"domain": "core",
"flow": "authentication",
"version": "2.1.0"
},
{
"key": "payment-validation-task",
"domain": "banking",
"flow": "payment-process",
"version": "1.2.3"
}
]
},
"description": "Workflow ile ilişkili function referansları"
},
"sharedTransitions": {
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Geçişin anahtar değeri. Geçiş talebinde kullanılır ve akış özelinde tekildir.",
"pattern": "^[a-z0-9-]+$",
"maxLength": 255
},
"target": {
"type": "string",
"description": "Geçiş başarılı tamamlandığında erişeceği state key'i",
"pattern": "^[a-zA-Z0-9\\-]+$",
"maxLength": 255
},
"from": {
"type": "string",
"description": "Kaynak state key'i",
"pattern": "^[a-zA-Z0-9\\-]+$",
"maxLength": 255
},
"versionStrategy": {
"type": "string",
"enum": [
"Minor",
"Major"
],
"description": "Başarılı geçiş sonrasında versiyon artış stratejisi",
"maxLength": 50
},
"triggerType": {
"type": "integer",
"enum": [
0,
1,
2,
3
],
"description": "Trigger türü. 0=Manual, 1=Automatic, 2=Timeout, 3=Event"
},
"availableIn": {
"type": "array",
"items": {
"type": "string"
},
"description": "Bu transition'ın kullanılabileceği state'lerin listesi"
},
"schema": {
"anyOf": [
{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Referans edilen kaydın anahtar değeri (okunabilir identifier)",
"pattern": "^[a-z0-9-]+$",
"maxLength": 255
},
"domain": {
"type": "string",
"description": "Referans edilen kaydın bulunduğu domain (cross-domain referanslar için zorunlu)",
"pattern": "^[a-zA-Z\\-]+$",
"maxLength": 100,
"examples": [
"core",
"idm",
"banking",
"payment"
]
},
"flow": {
"type": "string",
"description": "Referans edilen kaydın bulunduğu flow adı",
"pattern": "^[a-zA-Z\\-]+$",
"maxLength": 100
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$",
"description": "Referans edilen kaydın sürüm bilgisi (semantic versioning MAJOR.MINOR.PATCH formatında)",
"maxLength": 50
}
},
"required": [
"key",
"domain",
"flow",
"version"
],
"additionalProperties": false,
"examples": [
{
"key": "user-authentication-workflow",
"domain": "idm",
"flow": "user-authentication",
"version": "1.0.0"
},
{
"key": "user-login-state",
"domain": "core",
"flow": "authentication",
"version": "2.1.0"
},
{
"key": "payment-validation-task",
"domain": "banking",
"flow": "payment-process",
"version": "1.2.3"
}
]
},
{
"type": "null"
}
],
"description": "Geçişi çalıştırmak için gönderilmesi gereken veri şeması referansı"
},
"rule": {
"anyOf": [
{
"type": "object",
"required": [
"code",
"location"
],
"properties": {
"code": {
"type": "string",
"description": "Rule kodu"
},
"location": {
"type": "string",
"description": "Kod dosyasının konumu"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Kural tabanlı ilerleme olacak ise kuralın tanımlandığı kod"
},
"timer": {
"anyOf": [
{
"type": "object",
"required": [
"reset",
"duration"
],
"properties": {
"reset": {
"type": "string",
"description": "Zamanlayıcı reset stratejisi"
},
"duration": {
"type": "string",
"pattern": "^P(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?$",
"description": "Süre bilgisi (ISO 8601 formatında)",
"maxLength": 100
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Otomatik olarak geçiş çalışacak ise zamanlama bilgisi"
},
"labels": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"language"
],
"properties": {
"label": {
"type": "string",
"description": "Kullanıcıya gösterilecek metin içeriği",
"maxLength": 500
},
"language": {
"type": "string",
"description": "ISO 639 formatında dil kodu",
"pattern": "^[a-z]{2}(-[A-Z]{2})?$",
"maxLength": 10
}
},
"additionalProperties": false
},
"minItems": 1,
"examples": [
[
{
"label": "User Login",
"language": "en"
},
{
"label": "Kullanıcı Girişi",
"language": "tr"
}
],
[
{
"label": "Data Processing",
"language": "en-US"
},
{
"label": "Veri İşleme",
"language": "tr-TR"
}
]
],
"description": "Çok dilli geçiş ismi"
},
"view": {
"anyOf": [
{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Referans edilen kaydın anahtar değeri (okunabilir identifier)",
"pattern":