Ana içeriğe geç

Trigger Task Türleri

İş akışı instance yönetimi için dört ayrı task türü mevcuttur. Her task türü, farklı bir iş akışı etkileşim senaryosunu destekler ve kendi type numarasına sahiptir.

Task Türleri

  • StartTask (Type: 11) - Yeni iş akışı instance'ları başlatır
  • DirectTriggerTask (Type: 12) - Mevcut instance'larda transition tetikler
  • GetInstanceDataTask (Type: 13) - Instance verilerini alır
  • SubProcessTask (Type: 14) - Bağımsız subprocess instance'ları başlatır

1. StartTask (Type: 11)

Yeni bir iş akışı instance'ı oluşturur.

Görev Tanımı

Schema: task-definition.schema.json

{
"key": "start-approval-workflow",
"version": "1.0.0",
"domain": "core",
"flow": "sys-tasks",
"flowVersion": "1.0.0",
"tags": ["workflow", "instance", "start"],
"attributes": {
"type": "11",
"config": {
"domain": "approvals",
"flow": "approval-flow",
"sync": true,
"body": {
"documentId": "doc-12345",
"requestedBy": "user-123"
}
}
}
}

Konfigürasyon Alanları

AlanTipZorunluVarsayılanAçıklama
domainstringEvet-Hedef iş akışı domain'i
flowstringEvet-Hedef iş akışı flow adı
bodyobjectHayır-İstekle gönderilecek veri
syncbooleanHayırtrueSenkron çalıştırma
versionstringHayır-Hedef iş akışı versiyonu
keystringHayır-Hedef iş akışı key'i
tagsstring[]Hayır-Instance tag'leri
headersobjectHayır-HTTP header'ları
timeoutSecondsintegerHayır30Timeout süresi (saniye)
validateSslbooleanHayırtrueSSL sertifika doğrulaması
acceptedStatusCodesstring[]Hayır-Başarılı kabul edilecek hata kodları ("403", "4xx" vb.)

Property Erişimi

PropertySetter MetoduAçıklama
TriggerDomainSetDomain(string domain)Hedef domain
TriggerFlowSetFlow(string flow)Hedef flow adı
BodySetBody(dynamic body)İstek body'si
TriggerSyncSetSync(bool sync)Senkron flag
TriggerVersionSetVersion(string? version)Hedef versiyon
TriggerKeySetKey(string key)Hedef key
TriggerTagsSetTags(string[] tags)Tag'ler
HeadersSetHeaders(Dictionary<string, string?> headers)Tüm header'lar
-AddHeader(string key, string? value)Tekil header ekle
-RemoveHeader(string key)Tekil header kaldır
UseDaprSetUseDapr(bool useDapr)Dapr service invocation kullan
ValidateSSLSetValidateSSL(bool validateSSL)SSL doğrulama

Başarılı Yanıt

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "A"
}

2. DirectTriggerTask (Type: 12)

Mevcut bir iş akışı instance'ında belirli bir transition'ı yürütür.

Görev Tanımı

Schema: task-definition.schema.json

{
"key": "trigger-approval-action",
"version": "1.0.0",
"domain": "core",
"flow": "sys-tasks",
"flowVersion": "1.0.0",
"tags": ["transition", "trigger"],
"attributes": {
"type": "12",
"config": {
"domain": "approvals",
"flow": "approval-flow",
"transitionName": "approve",
"instanceId": "550e8400-e29b-41d4-a716-446655440000",
"body": {
"approvedBy": "manager123",
"approvalDate": "2024-01-15T10:30:00Z"
}
}
}
}

Konfigürasyon Alanları

AlanTipZorunluVarsayılanAçıklama
domainstringEvet-Hedef iş akışı domain'i
flowstringEvet-Hedef iş akışı flow adı
transitionNamestringEvet-Çalıştırılacak transition adı
keystringKoşullu-Hedef instance key'i (instanceId yoksa kullanılır)
instanceIdstring (uuid)Koşullu-Hedef instance ID'si (öncelikli)
bodyobjectHayır-İstekle gönderilecek veri
syncbooleanHayırtrueSenkron çalıştırma
versionstringHayır-Hedef versiyon (Deprecated)
tagsstring[]Hayır-Instance tag'leri
headersobjectHayır-HTTP header'ları
timeoutSecondsintegerHayır30Timeout süresi (saniye)
validateSslbooleanHayırtrueSSL sertifika doğrulaması
acceptedStatusCodesstring[]Hayır-Başarılı kabul edilecek hata kodları ("403", "4xx" vb.)
bilgi

