Azure Logic Apps için iş akışlarında eylemleri yinelemek için döngüler ekleme

Şunlar için geçerlidir: Azure Logic Apps (Tüketim + Standart)

Mantıksal uygulama iş akışındaki eylemleri yinelemek için, senaryonuzun gereksinimlerine bağlı olarak her döngü için veya Until döngüsünü iş akışınıza ekleyebilirsiniz.

Not

Döngüler hakkında Power Automate belgelerini mi arıyorsunuz? Bkz . Döngüleri kullanma.

Kullanım örneğinize bağlı olarak, aşağıdaki döngü eylemi türleri arasından seçim yapabilirsiniz:

  • Dizi veya koleksiyondaki öğelerde bir veya daha fazla işlemi yinelemek için iş akışınıza Her İşlem için eylemini ekleyin.

    Alternatif olarak, dizileri işleyebilen bir tetikleyiciniz varsa ve her dizi öğesi için bir iş akışı örneği çalıştırmak istiyorsanız, dizi elemanlarını ayırmak için Tetikleyicide böl tetikleyici özelliğini ayarlayabilirsiniz.

  • Bir koşul karşılanana veya belirli bir durum değişene kadar bir veya daha fazla eylemi yinelemek için, İş akışınıza Until eylemini ekleyin.

    İş akışınız önce döngünün içindeki tüm eylemleri çalıştırır ve ardından koşulu veya durumu denetler. Koşul karşılanırsa döngü durur. Aksi takdirde döngü yineler. Bir iş akışının sahip olabileceği Until döngülerinin sayısıyla ilgili varsayılan ve en yüksek sınırlar için bkz. Eşzamanlılık, döngü oluşturma ve sınırlamaları kaldırma.

Önkoşullar

Aşağıdaki adımlarda Azure portalı kullanılır, ancak uygun Azure Logic Apps uzantısıyla mantıksal uygulama iş akışları oluşturmak için aşağıdaki araçları da kullanabilirsiniz:

Bazı adımlar, Tüketim veya Standart iş akışına bağlı olarak biraz farklılık gösterir.

Her biri için

Her biri için eylemi yalnızca diziler üzerinde çalışır. Bu döngü, bir dizideki her öğede bir veya daha fazla eylemi yineler. Her eylem için aşağıdaki noktaları gözden geçirin:

  • Her eylem için, sınırlı sayıda dizi öğesini işleyebilir. Bu sınır için bkz . Eşzamanlılık, döngü oluşturma ve sınırlamaları kaldırma.

  • Varsayılan olarak, her eylem için içindeki döngüler veya yinelemeler paralel olarak aynı anda çalıştırılır.

    Bu davranış, yinelemelerin teker teker veya sırayla çalıştırıldığı her döngüye Power Automate'in Uygula seçeneğinden farklıdır. Kullanım senaryonuz sıralı işlem gerektiriyorsa, For each yinelemelerini aynı anda yalnızca bir tane çalışacak şekilde ayarlayabilirsiniz. Örneğin, For each eyleminde Gecikme eylemini kullanarak bir sonraki yinelemeyi duraklatmak istiyorsanız, her yinelemeyi sıralı olarak çalışacak şekilde ayarlamanız gerekir.

    Varsayılan davranışın bir istisnası olarak, iç içe geçmiş For each eyleminin yinelemeleri her zaman paralel değil, sıralı olarak çalışır. İç içe geçmiş bir For each eyleminde dizi öğeleri üzerinde eylemleri eşzamanlı olarak çalıştırmak için bir alt iş akışı oluşturun ve çağırın.

  • Her yineleme sırasında değişkenler üzerindeki işlemlerden tahmin edilebilir sonuçlar almak için yinelemeleri sıralı olarak çalıştırın. Örneğin, eşzamanlı çalışan bir yineleme sona erdiğinde Increment değişkeni, Azaltma değişkeni ve Değişkene ekle işlemleri tahmin edilebilir sonuçlar döndürür. Ancak, eşzamanlı çalışan döngüdeki her yineleme sırasında bu işlemler öngörülemeyen sonuçlar döndürebilir.

  • For each döngüsündeki eylemler, dizideki her öğeye başvurmak ve onu işlemek için item() işlevini kullanır. Dizide olmayan verileri belirtirseniz iş akışı başarısız olur.

