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
Bu sayfada belgelenen dört trigger task'ı (bağlantılar aynı sayfadaki ilgili bölüme gider):
- 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
Aynı ailenin sorgu tarafındaki üyeleri ayrı sayfalarda belgelenmiştir:
- GetInstances Task (Type:
15) - Filtre ile instance listesi - GetInstance Task (Type:
19) - Tek instance'ın tam projeksiyonu (metadata + data)
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ı
| Alan | Tip | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|---|
domain | string | Evet | - | Hedef iş akışı domain'i |
flow | string | Evet | - | Hedef iş akışı flow adı |
body | object | Hayır | - | İstekle gönderilecek veri |
sync | boolean | Hayır | true | Senkron çalıştırma |
version | string | Hayır | - | Hedef iş akışı versiyonu |
key | string | Hayır | - | Hedef iş akışı key'i |
tags | string[] | Hayır | - | Instance tag'leri |
headers | object | Hayır | - | HTTP header'ları |
timeoutSeconds | integer | Hayır | 30 | Timeout süresi (saniye) |
validateSsl | boolean | Hayır | true | SSL sertifika doğrulaması |
acceptedStatusCodes | string[] | Hayır | - | Başarılı kabul edilecek hata kodları ("403", "4xx" vb.) |
Property Erişimi
| Property | Setter Metodu | Açıklama |
|---|---|---|
TriggerDomain | SetDomain(string domain) | Hedef domain |
TriggerFlow | SetFlow(string flow) | Hedef flow adı |
Body | SetBody(dynamic body) | İstek body'si |
TriggerSync | SetSync(bool sync) | Senkron flag |
TriggerVersion | SetVersion(string? version) | Hedef versiyon |
TriggerKey | SetKey(string key) | Hedef key |
TriggerTags | SetTags(string[] tags) | Tag'ler |
Headers | SetHeaders(Dictionary<string, string?> headers) | Tüm header'lar |
| - | AddHeader(string key, string? value) | Tekil header ekle |
| - | RemoveHeader(string key) | Tekil header kaldır |
UseDapr | SetUseDapr(bool useDapr) | Dapr service invocation kullan |
ValidateSSL | SetValidateSSL(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ı
| Alan | Tip | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|---|
domain | string | Evet | - | Hedef iş akışı domain'i |
flow | string | Evet | - | Hedef iş akışı flow adı |
transitionName | string | Evet | - | Çalıştırılacak transition adı |
key | string | Koşullu | - | Hedef instance key'i (instanceId yoksa kullanılır) |
instanceId | string (uuid) | Koşullu | - | Hedef instance ID'si (öncelikli) |
body | object | Hayır | - | İstekle gönderilecek veri |
sync | boolean | Hayır | true | Senkron çalıştırma |
version | string | Hayır | - | |
tags | string[] | Hayır | - | Instance tag'leri |
headers | object | Hayır | - | HTTP header'ları |
timeoutSeconds | integer | Hayır | 30 | Timeout süresi (saniye) |
validateSsl | boolean | Hayır | true | SSL sertifika doğrulaması |
acceptedStatusCodes | string[] | Hayır | - | Başarılı kabul edilecek hata kodları ("403", "4xx" vb.) |
instanceId veya key alanlarından biri sağlanmalıdır. instanceId önceliklidir. İkisi de yoksa mevcut instance ID kullanılır.
Property Erişimi
| Property | Setter Metodu | Açıklama |
|---|---|---|
TriggerDomain | SetDomain(string domain) | Hedef domain |
TriggerFlow | SetFlow(string flow) | Hedef flow adı |
TransitionName | SetTransitionName(string transitionName) | Transition adı |
TriggerInstanceId | SetInstance(string? instanceId) | Hedef instance ID |
TriggerKey | SetKey(string? key) | Hedef instance key |
Body | SetBody(dynamic body) | İstek body'si |
TriggerSync | SetSync(bool sync) | Senkron flag |
TriggerTags | SetTags(string[] tags) | Tag'ler |
Headers | SetHeaders(Dictionary<string, string?> headers) | Tüm header'lar |
| - | AddHeader(string key, string? value) | Tekil header ekle |
| - | RemoveHeader(string key) | Tekil header kaldır |
UseDapr | SetUseDapr(bool useDapr) | Dapr service invocation kullan |
ValidateSSL | SetValidateSSL(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ı
| Alan | Tip | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|---|
domain | string | Evet | - | Hedef iş akışı domain'i |
flow | string | Evet | - | Hedef iş akışı flow adı |
key | string | Koşullu | - | Hedef instance key'i (instanceId yoksa kullanılır) |
instanceId | string (uuid) | Koşullu | - | Hedef instance ID'si (öncelikli) |
extensions | string[] | Hayır | - | Alınacak extension'lar |
headers | object | Hayır | - | HTTP header'ları |
timeoutSeconds | integer | Hayır | 30 | Timeout süresi (saniye) |
validateSsl | boolean | Hayır | true | SSL sertifika doğrulaması |
acceptedStatusCodes | string[] | Hayır | - | Başarılı kabul edilecek hata kodları ("403", "4xx" vb.) |
instanceId veya key alanlarından biri sağlanmalıdır. instanceId önceliklidir. İkisi de yoksa mevcut instance ID kullanılır.
Property Erişimi
| Property | Setter Metodu | Açıklama |
|---|---|---|
TriggerDomain | SetDomain(string domain) | Hedef domain |
TriggerFlow | SetFlow(string flow) | Hedef flow adı |
TriggerInstanceId | SetInstance(string? instanceId) | Hedef instance ID (GUID ise TriggerInstanceId'ye, değilse TriggerKey'e atanır) |
TriggerKey | SetKey(string? key) | Hedef instance key |
Extensions | SetExtensions(string[] extensions) | Extension listesi |
Headers | SetHeaders(Dictionary<string, string?> headers) | Tüm header'lar |
| - | AddHeader(string key, string? value) | Tekil header ekle |
| - | RemoveHeader(string key) | Tekil header kaldır |
UseDapr | SetUseDapr(bool useDapr) | Dapr service invocation kullan |
ValidateSSL | SetValidateSSL(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ı
| Alan | Tip | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|---|
domain | string | Evet | - | Hedef iş akışı domain'i |
flow | string | Evet | - | Hedef iş akışı flow adı |
body | object | Hayır | - | İstekle gönderilecek veri |
sync | boolean | Hayır | false | sync query parametresine pass-through |
version | string | Hayır | - | SubFlow versiyonu |
key | string | Hayır | - | Hedef iş akışı key'i |
tags | string[] | Hayır | - | Instance tag'leri |
headers | object | Hayır | - | HTTP header'ları |
timeoutSeconds | integer | Hayır | 30 | Timeout süresi (saniye) |
validateSsl | boolean | Hayır | true | SSL sertifika doğrulaması |
acceptedStatusCodes | string[] | Hayır | - | Başarılı kabul edilecek hata kodları ("403", "4xx" vb.) |
Property Erişimi
| Property | Setter Metodu | Açıklama |
|---|---|---|
TriggerDomain | SetDomain(string domain) | Hedef domain |
TriggerFlow | SetFlow(string flow) | Hedef flow adı |
Body | SetBody(dynamic body) | İstek body'si |
TriggerSync | SetSync(bool sync) | Sync flag |
TriggerVersion | SetVersion(string version) | SubFlow versiyonu |
TriggerKey | SetKey(string? key) | Hedef key |
TriggerTags | SetTags(string[] tags) | Tag'ler |
Headers | SetHeaders(Dictionary<string, string?> headers) | Tüm header'lar |
| - | AddHeader(string key, string? value) | Tekil header ekle |
| - | RemoveHeader(string key) | Tekil header kaldır |
UseDapr | SetUseDapr(bool useDapr) | Dapr service invocation kullan |
ValidateSSL | SetValidateSSL(bool validateSSL) | SSL doğrulama |
- SubProcess: Fire-and-forget, bağımsız çalışır, ana iş akışını bloke etmez (
syncvarsayılanıfalse) - StartTask: Senkron çalışır, yanıt döner, gelecekte etkileşim için
instanceIdalınabilir (syncvarsayı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:
- Statik Konfigürasyon: Task JSON tanımında
configbölümünde belirtilir - 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.