Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Azure Logic Apps (Tüketim + Standart)
Aynı işlemleri bir dizi veya koleksiyondaki her öğede çalıştırmak veya mantık uygulaması iş akışınızda bir şey bitene kadar işlemleri tekrarlamak için, iş akışınıza sırasıyla For each veya Untiladlı Control eylemini ekleyin:
| Action | Görev |
|---|---|
| Her biri için | Dizi veya koleksiyon öğeleri üzerinde bir veya daha fazla eylemi tekrarlayın. Sadece diziler ve koleksiyonlar için geçerlidir. İpucu: Eğer dizileri yöneten bir tetikleyiciniz varsa ve her dizi öğesi için bir iş akışı örneği çalıştırmak istiyorsanız, diziyi debatch etmek için tetikleyicinin Split on özelliğini ayarlayın. Bilgi için bkz. Eşzamanlılık, döngü ve debatching limitleri. |
| Until | Bir koşul yerine getirilene veya belirli bir durum değişene kadar bir veya daha fazla eylemi tekrarlayın. İş akışınız önce döngüdeki tüm işlemleri çalıştırır, ardından durumu veya durumu kontrol eder. Koşul karşılanırsa döngü durur. Aksi takdirde döngü yineler. Bilgi için bkz. Eşzamanlılık, döngü ve debatching limitleri. |
Bu rehber, iş akışınıza bir döngü eklemeyi, yinelemeleri sıralı çalıştırmayı ve sonsuz döngüleri nasıl önlemeyi gösteriyor. İstediğiniz göreve geçin:
- İş akışınıza bir For each döngüsü ekleyin
- Her yineleme için sıralı çalıştır
- İş akışınıza bir Until döngüsü ekleyin
- Sonsuz döngüleri önleyin
Not
Power Automate dokümantasyonu için bkz. Döngüleri Kullan.
Önkoşullar
Bir Azure hesabı ve aboneliği Ücretsiz bir Azure hesabı edinin.
Döngüyü çalıştırmak istediğiniz mantık uygulaması iş akışı, iş akışını başlatan bir tetikleyici dahil.
Döngü eylemi eklemeden önce, iş akışınız ilk adım olarak tetikleyiciyle başlamalıdır .
Bu rehber Azure portalını kullanır, ancak Visual Studio Code ve ilgili Azure Logic Apps uzantısı ile mantık uygulama iş akışlarını oluşturabilirsiniz:
- Visual Studio Code'da Tüketim İş Akışları Oluştur
- Visual Studio Code'da Standart İş Akışları Oluştur
Her döngü için dikkate alınan hususlar
Her bir eylem, her dizi veya koleksiyon öğesi üzerinde bir veya daha fazla eylemi tekrarlar.
For each eylemi yalnızca diziler ve koleksiyonlarda çalışır.
For each eylemi, sınırlı sayıda dizi öğesini işler.
Varsayılan olarak, her eylem için yinelemeler paralel çalışır. Bilinmesi gereken temel davranışlar:
Davranış Ne anlama gelir? Varsayılan olarak paralel Power Automate'ın Apply her döngüye uygulanmasının aksine, yinelemeler tek tek çalıştırılmaz.
Senaryonuzda ardışık işleme gerekiyorsa, her yinelemeyi ardışık olarak çalıştır sayfasına bakınız. Örneğin, her eylem için bir sonraki yinelemeyi Delay eylemi kullanarak duraklatmak için, her yinelemeyi ardışık olarak çalıştırın.İç içe döngüler İç içe geçmiş bir For each eylemi her zaman sıralı olarak çalışır. Paralel olarak çalıştırmak için bir alt iş akışı oluşturun ve çağırın. Variables Artan değişken, Azalma değişkeni ve Değişkene Ekle , paralel döngülerde öngörülemez sonuçlar verebilir. Bir döngüdeki değişkenlerin her yinelemede bu değişkenler üzerinde yapılan işlemlerden öngörülebilir sonuçlar üretmesini sağlamak için, döngü sıralı olarak çalıştırılır. 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.
İş akışınıza bir For each döngüsü ekleyin
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.
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.
Tasarımcıda, tetikleyici ile E-posta gönder eylemi arasında, iş akışınız türüne göre genel adımları takip ederek Her biri için adlı eylemi ekleyin:
Şimdi döngüyü oluşturun:
Her işlem içinde , Önceki Adımlardan Bir Çıktı Seç kutusunu seçerek giriş seçeneklerini görebilir ve ardından yıldırım simgesini seçin.
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.
Aşağıdaki örnek seçilen dizi çıktısını gösterir:
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.
İş akışınız aşağıdaki örnek gibi görünüyor:
İş akışınızı kaydedin.
İş 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 biri için: Döngü yinelemelerini ardışık çalıştırın
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.
Tasarımcıda Her eylem için'i seçerek bilgi bölmesini açın ve ardından Ayarlar'ı seçin.
Eşzamanlılık denetimi altında, ayarı Kapalı yerine Açık olarak değiştirin.
Paralellik derecesi kaydırıcısını 1'e taşıyın.
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"
}
}
Döngüye kadar dikkate alınan noktalar
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. Daha fazla bilgi için bkz. Eşzamanlılık, döngü ve debatch limitleri.
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ğeriniFailWhenLimitsReachedolarak 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": [ "Succeeded" ] }, "type": "Until" }
İş akışınıza bir Until döngüsü ekleyin
Aşağıdaki örnek iş akışı her gün sabah 8:00'de başlar. İş akışı, bir değişkeni değeri 10'a eşit olana kadar artırmak için Until eylemini kullanı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.
Azure portalında boş bir iş akışıyla bir mantıksal uygulama kaynağı oluşturun.
Tasarımcıda, iş akışı türünüze göre genel adımları izleyerek Zamanlama adlı Yineleme yerleşik tetikleyicisini ekleyin:
Tekrarlanma tetikleyicisinde aşağıdaki bilgileri verin:
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.
Aşağıdaki örnek, Tekrarlanma tetikleyicisinin nasıl göründüğünü göstermektedir:
Tasarımcıda, iş akışı türüne göre genel adımları takip ederek Değişkeni başlat (Initialize variable) adlı yerleşik eylemi ekleyin:
Değişkeni başlatma eyleminde aşağıdaki bilgileri verin:
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. Başlatma değişkeni eylemi altında, iş akışınız türüne göre genel adımları takip ederek Untiladlı Control yerleşik eylemini ekleyin:
Until eyleminde, döngü için durdurma koşulu ayarlanır:
Loop Until kutusunun içini seçin ve ardından dinamik içerik listesini açmak için lightning simgesini seçin.
Listeden Değişkenler'in altında Sınır adlı değişkeni seçin.
Sayı'nın altında karşılaştırma değeri olarak 10 girin.
Until eylemi içinde +>Eylem ekle seçin.
İş akışı türünüze bağlı olarak aşağıdaki genel adımları izleyerek, Until eylemine Variables yerleşik eylemlerindeki Increment variable adlı eylemi ekleyin:
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 Until eyleminin dışında ve altında, iş akışınız türüne göre genel adımları takip ederek e-posta gönderen bir eylem ekleyin:
Bu örnek, E-posta gönder adlı Office 365 Outlook eylemiyle devam eder.
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. Aşağıdaki örnek, e-posta eyleminizin nasıl göründüğünü gösterir:
İş 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:
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.
Eylem tanımına kadar (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
countbelirtilen ş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": {}
}
}