Tüm Ürünler
Search
Belge Merkezi

CloudFlow:Integrate CloudFlow with Function Compute

Son Güncelleme:Oct 06, 2026

CloudFlow, Flow Definition Language (FDL) ile tanımlanan durum makineleri olarak sunucusuz iş akışlarını orkestre eder. Bir iş akışından bir Function Compute işlevini çağırmak için FC:InvokeFunction eylemini içeren bir Görev (Task) durumu ekleyin. Akış motoru işlevi çağırır, seçtiğiniz entegrasyon moduna göre yanıtı işler ve sonraki duruma geçer.

Nasıl çalışır

CloudFlow akışı durumları birbirine zincirler. Her Görev durumu bir Alibaba Cloud hizmetini çağırabilir. Function Compute entegrasyonu için akış şu sırayı izler:

  1. Bir Görev durumu, FC:InvokeFunction eylemini tetikler.

  2. Akış motoru, belirttiğiniz parametrelerle (ARN, çağrı türü ve yük) hedef işlevi çağırır.

  3. TaskMode ayarına bağlı olarak akış; API yanıtını bekler, sistem geri aramasını bekler veya kodunuzdan gelen özel bir geri aramayı bekler.

  4. Akış, işlevin dönüş değerini sarar veya doğrudan geçirir, ardından sonraki duruma ilerler.

Temel kavramlar

Kavram Açıklama
Görev durumu Harici bir hizmeti çağırarak iş yapan bir durum.
FC:InvokeFunction CloudFlow'a bir Function Compute işlevini çağırmasını söyleyen eylem tanımlayıcısı.
TaskMode Akışın yanıtı nasıl işleyeceğini kontrol eder: API yanıtını bekleme, sistem geri aramasını bekleme veya özel geri aramayı bekleme.
resourceArn Hedef işlevi benzersiz şekilde tanımlayan Alibaba Cloud Kaynak Adı (ARN).
FDL ifadeleri Bir akış içindeki verilere erişmek için yerleşik ifadeler ($Input, $Output, $Context).

Bir Görev durumu tanımlayın

Akış tanımınıza bir Görev durumu ekleyin. Action öğesini FC:InvokeFunction olarak ayarlayın ve gerekli parametreleri Parameters altında belirtin:

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: an example of function invocation
States:
  - Name: an example of function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: xxx
      invocationType: xxx
      body: xxx
    End: true

Çağrı parametrelerini yapılandırın

İşlevin nasıl çağrılacağını üç parametre belirler:

Parametre Zorunlu Tür Açıklama
resourceArn Evet Dize Hedef işlevi tanımlayan ARN. Örnek: acs:fc:::services/myService1.LATEST/functions/myFunction1
invocationType Evet Sync veya Async Senkron veya asenkron çağrı.
body Hayır JSON nesnesi veya dize (işleve aktarılmadan önce bir bayt dizisine seri hale getirilir) İşlevin giriş parametresi olarak iletilen olay yükü.
Not

Spec belirtimine göre parametre adları camelCase kullanır ve küçük harfle başlar.

Aşağıdaki örnek, biri senkron diğeri asenkron olmak üzere iki çağrı yapan iki durumu tanımlar:

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: an example of synchronous function invocation
States:
  - Name: an example of synchronous function invocation
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        testKey: the content of the testKey parameter in the event of the function
    Next: an example of asynchronous function invocation
  - Name: an example of asynchronous function invocation
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
      invocationType: Async
      body:
        key1: value1
        key2: value2
    End: true

Bir entegrasyon modu seçin

TaskMode niteliği, işlev çağrıldıktan sonra akışın API çağrısını nasıl işleyeceğini kontrol eder. Üç mod mevcuttur:

Mod Desteklenen çağrı türleri Ne zaman kullanılır
RequestComplete Sync, Async, Async task Akış, API yanıtını bekler ve ardından devam eder.
WaitForSystemCallback Yalnızca Async, Async task Function Compute, işlev tamamlandıktan sonra sistem düzeyinde bir geri arama gönderdiğinde kullanın.
WaitForCustomCallback Yalnızca Async, Async task Akışın ne zaman devam edeceğine kendi kodunuz karar verdiğinde kullanın.

RequestComplete

Akış işlevi çağırır ve API yanıtını bekler. Sistem yanıt verip sonucu döndürdükten sonra akış sonraki duruma ilerler. Bu mod, senkron çağrılar, asenkron çağrılar ve asenkron görev çağrıları ile çalışır.

Daha fazla bilgi için bkz. RequestComplete.

WaitForSystemCallback

Akış çağrı isteğini gönderir, ardından Function Compute'ün bir sistem geri arama bildirimi göndermesini bekler. Akış, yalnızca bu geri aramayı aldıktan sonra ilerler. Bu mod yalnızca asenkron çağrılar ve asenkron görev çağrıları ile çalışır.

Daha fazla bilgi için bkz. WaitForSystemCallback.

WaitForCustomCallback

Akış işlevi çağırır ve ardından duraklar. Yalnızca programınız CloudFlow geri arama API'sini çağırarak görev sonucunu bildirdiğinde ilerler. Bu mod yalnızca asenkron çağrılar ve asenkron görev çağrıları ile çalışır.

