Görev (Task) durumu, bir iş akışı içinde tek bir çalışma birimi olarak entegre bir hizmetin API işlemini çağırır. Function Compute işlevlerini, Alibaba Cloud hizmet API'lerini veya HTTP/HTTPS üzerinden üçüncü taraf hizmetleri çağırmak için Görev durumlarını kullanın.
Akış Tanımlama Dili'nde (FDL), bir Görev durumunu tanımlamak için Type değerini Task olarak ayarlayın.
Desteklenen hizmet türleri
Bir Görev durumu üç kategori hizmeti çağırabilir. Hedefi, <ServiceName>:<APIOperation> biçimini kullanarak Action alanında belirtin.
| Kategori | Eylem biçimi | Açıklama | Örnek |
|---|---|---|---|
| Function Compute | FC:<APIOperation> |
Bir Function Compute işlevini senkron veya asenkron olarak çağırır | FC:InvokeFunction |
| Alibaba Cloud hizmet API'si | <ServiceName>:<APIOperation> |
Herhangi bir Alibaba Cloud OpenAPI işlemini çağırır | ECS:DescribeInstances |
| Üçüncü taraf HTTP uç noktası | HTTP:Request |
Harici bir hizmete HTTP/HTTPS isteği gönderir | HTTP:Request |
Entegrasyon modları
TaskMode alanı, CloudFlow'un hedef hizmetle nasıl etkileşime gireceğini belirler:
| Mod | Davranış | Ne zaman kullanılır |
|---|---|---|
RequestComplete |
Hizmetin yanıt dönmesini bekler, ardından sonraki duruma geçer. | Yanıtın anında döndüğü standart senkron çağrılar için uygundur. |
WaitForCustomCallback |
Harici bir sistem görev belirtecini içeren bir geri arama gönderene kadar iş akışını duraklatır. | İnsan onayları, uzun süren harici süreçler veya iş akışının harici bir sinyali beklemesi gereken senaryolar için önerilir. |
WaitForSystemCallback |
Entegre hizmet, tamamlanma üzerine otomatik bir geri arama gönderene kadar iş akışını duraklatır. | Sistem düzeyinde tamamlanma bildirimlerini destekleyen uzun süren Alibaba Cloud işlemleri için daha uygundur. |
Ayrıntılar için bkz. Hizmet entegrasyon modları.
Parametreler
| Parametre | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| Name | string | Evet | Durum adı. |
| Type | string | Evet | Durum türü. Değeri Task olarak ayarlayın. |
| Action | string | Evet | Çağrılacak hizmet ve işlem. Biçim: <ServiceName>:<APIOperation>. |
| TaskMode | enum | Hayır | Entegrasyon modu: RequestComplete, WaitForCustomCallback veya WaitForSystemCallback. |
| Parameters | map[string]any | Hayır | API çağrısı için giriş parametreleri. Değerler sabitler veya JSONPath ifadeleri olabilir. |
| InputConstructor | map[string]any | Hayır | Durum girişinden görev girişini oluşturur. Bkz. Girişler ve çıkışlar. |
| OutputConstructor | map[string]any | Hayır | Görev sonucundan durum çıkışını oluşturur. Bkz. Girişler ve çıkışlar. |
| Timeout | string | Hayır | Saniye cinsinden zaman aşımı süresi. Geçerli değerler: 0 ile 604800 arası. 0 değeri zaman aşımı olmadığını belirtir. Zaman aşımını aşağıdaki örnekte gösterildiği gibi JSONPath ifadesi kullanarak yürütme girişinden dinamik olarak ayarlayabilirsiniz. |
| Retry | map[string]any | Hayır | Hatalar için yeniden deneme ilkesi. Bkz. Hata yönetimi. |
| Catch | map[string]any | Hayır | Hata yakalama ilkesi. Bkz. Hata yönetimi. |
| Description | string | Hayır | Durum açıklaması. |
| Next | string | Hayır | Bu durum tamamlandıktan sonra çalıştırılacak sonraki durum. End değeri true ise boş bırakın. |
| End | bool | Hayır | Bu durumun mevcut kapsamın son durumu olup olmadığını belirtir. |
Zaman aşımını bir JSONPath ifadesi kullanarak yürütme girişinden dinamik olarak ayarlayın:
Timeout.$: $Input.timeout
Örnekler
Function Compute işlevi çağırma
Bu örnek, biri senkron diğeri asenkron olmak üzere bir Function Compute işlevini çağıran iki Görev durumu tanımlar. İşlevi ve çağrı türünü Parameters alanında belirtin. Parametre ayrıntıları için bkz. Çağrı parametrelerini yapılandırma.
İşlevler optimize edilmiş entegrasyon modunda veya Alibaba Cloud OpenAPI aracılığıyla çağrılabilir.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: an example of synchronous function invocation
States:
- Name: an example of synchronous function invocation
Type: Task
TaskMode: RequestComplete
Action: FC:InvokeFunction
Parameters:
resourceArn: acs:fc:::functions/myFunction1/LATEST
invocationType: Sync
body:
key: name
Next: an example of asynchronous function invocation
- Type: Task
Name: an example of asynchronous function invocation
Action: FC:InvokeFunction
TaskMode: RequestComplete
Parameters:
invocationType: Async
resourceArn: acs:fc:{region}:{accountID}:functions/myFunction/LATEST
body:
key: name
Next: SucceededExit
- Type: Pass
Name: SucceededExit
End: true
Alibaba Cloud hizmet API'si çağırma
Action alanını hizmet ve işlem adına ayarlayarak herhangi bir Alibaba Cloud hizmet API'sini çağırın. Aşağıdaki örnek, belirli bir VPC'deki ECS örneklerini listelemek için ECS:DescribeInstances işlemini çağırır:
Type: StateMachine
SpecVersion: v1
Name: MyWorkflow
StartAt: DescribeInstances
States:
- Type: Task
Name: DescribeInstances
Action: ECS:DescribeInstances
TaskMode: RequestComplete
Parameters:
RegionId: cn-hangzhou
VpcId: vpc-bp11y195luy47h8****
VSwitchId: vsw-bp1wb297ekw7xyh****
End: true
Zaman aşımı ve hata yönetimi ile HTTP uç noktası çağırma
Bu örnek bir HTTP POST isteği gönderir ve yürütme girişinden dinamik bir zaman aşımı ayarlar. Görev zaman aşımı süresi içinde tamamlanmazsa CloudFlow bir FnF.TaskTimeout hatası oluşturur. Catch kuralı bu hatayı yakalar ve iş akışını bir bildirim durumuna yönlendirir.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: SubmitTask
States:
- Type: Task
Name: SubmitTask
Action: HTTP:Request
TaskMode: RequestComplete
Timeout.$: $Input.timeout
Parameters:
method: POST
url: https://*****
body:
taskName: fly
headers:
Content-Type: multipart/form-data
Catch:
- Errors:
- FnF.TaskTimeout
Description: 'Error capture rule #1'
Next: NotifyOnTaskTimeout
OutputConstructor:
ErrorCode: TaskTimeout
ErrorMessage: Task timed out.
End: true
- Type: Task
Name: NotifyOnTaskTimeout
Action: HTTP:Request
TaskMode: RequestComplete
Parameters:
method: POST
url: https://******
body:
taskName: fly
errorCode.$: $Input.ErrorCode
errorMessage.$: $Input.ErrorMessage
headers:
Content-Type: multipart/form-data
End: true
Yürütme girişi zaman aşımı değerini sağlar:
{
"timeout": 10
}
Görev 10 saniye içinde tamamlanmazsa FnF.TaskTimeout hatası yakalanır ve iş akışı zaman aşımı bildirimi göndermek için NotifyOnTaskTimeout durumuna geçer.
