CloudFlow, bir iş akışı içindeki Alibaba Cloud hizmetlerini ve harici kaynakları çağırmak için Task durumlarını kullanır. Entegrasyon modu, bir Task durumunun hizmet yanıtını nasıl ele aldığını kontrol eder; yanıtı senkron olarak bekler, eşzamansız bir işin tamamlanmasını bekler veya harici bir sistemden geri arama gelene kadar duraklatır.
Üç entegrasyon modu mevcuttur:
RequestComplete -- Bir istek gönderin ve yanıtı bekleyin (varsayılan).
WaitForSystemCallback -- Eşzamansız bir istek gönderin ve sistemin tamamlanmayı bildirmesini bekleyin.
WaitForCustomCallback -- Bir görev belirteci ile istek gönderin ve harici bir sistem sonuçla geri arama yapana kadar duraklatın.
Entegrasyon modu seçin
Hangi modun kullanım durumunuza uygun olduğunu belirlemek için aşağıdaki tabloyu kullanın.
| Kriterler | RequestComplete | WaitForSystemCallback | WaitForCustomCallback |
|---|---|---|---|
| Ne zaman kullanılır | Hedef hizmet senkron bir yanıt döndürdüğünde | Hedef hizmet eşzamansız bir iş çalıştırdığında ve tamamlanmayı kendi başına bildirdiğinde | İş akışının devam etmesi için harici bir sistemin veya insan eyleminin tamamlanması gerektiğinde |
| Durum nasıl ilerler | Yanıt geldikten sonra | İş tamamlandıktan sonra | ReportTaskSucceeded veya ReportTaskFailed çağrıldıktan sonra |
| Tipik senaryo | Function Compute işlevini senkron olarak çağırma | Uzun süren toplu iş gönderme | İnsan onayını veya harici bir mikro hizmeti bekleme |
**invocationType değeri** |
Sync |
Async |
Sync veya Async |
Tüm hizmetler bu üç modu desteklemez. Hizmet bazında uyumluluk listesi için bkz. Entegrasyon modları .
RequestComplete
RequestComplete varsayılan entegrasyon modudur. Task durumu, hedef hizmete bir istek gönderir ve bir sonraki duruma geçmeden önce yanıtı bekler. Çağrı senkron olduğu için iş akışı, çağrı tamamlandığında sonucu hemen alır.
TaskMode değerini RequestComplete olarak ayarlayın (veya bu varsayılan olduğu için atlayın):
Type: StateMachine
Name: myWorkFlow
SpecVersion: v1
StartAt: InvokeFunction
States:
- Type: Task
Name: an example of function invocation.
Action: FC:InvokeFunction
TaskMode: RequestComplete
Parameters:
resourceArn: acs:fc:{regionId}:{accountId}:functions/dataji/LATEST
invocationType: Sync
body: xxxx
End: true
WaitForSystemCallback
Hedef hizmetin tamamlanmayı kendi başına bildirdiği eşzamansız çağrılar için WaitForSystemCallback kullanın. Task durumu isteği gönderir ve ardından bekler; iş akışı iş bitene kadar ilerlemez.
TaskMode değerini WaitForSystemCallback ve invocationType değerini Async olarak ayarlayın:
Type: StateMachine
Name: myWorkFlow
SpecVersion: v1
StartAt: InvokeFunction
States:
- Type: Task
Name: an example of function invocation.
Action: FC:InvokeFunction
TaskMode: WaitForSystemCallback
Parameters:
resourceArn: acs:fc:{regionId}:{accountId}:functions/dataji/LATEST
invocationType: Async
body: xxxx
End: true
Bu modu destekleyen hizmetlerin listesi için bkz. Normal entegrasyonu destekleyen Alibaba Cloud hizmetleri.
Görev iptal davranışı
Bir WaitForSystemCallback görevi sonlandırılırsa CloudFlow alttaki işi iptal edemeyebilir. İptal edilmeyen işler çalışmaya devam eder ve ücrete neden olabilir. Beklenmeyen maliyetlerden kaçınmak için entegrasyon görevini manuel olarak iptal edin.
CloudFlow otomatik iptali ne zaman dener
CloudFlow aşağıdaki senaryolarda en iyi çabayla iptal denemesi yapar:
İş akışı yürütmesi durdurulduğunda.
Parallel durumunda yakalanan bir hatayla başka bir dal başarısız olduğunda.
Map durumunda yakalanmamış bir hatayla bir yineleme başarısız olduğunda.
Örneğin, iş akışı alt akışlara veya Function Compute işlevlerine sahip eşzamansız görevler içeriyorsa iş akışını durdurmak için StopExecution API işlemini çağırın. CloudFlow önce alt akışları ve ardından iş akışındaki eşzamansız görevle ilgili işlevleri durdurur.
İptal neden başarısız olabilir
Yürütme rolü ilgili API işlemini çağırmak için gereken izinlere sahip değilse.
Hedef hizmet geçici olarak kullanılamıyorsa.
WaitForCustomCallback
WaitForCustomCallback iş akışını duraklatır ve harici bir sistemin sonucu bildirmesini bekler. Task durumu çalıştığında harici sisteme ilettiğiniz bir görev belirteci oluşturur. Harici sistem işlemeyi tamamladıktan sonra belirteç ve sonuçla ReportTaskSucceeded veya ReportTaskFailed API işlemini çağırır. İş akışı daha sonra bir sonraki duruma ilerler.
Anketlemeye kıyasla geri aramalar gecikme süresini azaltır ve sunucuda gereksiz yükü ortadan kaldırır. Mesaj kuyruklarıyla birlikte kullanılan geri aramalar CloudFlow düzenleme kapsamını yalnızca Function Compute ile sınırlı kalmayacak şekilde tüm hesaplama kaynaklarına genişletir.
TaskMode değerini WaitForCustomCallback olarak ayarlayın:
Type: StateMachine
Name: myWorkFlow
SpecVersion: v1
StartAt: InvokeFunction
States:
- Type: Task
Name: an example of function invocation.
Action: FC:InvokeFunction
TaskMode: WaitForCustomCallback
Parameters:
resourceArn: acs:fc:{regionId}:{accountId}:functions/dataji/LATEST
invocationType: Sync
body: xxxx
End: true
Görev belirtecine erişin
Parameters alanı içinde geçerli görevin görev belirtecine erişmek için $Context.Current.TaskToken ifadesini kullanın. $Context ön eki çalışma zamanı bağlam nesnesini gösterir.
Parameters:
resourceArn: acs:fc:{regionId}:{accountId}:functions/dataji/LATEST
invocationType: Async
body:
payload.$: $Input
taskToken.$: $Context.Current.TaskToken
Örnek: Harici bir mikro hizmetle kredi kontrolü
Bu örnek CloudFlow'un kredi kontrolü gerçekleştirmek üzere harici bir mikro hizmetle nasıl entegre olduğunu gösterir. İş akışı:
WaitForCustomCallbackkullanarak bir Function Compute işlevini çağırır. İşlev Simple Message Queue'a (eski adıyla MNS) görev belirtecini de içeren bir mesaj gönderir.Harici mikro hizmet kuyruktan mesajı çeker ve kredi kontrolünü çalıştırır.
Mikro hizmet belirteç ve kredi kontrolü sonucuyla
ReportTaskSucceededveyaReportTaskFailedöğesini çağırır.CloudFlow iş akışını sürdürür ve bir sonraki duruma ilerler.
Type: StateMachine
Name: myWorkFlow
SpecVersion: v1
StartAt: InvokeFunction
States:
- Type: Task
Name: an example of function invocation.
Action: FC:InvokeFunction
TaskMode: WaitForCustomCallback
Parameters:
resourceArn: acs:fc:{regionId}:{accountId}:functions/dataji/LATEST
invocationType: Async
body:
payload.$: $Input
taskToken.$: $Context.Current.TaskToken
End: true
Örnek: Kendi yönettiğiniz bir hizmetle entegrasyon
CloudFlow'u kendi yönettiğiniz bir hizmetle entegre etmek için Simple Message Queue'u (eski adıyla MNS) ve API geri aramalarını kullanın. Bu desende Simple Message Queue CloudFlow ile harici hizmet arasında aracı görevi görür. Harici hizmet görevler için kuyruğu yoklar, bunları işler ve sonuçla CloudFlow'a geri arama yapar.
Bu desen Simple Message Queue ile sınırlı değildir; herhangi bir ara mesajlaşma veya depolama hizmeti iletişim kanalı olarak çalışabilir.
Sonraki adımlar
Entegrasyon modları -- Her entegrasyon modu için hizmet bazında uyumluluk listesi.
Normal entegrasyonu destekleyen Alibaba Cloud hizmetleri -- WaitForSystemCallback'i destekleyen hizmetler.
ReportTaskSucceeded API'si -- Başarılı bir geri arama sonucunu bildirin.
ReportTaskFailed API'si -- Başarısız bir geri arama sonucunu bildirin.
StopExecution API'si -- Çalışan bir iş akışı yürütmesini durdurun.