Bu modu kullanmak için body parametresine bir callbackToken alanı ekleyin ve $Context.Current.TaskToken ifadesine başvurun. Bu belirteç, programınızın görev sonucunu akışa bildirirken dahil etmesi gereken kimlik bilgisidir.

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: invoke-with-callback
States:
  - Name: invoke-with-callback
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: WaitForCustomCallback
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Async
      body:
        callbackToken.$: $Context.Current.TaskToken
        key1: value1
    End: true

Bu örnekte, akış görev belirtecini işleve callbackToken aracılığıyla iletir. İşlev (veya aşağı yönlü bir işlem), sonucu CloudFlow'a bildirmek için bu belirteci kullanarak ReportTaskSucceeded veya ReportTaskFailed API'sini çağırır.

Daha fazla bilgi için bkz. WaitForCustomCallback.

İşlev çağrı türleri hakkında ayrıntılı bilgi için bkz. Senkron çağrılar, Asenkron çağrılar ve Asenkron görev yönetimi.

Dinamik parametreler oluşturun

Çoğu iş akışında işlev girdileri statik değerlerden ziyade iş akışı bağlamına veya önceki bir durumun çıktısına bağlıdır. Dinamik verilere başvurmak için $Context ve $Input ayrılmış ifadelerini kullanın.

Bir parametre adının değerinin bir değişmez değer değil, bir FDL ifadesi olduğunu belirtmek için ada .$ ekleyin:

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: an example of function invocation
States:
  - Name: an example of function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        argument1.$: $Input.input.BucketName
        argument2.$: $Input.input.TaskId
    End: true

Bu örnekte, argument1 çalışma zamanında $Input.input.BucketName değerini alır ve argument2 $Input.input.TaskId değerini alır.

Çağrı sonuçlarını işleyin

Akışın işlevin dönüş değerini nasıl sardığı entegrasyon moduna bağlıdır.

InvokeFunction API tanımına göre, işlevin Type yanıt parametresinin değeri Byte ise gerçek veri türü Byte'dır. İşlev dönüş değeri bir dize, JSON nesnesi, JSON dizisi veya temel bir veri türü olabilir.

RequestComplete modu

Akış, işlevin dönüş değerini bir Body alanı içeren bir JSON nesnesine sarar:

{
    "Body": "function invocation result"
}

Sonraki durum tanımlarında dönüş değerine $Output.Body ile erişin. Dönüş değeri bir JSON nesnesiyse iş akışının yerleşik işlevi ile serisini kaldırın ve üyelerine standart bir JSON nesnesi olarak erişin.

Aşağıdaki örnek bir işlevi çağırır ve ardından işlevin çıktısından alınan bir değere göre dallanmak için bir Seçim (Choice) durumu kullanır:

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
Description: ' '
StartAt: Example 1 of function invocation
States:
  - Name: Example 1 of function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        argument1.$: $Input.Records
        argument2.$: $Input.BucketName
    Next: conditional statement
  - Type: Choice
    Name: conditional statement
    Branches:
      - Condition: $Input.ObjectSize >= $Input.Threshold
        Next: Example 2 of function invocation
    Default: No action is performed.
  - Type: Pass
    Name: No action is performed.
    End: true
  - Name: Example 2 of function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
      invocationType: Sync
      body:
        argument1.$: $Input.BucketName
        argument2.$: $Input.TaskId
    End: true

WaitForSystemCallback ve WaitForCustomCallback modları

Bu modlarda harici sistem, sonucu bildirmek için ReportTaskSucceeded veya ReportTaskFailed API'sini çağırır. Akış, sonucu sarmadan doğrudan geçirir. Örneğin, işlev {"message": "hello"} döndürürse akıştaki sonuç şöyledir:

{
    "message": "hello"
}

Dönüş değerine doğrudan $Output ifadesi ile erişin.

Yaygın hatalar

Hata kodu Neden Eylem
FC.ResourceThrottled Toplam eşzamanlı çağrılar (CloudFlow ve diğer tüm çağrı kaynakları genelinde) eşzamanlılık sınırını aştığı için işlevler kısıtlanır. CloudFlow, Görev durumlarını yürütürken Function Compute'ü senkron olarak çağırır. Eşzamanlılık sınırı artırımı isteyin.
FC.ResourceExhausted Yetersiz kaynak nedeniyle işlevler kısıtlanır. Bize ulaşın.
FC.InternalServerError Function Compute'de bir sistem hatası oluştu. Akışı yeniden yürütün.
FC.AccessDenied Alibaba Cloud hesabı gerekli izinlere sahip değil. Gerekli izinleri verin ve yeniden deneyin.
FC.InvalidArgument Bir parametre değeri geçersiz. Parametre değerlerini belirtimle karşılaştırarak doğrulayın.
FC.EntityTooLarge Bir giriş parametresi değeri izin verilen boyutu aşıyor. Giriş yükü boyutunu azaltın.

Diğer Function Compute hata kodları için bkz. Hata kodları.