instanceId veya key alanlarından biri sağlanmalıdır. instanceId önceliklidir. İkisi de yoksa mevcut instance ID kullanılır.

Property Erişimi

PropertySetter MetoduAçıklama
TriggerDomainSetDomain(string domain)Hedef domain
TriggerFlowSetFlow(string flow)Hedef flow adı
TransitionNameSetTransitionName(string transitionName)Transition adı
TriggerInstanceIdSetInstance(string? instanceId)Hedef instance ID
TriggerKeySetKey(string? key)Hedef instance key
BodySetBody(dynamic body)İstek body'si
TriggerSyncSetSync(bool sync)Senkron flag
TriggerTagsSetTags(string[] tags)Tag'ler
HeadersSetHeaders(Dictionary<string, string?> headers)Tüm header'lar
-AddHeader(string key, string? value)Tekil header ekle
-RemoveHeader(string key)Tekil header kaldır
UseDaprSetUseDapr(bool useDapr)Dapr service invocation kullan
ValidateSSLSetValidateSSL(bool validateSSL)SSL doğrulama

Başarılı Yanıt

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "A"
}

3. GetInstanceDataTask (Type: 13)

Başka bir iş akışı instance'ından veri alır. Opsiyonel extension desteği vardır.

Görev Tanımı

Schema: task-definition.schema.json

{
"key": "get-user-profile-data",
"version": "1.0.0",
"domain": "core",
"flow": "sys-tasks",
"flowVersion": "1.0.0",
"tags": ["instance", "data", "fetch"],
"attributes": {
"type": "13",
"config": {
"domain": "users",
"flow": "user-profile",
"instanceId": "660e8400-e29b-41d4-a716-446655440001",
"extensions": ["profile", "preferences"]
}
}
}

Konfigürasyon Alanları

AlanTipZorunluVarsayılanAçıklama
domainstringEvet-Hedef iş akışı domain'i
flowstringEvet-Hedef iş akışı flow adı
keystringKoşullu-Hedef instance key'i (instanceId yoksa kullanılır)
instanceIdstring (uuid)Koşullu-Hedef instance ID'si (öncelikli)
extensionsstring[]Hayır-Alınacak extension'lar
headersobjectHayır-HTTP header'ları
timeoutSecondsintegerHayır30Timeout süresi (saniye)
validateSslbooleanHayırtrueSSL sertifika doğrulaması
acceptedStatusCodesstring[]Hayır-Başarılı kabul edilecek hata kodları ("403", "4xx" vb.)
bilgi

instanceId veya key alanlarından biri sağlanmalıdır. instanceId önceliklidir. İkisi de yoksa mevcut instance ID kullanılır.

Property Erişimi

PropertySetter MetoduAçıklama
TriggerDomainSetDomain(string domain)Hedef domain
TriggerFlowSetFlow(string flow)Hedef flow adı
TriggerInstanceIdSetInstance(string? instanceId)Hedef instance ID (GUID ise TriggerInstanceId'ye, değilse TriggerKey'e atanır)
TriggerKeySetKey(string? key)Hedef instance key
ExtensionsSetExtensions(string[] extensions)Extension listesi
HeadersSetHeaders(Dictionary<string, string?> headers)Tüm header'lar
-AddHeader(string key, string? value)Tekil header ekle
-RemoveHeader(string key)Tekil header kaldır
UseDaprSetUseDapr(bool useDapr)Dapr service invocation kullan
ValidateSSLSetValidateSSL(bool validateSSL)SSL doğrulama

Başarılı Yanıt

{
"isSuccess": true,
"data": {
"userId": "user123",
"profile": {
"name": "John Doe",
"email": "john.doe@example.com"
},
"preferences": {
"language": "tr-TR",
"theme": "dark"
}
}
}