Aşağıdaki örnek iş akışı, bir web sitesi RSS akışı için günlük özet gönderir. İş akışı, her yeni öğe için bir e-posta gönderen Her biri için eylemini kullanır.

  1. Azure portalında, aşağıdaki adımları belirtilen sırada içeren bir mantıksal uygulama iş akışı oluşturun:

    • Bir akış öğesi yayımlandığında adlı RSS tetikleyicisi

      Tüketim veya Standart mantıksal uygulama iş akışına tetikleyici eklemek için bu genel adımları izleyin.

    • E-posta gönder adlı Outlook.com veya Office 365 Outlook eylemi

      Tüketim veya Standart mantıksal uygulama iş akışına eylem eklemek için bu genel adımları izleyin.

  2. RSS tetikleyicisi ile İş akışınızda E-posta gönder eylemi arasına her eylem için eylemini eklemek için aynı genel adımları izleyin.

  3. Şimdi döngüyü oluşturun:

    1. Her öğe için , Önceki Adımlardan Bir Çıkış Seçin kutusunun içini seçin ve ardından şimşek simgesini seçin.

    2. Açılan dinamik içerik listesinden, Bir akış öğesi yayımlandığında altında, RSS tetikleyicisinden gelen bir dizi çıktısı olan Akış bağlantıları'nı seçin.

      Not

      Akış bağlantıları çıkışı görünmüyorsa tetikleyici bölümü etiketinin yanındaki Daha fazla göster'i seçin. Dinamik içerik listesinden yalnızca önceki adımlardan çıkışları seçebilirsiniz.

      Her bir için adlı bir eylem ve açık dinamik içerik listesi ile Azure portalını ve iş akışı tasarımcısını gösteren ekran görüntüsü.

      İşiniz bittiğinde, seçili dizi çıkışı aşağıdaki örnekte olduğu gibi görünür:

      Ekran görüntüsünde iş akışı tasarımcısı ve seçili dizi çıkışıyla “Her biri için” adlı eylem gösterilmektedir.

    3. Dizideki her öğe için mevcut bir eylemi çalıştırmak üzere, E-posta gönder eylemini Her biri için döngüsüne sürükleyin.

      Şimdi iş akışınız aşağıdaki örneğe benzer:

      Ekran görüntüsünde iş akışı tasarımcısı, Her biri için adlı eylem ve artık Her biri için eyleminin içinde olan E-posta gönder adlı eylem gösterilmektedir.

  4. Tamamladığınızda, iş akışınızı kaydedin.

  5. İş akışınızı el ile test etmek için tasarımcı araç çubuğunda Çalıştır Çalıştır'ı> seçin.

Her eylem tanımı için (JSON)

Kod görünümünde çalışıyorsanız, eylemi iş akışınızın JSON tanımında tanımlayabilirsiniz For_each , örneğin:

"actions": {
   "For_each": {
      "actions": {
         "Send_an_email_(V2)": {
            "type": "ApiConnection",
            "inputs": {
               "body": {
                  "Body": "@{item()}",
                  "Subject": "New CNN post @{triggerBody()?['publishDate']}",
                  "To": "me@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/v2/Mail"
            },
            "runAfter": {}
         }
      },
      "foreach": "@triggerBody()?['links']",
      "runAfter": {},
      "type": "Foreach"
   }
},

Her bir için: Sıralı olarak çalıştır

Varsayılan olarak, her eylem için içindeki yinelemeler paralel olarak aynı anda çalıştırılır. Ancak, iç içe döngüleriniz varsa veya tahmin edilebilir sonuçlar beklediğiniz döngülerin içinde değişkenleriniz varsa, bu döngüleri sırayla tek tek çalıştırmanız gerekir.

  1. Tasarımcıda Her eylem için'i seçerek bilgi bölmesini açın ve ardından Ayarlar'ı seçin.

  2. Eşzamanlılık denetimi altında, ayarı Kapalı yerine Açık olarak değiştirin.

  3. Paralellik derecesi kaydırıcısını 1'e taşıyın.

    Her eylem için, Ayarlar sekmesini ve Paralellik derecesi kaydırıcısı 1 olarak ayarlanmış eşzamanlılık denetimi ayarının açık olduğunu gösteren ekran görüntüsü.

Her eylem tanımı (JSON) için: Sırayla çalıştır

İş akışınızın JSON tanımındaki eylemle For_each kod görünümünde çalışıyorsanız parametresini operationOptions ekleyin ve parametre değerini olarak Sequentialayarlayın:

"actions": {
   "For_each": {
      "actions": {
         "Send_an_email_(V2)": { }
      },
      "foreach": "@triggerBody()?['links']",
      "runAfter": {},
      "type": "Foreach",
      "operationOptions": "Sequential"
   }
}

Kadar

Until eylemi çalışır ve belirtilen gerekli koşul karşılanana kadar bir veya daha fazla eylemi yineler. Koşul karşılanırsa döngü durur. Aksi takdirde döngü yineler. Until eylemlerinin veya yineleme sayısının varsayılan ve üst sınırları için bkz: Eşzamanlılık, döngü oluşturma ve toplu işlemden çıkarma sınırları.

Aşağıdaki listede, Until eylemini kullanabileceğiniz bazı yaygın senaryolar yer alır:

  • İstediğiniz yanıtı elde edene kadar bir uç noktayı çağırın.

  • Veritabanında kayıt oluşturma. Bu kayıttaki belirli bir alan onaylanana kadar bekleyin. İşlemeye devam edin.

Varsayılan olarak, Until eylemi aşağıdaki yollarla başarılı olur veya başarısız olur:

  • Until döngüsü, döngü içindeki tüm eylemler başarılı olursa ve döngü sınırına ulaşılırsa, çalıştırma sonrasındaki davranışa bağlı olarak başarılı olur.

  • Until döngüsünün son yinelemesindeki tüm eylemler başarılı olursa, Until döngüsünün tamamı Başarılı olarak işaretlenir.

  • Until döngüsünün son yinelemesinde herhangi bir eylem başarısız olursa, Until döngüsünün tamamı Başarısız olarak işaretlenir.

  • Son yineleme dışında bir yinelemede herhangi bir eylem başarısız olursa, sonraki yineleme çalışmaya devam eder ve Until eyleminin tamamı Başarısız olarak işaretlenmez.

    Bunun yerine eylemin başarısız olmasını sağlamak için adlı parametresini operationOptionsekleyerek ve değerini FailWhenLimitsReachedolarak ayarlayarak döngünün JSON tanımındaki varsayılan davranışı değiştirin, örneğin:

    "Until": {
       "actions": {
         "Execute_stored_procedure": {
           <...>
           }
         },
         "expression": "@equals(variables('myUntilStop'), true)",
         "limit": {
           "count": 5,
           "timeout": "PT1H"
         },
         "operationOptions": "FailWhenLimitsReached",
         "runAfter": {
         "Initialize_variable_8": [
           "Succeeded"
         ]
       },
    "type": "Until"
    }
    

Aşağıdaki örnek iş akışında, her gün 08:00'den başlayarak, Until eylemi değişkenin değeri 10'a eşit olana kadar değişkeni artırır. Ardından iş akışı geçerli değeri onaylayan bir e-posta gönderir. Örnekte Office 365 Outlook kullanılabilecek ancak Azure Logic Apps'in desteklediği herhangi bir e-posta sağlayıcısını kullanabilirsiniz. Başka bir e-posta hesabı kullanıyorsanız genel adımlar aynı kalır ancak biraz farklı görünür.

  1. Azure portalında boş bir iş akışıyla bir mantıksal uygulama kaynağı oluşturun. Önceki prosedüre başvurun.

  2. Tasarımcıda, Zamanlama adlı yerleşik tetikleyici Yinelenme'yi Tüketim veya Standart iş akışınıza eklemek için genel adımları izleyin.

  3. Yinelenme tetikleyicisinde tetikleyicinin tetiklenme aralığını, sıklığını ve zamanını belirtin.

    Parametre Değer
    Aralık 1
    Sıklık Gün
    Şu saatlerde 8
    Şu dakikalarda 00

    Bu saatlerde ve Bu dakikalarda, Sıklık seçeneğini Gün olarak ayarladığınızda görünür.

    İşiniz bittiğinde Yinelenme tetikleyicisi aşağıdaki örneğe benzer:

    Yinelenme tetikleyicisi parametrelerinin ayarlandığı Azure portalını ve iş akışı tasarımcısını gösteren ekran görüntüsü.

  4. Tetikleyicinin altında, Değişkenler yerleşik eylemi içindeki Değişkenleri başlat adlı eylemi Tüketim veya Standart mantıksal uygulama iş akışınıza eklemek için şu genel adımları izleyin.

  5. Değişkenleri başlat eyleminde aşağıdaki değerleri sağlayın:

    Parametre Değer Açıklama
    Adı Sınırla Değişkeninizin adı
    Tür Tamsayı Değişkeninizin veri türü
    Değer 0 Değişkeninizin başlangıç değeri

    Ekran görüntüsünde Azure portalı, iş akışı tasarımcısı ve parametreleriyle birlikte Değişkeni başlat adlı yerleşik eylem gösterilmektedir.

  6. Değişkenleri başlat eyleminin altında, Tüketim veya Standart mantıksal uygulama iş akışınıza Until adlı Denetim yerleşik eylemini eklemek için bu genel adımları izleyin.

  7. Until eyleminde, döngünün durdurma koşulunu ayarlamak için aşağıdaki değerleri sağlayın.

    1. Loop Until kutusunun içine tıklayın ve dinamik içerik listesini açmak için şimşek simgesini seçin.

    2. Listeden Değişkenler'in altında Sınır adlı değişkeni seçin.

    3. Sayı'nın altında karşılaştırma değeri olarak 10 girin.

    Açıklanan değerlerle Until adlı bir iş akışını ve yerleşik eylemi gösteren ekran görüntüsü.

  8. Until eylemi içinde +>Eylem ekle seçin.

  9. Tüketim veya Standart mantık uygulaması iş akışınızdaki Kadar eylemine Değişkeni artır adlı Değişkenler yerleşik eylemini eklemek için aşağıdaki genel adımları izleyin.

  10. Değişken artırma eyleminde Limit değişkeninin değerini 1 artırmak için aşağıdaki değerleri sağlayın:

    Parametre Değer
    Sınırla Limit değişkenini seçin.
    Değer 1

    Sınır değişkeni ve Değer değeri 1 olarak ayarlanmış Until adlı bir iş akışını ve yerleşik eylemi gösteren ekran görüntüsü.

  11. Until eyleminin dışında ve altında, Consumption veya Standard mantık uygulaması iş akışınıza e-posta gönderen bir eylem eklemek için şu genel adımları izleyin.

    Bu örnek, E-posta gönder adlı Office 365 Outlook eylemiyle devam eder.

  12. E-posta eyleminde aşağıdaki değerleri sağlayın:

    Parametre Değer Açıklama
    Alıcı < e-posta-adresi@domain> Alıcının e-posta adresi. Test için kendi e-posta adresinizi kullanın.
    Konu "Sınır" değişkeninin geçerli değeri:Sınır E-posta konusu. Bu örnekte, geçerli değerin belirtilen koşulunuzu karşıladığını onaylamak için Limit değişkenini eklediğinizden emin olun:

    1. Konu kutusunun içini seçin ve ardından şimşek simgesini seçin.

    2. Açılan dinamik içerik listesinden Değişkenler bölüm üst bilgisinin yanındaki Daha fazla bilgi'yi seçin.

    3. Sınır'ı seçin.
    Gövde < e-posta içeriği> Göndermek istediğiniz e-posta iletisi içeriği. Bu örnekte, istediğiniz metni girin.

    İşiniz bittiğinde, e-posta eyleminiz aşağıdaki örneğe benzer şekilde görünür:

    Özellik değerleriyle e-posta gönder adlı bir iş akışını ve eylemi gösteren ekran görüntüsü.

  13. İş akışınızı kaydedin.

İş akışınızı test etme

Mantıksal uygulama iş akışınızı el ile test etmek için:

  • Tasarımcı araç çubuğundaki Çalıştır seçeneğinden Çalıştır'ı seçin.

İş akışınız çalışmaya başladıktan sonra, belirttiğiniz içeriği içeren bir e-posta alırsınız:

Örnek iş akışından alınan örnek e-postayı gösteren ekran görüntüsü.

Sonsuz döngüleri önleme

Until eylemi, isteğe bağlı Count ve Timeout parametrelerine göre yürütmeyi durdurur. Bu parametre değerlerini uygun şekilde ayarladığınızdan emin olun:

Parametre Açıklama
Sayı Döngü sonlanmadan önce gerçekleştirilecek en fazla yineleme sayısı.

Bir iş akışının sahip olabileceği Until eylemlerinin sayısına ilişkin varsayılan ve en yüksek sınırlar için bkz. Eşzamanlılık, döngü oluşturma ve toplu işlem çözme sınırları.
Zaman aşımı Until eyleminin, tüm yinelemeler dahil, döngü sona ermeden önce çalışacağı azami süre. Bu değer ISO 8601 biçiminde belirtilir ve her yineleme için değerlendirilir.

Döngüdeki herhangi bir eylem zaman aşımı sınırından uzun sürerse geçerli yineleme durmaz. Ancak, zaman aşımı sınırı koşulu karşılandığından sonraki yineleme başlatılmaz.

Timeout değerinin varsayılan ve maksimum limitleri için bkz. Eşzamanlılık, döngü ve toplu işlemden çıkarma limitleri.

Until döngüsü yinelemelerinin çalıştırma geçmişini gözden geçirin

Until döngüsü içeren bir iş akışının çalıştırma geçmişini görüntülediğinizde, döngü içindeki eylemlerin ayrıntılı durumu ve sonuçları yalnızca döngünün tamamı çalıştırmasını tamamladıktan sonra kullanılabilir. Until döngüsü yine yinelemelerini yürütürken, döngü eylemi Çalışıyor durumunu gösterir, ancak döngü çıkana kadar tek tek yineleme sonuçlarını genişletemez veya çapraz geçiş yapamazsınız.

Döngü, aşağıdaki koşullardan biri sağlandığında sonlanır:

  • Belirtilen ifade true olarak değerlendirilir.
  • Döngü Count sınırına ulaşır.
  • Döngü Zaman Aşımı sınırına ulaşır.

Döngü tamamlandıktan sonra çalıştırma geçmişinde Until eylemini seçerek her yinelemeyi ve bu yineleme içindeki alt eylemlerin durumunu görüntüleyebilirsiniz.

Not

Until döngünüz uzun bir süre çalışıyorsa, tek tek yinelemelerin sonuçlarının çalıştırma geçmişini inceleyebilmek için önce döngünün tamamen tamamlanmasını beklemeniz gerekir. Uzun süre çalışan ve devam eden döngüleri izlemek için, döngünün içine durumu bağımsız olarak yayan günlük veya bildirim eylemleri eklemeyi göz önünde bulundurun; örneğin, kuyruğa ileti göndererek veya paralel dalın okuyabileceği bir değişkeni güncelleştirerek.

"Until" tanımı (JSON)

Kod görünümünde çalışıyorsanız, iş akışınızın JSON tanımında bir Until eylem tanımlayabilirsiniz, örneğin:

"actions": {
   "Initialize_variable": {
      // Definition for initialize variable action
   },
   "Send_an_email": {
      // Definition for send email action
   },
   "Until": {
      "type": "Until",
      "actions": {
         "Increment_variable": {
            "type": "IncrementVariable",
            "inputs": {
               "name": "Limit",
               "value": 1
            },
            "runAfter": {}
         }
      },
      "expression": "@equals(variables('Limit'), 10)",
      // To prevent endless loops, an "Until" loop 
      // includes these default limits that stop the loop. 
      "limit": { 
         "count": 60,
         "timeout": "PT1H"
      },
      "runAfter": {
         "Initialize_variable": [
            "Succeeded"
         ]
      }
   }
}

Bu örnek Until döngüsü, kaynak oluşturan bir HTTP uç noktasını çağırır. HTTP yanıt gövdesi Completed durumu döndürdüğünde döngü durur. Sonsuz döngüleri önlemek için, aşağıdaki koşullardan herhangi biri gerçekleşirse döngü de durdurulur:

  • Döngü, özniteliği tarafından count belirtilen şekilde 10 kez çalıştı. Varsayılan değer 60 kezdir.

  • Döngü, timeout özniteliğinde ISO 8601 biçiminde belirtildiği gibi iki saat boyunca çalıştı. Varsayılan değer bir saattir.

"actions": {
   "myUntilLoopName": {
      "type": "Until",
      "actions": {
         "Create_new_resource": {
            "type": "Http",
            "inputs": {
               "body": {
                  "resourceId": "@triggerBody()"
               },
               "url": "https://domain.com/provisionResource/create-resource"
            },
            "runAfter": {},
            "type": "ApiConnection"
         }
      },
      "expression": "@equals(body('Create_new_resource'), 'Completed')",
      "limit": {
         "count": 10,
         "timeout": "PT2H"
      },
      "runAfter": {}
   }
}