4. SubProcessTask (Type: 14)

Ana iş akışı ile paralel çalışan bağımsız bir subprocess instance'ı başlatır.

Görev Tanımı

Schema: task-definition.schema.json

{
"key": "start-audit-subprocess",
"version": "1.0.0",
"domain": "core",
"flow": "sys-tasks",
"flowVersion": "1.0.0",
"tags": ["subprocess", "audit"],
"attributes": {
"type": "14",
"config": {
"domain": "audit",
"flow": "transaction-audit",
"key": "txn-audit-001",
"version": "1.0.0",
"sync": false,
"body": {
"transactionId": "txn-12345",
"userId": "user-123"
}
}
}
}

Konfigürasyon Alanları

AlanTipZorunluVarsayılanAçıklama
domainstringEvet-Hedef iş akışı domain'i
flowstringEvet-Hedef iş akışı flow adı
bodyobjectHayır-İstekle gönderilecek veri
syncbooleanHayırfalsesync query parametresine pass-through
versionstringHayır-SubFlow versiyonu
keystringHayır-Hedef iş akışı key'i
tagsstring[]Hayır-Instance tag'leri
headersobjectHayır-HTTP header'ları
timeoutSecondsintegerHayır30Timeout süresi (saniye)
validateSslbooleanHayırtrueSSL sertifika doğrulaması
acceptedStatusCodesstring[]Hayır-Başarılı kabul edilecek hata kodları ("403", "4xx" vb.)

Property Erişimi

PropertySetter MetoduAçıklama
TriggerDomainSetDomain(string domain)Hedef domain
TriggerFlowSetFlow(string flow)Hedef flow adı
BodySetBody(dynamic body)İstek body'si
TriggerSyncSetSync(bool sync)Sync flag
TriggerVersionSetVersion(string version)SubFlow versiyonu
TriggerKeySetKey(string? key)Hedef key
TriggerTagsSetTags(string[] tags)Tag'ler
HeadersSetHeaders(Dictionary<string, string?> headers)Tüm header'lar
-AddHeader(string key, string? value)Tekil header ekle
-RemoveHeader(string key)Tekil header kaldır
UseDaprSetUseDapr(bool useDapr)Dapr service invocation kullan
ValidateSSLSetValidateSSL(bool validateSSL)SSL doğrulama
SubProcess vs StartTask
  • SubProcess: Fire-and-forget, bağımsız çalışır, ana iş akışını bloke etmez (sync varsayılanı false)
  • StartTask: Senkron çalışır, yanıt döner, gelecekte etkileşim için instanceId alınabilir (sync varsayılanı true)

Hata Senaryoları

Tüm trigger task'ları aşağıdaki hata yanıtlarını döndürebilir:

İş Akışı Bulunamadı

{
"IsSuccess": false,
"ErrorMessage": "'approvals' domain'inde 'approval-flow' iş akışı bulunamadı",
"Metadata": {
"ErrorCode": "WORKFLOW_NOT_FOUND"
}
}

Instance Bulunamadı

{
"IsSuccess": false,
"ErrorMessage": "'550e8400-e29b-41d4-a716-446655440000' instance'ı bulunamadı",
"Metadata": {
"ErrorCode": "INSTANCE_NOT_FOUND"
}
}

Transition Kullanılamıyor

{
"IsSuccess": false,
"ErrorMessage": "'approve' transition'ı mevcut state'te kullanılamıyor",
"Metadata": {
"ErrorCode": "TRANSITION_NOT_AVAILABLE",
"CurrentState": "draft"
}
}

Konfigürasyon vs Dinamik Ayarlama

Task'lar için gerekli alanlar iki şekilde sağlanabilir:

  1. Statik Konfigürasyon: Task JSON tanımında config bölümünde belirtilir
  2. Dinamik Ayarlama: Mapping'deki InputHandler içinde setter metodları ile runtime'da ayarlanır

Öncelik Kuralı: Hem JSON config'te hem de InputHandler'da aynı alan tanımlanmışsa, InputHandler'da set edilen değer önceliğe sahiptir.