Azure Logic apps'te kapsamları Grup durumuyla göre eylemleri çalıştırmaRun actions based on group status with scopes in Azure Logic Apps

Başka bir grup eylemlerin başarılı veya başarısız sonra eylemleri çalıştırmak için bu eylemlerin içinde grubunda bir kapsam.To run actions only after another group of actions succeed or fail, group those actions inside a scope. Bu yapı, mantıksal grup olarak eylemleri düzenlemek, bu grubun durumunu değerlendirmek ve kapsamın durumuna dayalı eylemleri gerçekleştirmek istediğinizde yararlıdır.This structure is useful when you want to organize actions as a logical group, evaluate that group's status, and perform actions that are based on the scope's status. Bir kapsam içindeki tüm eylemleri çalıştırma işlemini tamamladıktan sonra kapsam, ayrıca kendi durumlarını alır.After all the actions in a scope finish running, the scope also gets its own status. Örneğin, uygulamak istediğiniz zaman kapsamlarını kullanabilirsiniz özel durum ve hata işleme.For example, you can use scopes when you want to implement exception and error handling.

Bir kapsamın durumu denetlemek için bir mantıksal belirlemek için kullandığınız aynı kriteri kullanabilirsiniz uygulamaların durumu "Başarılı", "Başarısız", "İptal edildi" ve benzeri gibi çalıştırın.To check a scope's status, you can use the same criteria that you use to determine a logic apps' run status, such as "Succeeded", "Failed", "Cancelled", and so on. Kapsamın tüm eylemleri başarılı olduğunda, varsayılan olarak, kapsamın durumu "Başarılı" olarak işaretlenmişBy default, when all the scope's actions succeed, the scope's status is marked "Succeeded." Ancak kapsamdaki herhangi bir işlem başarısız olduğunda veya iptal edildi, kapsamın durumu "Başarısız" olarak işaretlenmişBut when any action in the scope fails or is canceled, the scope's status is marked "Failed." Kapsamlar hakkında daha fazla limitleri için bkz limitler ve yapılandırma.For limits on scopes, see Limits and config.

Örneğin, belirli eylemleri ve kapsamın durumu kontrol etme koşulu çalıştırmak için bir kapsam kullanan bir üst düzey mantıksal uygulama aşağıdadır.For example, here is a high-level logic app that uses a scope to run specific actions and a condition to check the scope's status. Kapsamdaki herhangi bir eylem başarısız veya beklenmedik şekilde sona, kapsamı sırasıyla "Başarısız" veya "İptal edildi" işaretlenir ve mantıksal uygulama bir "Kapsam başarısız oldu" iletisi gönderir.If any actions in the scope fail or end unexpectedly, the scope is marked "Failed" or "Aborted" respectively, and the logic app sends a "Scope failed" message. Kapsamı belirli eylemlerin tümü başarısız olursa mantıksal uygulama bir "Kapsam başarılı oldu" iletisi gönderir.If all the scoped actions succeed, the logic app sends a "Scope succeeded" message.

'Zamanlama – yinelenme"tetikleyicisini ' ayarlayın

ÖnkoşullarPrerequisites

Bu makaledeki örnek takip etmek için bu öğeler gerekir:To follow the example in this article, you need these items:

Örnek mantıksal uygulama oluşturmaCreate sample logic app

İlk olarak, daha sonra bir kapsam ekleyebilirsiniz, böylece bu örnek mantıksal uygulama oluşturun:First, create this sample logic app so that you can add a scope later:

Örnek mantıksal uygulama oluşturma

  • A zamanlama - yinelenme Bing Haritalar hizmetini denetler, belirttiğiniz bir zaman aralığında tetikleyicisiA Schedule - Recurrence trigger that checks the Bing Maps service at an interval that you specify
  • A Bing Haritalar - rota Al iki konum arasında seyahat süresini denetleyen eyleminA Bing Maps - Get route action that checks the travel time between two locations
  • Seyahat süresi, belirtilen seyahat süresini aşan olup olmadığını denetleyen bir koşul deyimiA conditional statement that checks whether the travel time exceeds your specified travel time
  • Bu geçerli seyahat süresini e-posta gönderen bir eylem, belirtilen zaman aşıyorAn action that sends you email that current travel time exceeds your specified time

Mantıksal uygulamanızı kaydetmek istediğiniz zaman, genellikle çalışmalarınızı kaydedin.You can save your logic app at any time, so save your work often.

  1. Oturum Azure portalında, henüz yapmadıysanız.Sign in to the Azure portal, if you haven't already. Boş bir mantıksal uygulama oluşturma.Create a blank logic app.

  2. Ekleme zamanlama - yinelenme şu ayarlarla tetikleyici: Aralığı = "1" ve sıklığı "Minute" =Add the Schedule - Recurrence trigger with these settings: Interval = "1" and Frequency = "Minute"

    'Zamanlama – yinelenme"tetikleyicisini ' ayarlayın

    İpucu

    Görsel olarak görünümünüzü basitleştirin ve her eylemin ayrıntıları Tasarımcısı'nda gizlemek için bu adımları ilerlemeyi olarak her eylemin şekli daraltın.To visually simplify your view and hide each action's details in the designer, collapse each action's shape as you progress through these steps.

  3. Ekleme Bing Haritalar - rota Al eylem.Add the Bing Maps - Get route action.

    1. Bing Haritalar bağlantınız yoksa bir bağlantı oluşturmanız istenir.If you don't already have a Bing Maps connection, you're asked to create a connection.

      AyarSetting DeğerValue AçıklamaDescription
      Bağlantı AdıConnection Name BingMapsConnectionBingMapsConnection Bağlantınıza bir ad verin.Provide a name for your connection.
      API AnahtarıAPI Key <your-Bing-Maps-key><your-Bing-Maps-key> Daha önce aldığınız Bing Haritalar anahtarını girin.Enter the Bing Maps key that you previously received.
    2. Ayarlama, rota Al bu görüntünün altındaki tabloda gösterildiği gibi bir eylem:Set up your Get route action as shown the table below this image:

      "Bing Haritalar - rota Al" ayarlamak eylemi

      Bu parametreler hakkında daha fazla bilgi için bkz. Rota hesaplama.For more information about these parameters, see Calculate a route.

      AyarSetting DeğerValue AçıklamaDescription
      Güzergah noktası 1Waypoint 1 <Başlangıç><start> Rotanızın girin.Enter your route's origin.
      Güzergah noktası 2Waypoint 2 <end><end> Rotanızın hedefi girin.Enter your route's destination.
      KaçınınAvoid NoneNone Ücretli geçişler, Otoyollar gibi yönlendiricilerin önlemek ve benzeri öğeleri girin.Enter items to avoid on your route, such as highways, tolls, and so on. Olası değerler için bkz. rota hesaplama.For possible values, see Calculate a route.
      İyileştirOptimize timeWithTraffictimeWithTraffic Uzaklık, zaman ile geçerli trafik bilgileri vb. gibi Rotanızı iyileştirmeye yönelik bir parametre seçin.Select a parameter to optimize your route, such as distance, time with current traffic information, and so on. Bu örnekte bu değer: "timeWithTraffic"This example uses this value: "timeWithTraffic"
      Mesafe birimiDistance unit <your-preference><your-preference> Hesaplamak rotanız için mesafe birimi girin.Enter the unit of distance to calculate your route. Bu örnekte, bu değeri kullanır: "Mil"This example uses this value: "Mile"
      Seyahat moduTravel mode SürüşDriving Rotanız için seyahat modunu girin.Enter the mode of travel for your route. Bu örnekte bu değer "Driving" kullanır.This example uses this value "Driving"
      Toplu Ulaşım Tarih-SaatiTransit Date-Time NoneNone Yalnızca toplu ulaşım modu için geçerlidir.Applies to transit mode only.
      Aktarım türü tarih türüTransit Date-Type Type NoneNone Yalnızca toplu ulaşım modu için geçerlidir.Applies to transit mode only.
  4. Koşul Ekle geçerli seyahat süresi trafik ile belirli bir süre aşıyor olup olmadığını denetler.Add a condition that checks whether the current travel time with traffic exceeds a specified time. Bu örnekte, aşağıdaki adımları izleyin:For this example, follow these steps:

    1. Koşulu şu açıklama ile yeniden adlandırın: Trafik zaman belirtilen süreden fazlaysaRename the condition with this description: If traffic time is more than specified time

    2. En soldaki sütunda içine tıklayın bir değer seçin dinamik içerik listesinde görünecek şekilde kutusu.In the leftmost column, click inside the Choose a value box so the dynamic content list appears. Bu listeden seyahat süresi trafik saniyeler içinde alanı.From that list, select the Travel Duration Traffic field, which is in seconds.

      Koşul derleme

    3. Orta kutusunda şu işleci seçin: büyüktürIn the middle box, select this operator: is greater than

    4. En sağdaki sütunda eşdeğer 10 dakika ve saniye içinde bu karşılaştırma değeri girin: 600In the rightmost column, enter this comparison value, which is in seconds and equivalent to 10 minutes: 600

      İşlem tamamlandığında koşulunuz şu örnekteki gibi görünür:When you're done, your condition looks like this example:

      Tamamlanmış koşul

  5. İçinde doğruysa dal, e-posta sağlayıcınız için bir "e-posta Gönder" eylemini ekleyin.In the If true branch, add a "send email" action for your email provider. Bu eylem, bu görüntünün altındaki adımları izleyerek ayarlama:Set up this action by following the steps under this image:

    "True ise", "e-posta Gönder" eylemini ekleme dal

    1. İçinde için test amacıyla e-posta adresinizi girin.In the To field, enter your email address for testing purposes.

    2. İçinde konu alan, şu metni girin:In the Subject field, enter this text:

      Time to leave: Traffic more than 10 minutes

    3. İçinde gövdesi bir boşluk koyarak şu metni girin:In the Body field, enter this text with a trailing space:

      Travel time:

      İmlecinizi görünür ancak gövdesi alan, dinamik içerik listesinden kalır açık bu noktada kullanılabilir herhangi bir parametre seçebilirsiniz.While your cursor appears in the Body field, the dynamic content list stays open so that you can select any parameters that are available at this point.

    4. Dinamik içerik listesinde İfade’yi seçin.In the dynamic content list, choose Expression.

    5. Bulmak ve seçmek div() işlevi.Find and select the div() function. İmlecinizi, işlevin parantez içinde yerleştirin.Put your cursor in inside the function's parentheses.

    6. İmlecinizi bir işlevin parantez içinde olsa da, seçin dinamik içerik dinamik içerik listesini görüntüleyin.While your cursor is inside the function's parentheses, choose Dynamic content so that the dynamic content list appears.

    7. Gelen rota Al bölümünden trafiği süresi trafik alan.From the Get route section, select the Traffic Duration Traffic field.

      "Trafiği süresi trafik" seçin

    8. JSON biçimine alan çözümlendikten sonra ekleme bir virgülle (,) bir sayı 60 değeri dönüştürme böylece trafiği süresi trafik saniyelerden dakikalara.After the field resolves to JSON format, add a comma (,) followed by the number 60 so that you convert the value in Traffic Duration Traffic from seconds to minutes.

      div(body('Get_route')?['travelDurationTraffic'],60)
      

      Şimdi ifadeniz şu örnekteki gibi görünür:Your expression now looks like this example:

      İfadeyi tamamlayın

    9. İşiniz bittiğinde seçin Tamam.When you're done, choose OK.

    1. İfade çözümlendikten sonra başında boşluk koyarak şu metni ekleyin: minutesAfter the expression resolves, add this text with a leading space: minutes

      Gövdesi alan artık şu örnekteki gibi görünür:Your Body field now looks like this example:

      Tamamlanmış "Gövde" alanı Finished "Body" field

  6. Mantıksal uygulamanızı kaydedin.Save your logic app.

Ardından, böylece belirli eylemleri grup ve bunların durumunu değerlendirmek kapsam ekleyin.Next, add a scope so that you can group specific actions and evaluate their status.

Kapsam EkleAdd a scope

  1. Henüz yapmadıysanız, mantıksal uygulamanızı Logic Apps Tasarımcısı'nda açın.If you haven't already, open your logic app in Logic App Designer.

  2. Bir kapsam, istediğiniz iş akışı konumunda ekleyin.Add a scope at the workflow location that you want. Örneğin, bir kapsamı arasında var olan mantıksal uygulama iş akışı adımları eklemek için aşağıdaki adımları izleyin:For example, to add a scope between existing steps in the logic app workflow, follow these steps:

    1. İmlecinizi, kapsamı eklemek istediğiniz okun üzerine getirin.Move your pointer over the arrow where you want to add the scope. Seçin artı ( + ) > Eylem Ekle.Choose the plus sign (+) > Add an action.

      Kapsam Ekle

    2. Arama kutusuna filtreniz olarak "scope" girin.In the search box, enter "scope" as your filter. Seçin kapsam eylem.Select the Scope action.

Kapsama adımlar ekleyinAdd steps to scope

  1. Artık adımlar eklemeniz veya kapsam içinde çalıştırmak istediğiniz var olan adımları sürükleyin.Now add the steps or drag existing steps that you want to run inside the scope. Bu örnekte, bu eylemleri kapsamına sürükleyin:For this example, drag these actions into the scope:

    • Rota AlGet route
    • Trafik zaman belirtilen süreden fazlaysa, her ikisini de içeren true ve false dallarIf traffic time is more than specified time, which includes both the true and false branches

    Mantıksal uygulamanız artık şu örnekteki gibi görünür:Your logic app now looks like this example:

    Kapsam eklendi

  2. Kapsam altında kapsamın durumu denetleyen bir koşul ekleyin.Under the scope, add a condition that checks the scope's status. Koşulu şu açıklama ile yeniden adlandırın: Kapsam başarısız olduysaRename the condition with this description: If scope failed

    Kapsam durumunu denetlemek için koşul Ekle

  3. Koşul kapsamın durumu "Başarısız" veya "İptal edildi" eşit olup olmadığını denetleyin. Bu ifadeler ekleyin.In the condition, add these expressions that check whether the scope's status is equal to "Failed" or "Aborted".

    1. Başka bir satır eklemek için Ekle.To add another row, choose Add.

    2. Dinamik içerik listesinde görünecek şekilde her satırda sol kutusunun içine tıklayın.In each row, click inside the left box so the dynamic content list appears. Dinamik içerik listesinden seçin ifade.From the dynamic content list, choose Expression. Düzenleme kutusuna şu ifadeyi girin ve ardından Tamam:In the edit box, enter this expression, and then choose OK:

      result('Scope')[0]['status']

      Kapsamın durumu denetleyen bir ifade ekleyin

    3. Her iki satır seçin eşittir işleci olarak.For both rows, select is equal to as the operator.

    4. Karşılaştırma değerlerinin ilk satırını girin Failed.For the comparison values, in the first row, enter Failed. İkinci satırda girin Aborted.In the second row, enter Aborted.

      İşlem tamamlandığında koşulunuz şu örnekteki gibi görünür:When you're done, your condition looks like this example:

      Kapsamın durumu denetleyen bir ifade ekleyin

      Şimdi koşulun ayarlamak runAfter koşul kapsamı durumunu denetler ve eşleşen eylemi çalıştıran özelliğini daha sonraki adımlarda tanımlayın.Now, set the condition's runAfter property so the condition checks the scope status and runs the matching action that you define in later steps.

    5. Üzerinde kapsam başarısız olduysa koşul öğesini üç nokta (...) düğmesini ve ardından sonrasında çalıştırmayı Yapılandır.On the If scope failed condition, choose the ellipsis (...) button, and then choose Configure run after.

      'RunAfter' özelliği'ni yapılandırma

    6. Bu kapsam durumlarını seçin: başarılı, başarısız oldu, atlandı, ve zaman aşımına uğradıSelect all these scope statuses: is successful, has failed, is skipped, and has timed out

      Kapsam durumlarını seçin

    7. İşiniz bittiğinde Bitti'yi seçin.When you're finished, choose Done. Koşul artık bir "bilgi" simgesi gösterir.The condition now shows an "information" icon.

  4. İçinde doğruysa ve false ise dallar ekleme gerçekleştirmek istediğiniz eylemleri her kapsam duruma göre örneğin, bir e-posta veya ileti gönderin.In the If true and If false branches, add the actions that you want to perform based on each scope status, for example, send an email or message.

    Kapsam durumuna göre gerçekleştirilecek eylemler ekleyin

  5. Mantıksal uygulamanızı kaydedin.Save your logic app.

Tamamlanmış mantıksal uygulamanız artık şu örnekteki gibi görünür:Your finished logic app now looks like this example:

Tamamlanmış mantıksal uygulama kapsamlı

İşinizi test etmeTest your work

Tasarımcı araç çubuğunda çalıştırma.On the designer toolbar, choose Run. Kapsamı belirli eylemlerin tümü başarılı olursa, "Kapsam başarılı oldu" iletisi alıyorum.If all the scoped actions succeed, you get a "Scope succeeded" message. Kapsamı belirlenmiş eylemleri yoksa başarılı olursa, "Kapsam başarısız oldu" iletisi alıyorum.If any scoped actions don't succeed, you get a "Scope failed" message.

JSON tanımıJSON definition

Kod Görünümü'nde çalışıyorsanız, mantıksal uygulamanızın JSON tanımında bir kapsama yapısı yerine tanımlayabilirsiniz.If you're working in code view, you can define a scope structure in your logic app's JSON definition instead. Örneğin, tetikleyici ve Eylemler önceki mantıksal uygulama için JSON tanımı şöyledir:For example, here is the JSON definition for trigger and actions in the previous logic app:

"triggers": {
  "Recurrence": {
    "type": "Recurrence",
    "recurrence": {
       "frequency": "Minute",
       "interval": 1
    }
  }
}
"actions": {
  "If_scope_failed": {
    "type": "If",
    "actions": {
      "Scope_failed": {
        "type": "ApiConnection",
        "inputs": {
          "body": {
            "Body": "Scope failed. Scope status: @{result('Scope')[0]['status']}",
            "Subject": "Scope failed",
            "To": "<your-email@domain.com>"
          },
          "host": {
            "connection": {
              "name": "@parameters('$connections')['outlook']['connectionId']"
            }
          },
          "method": "post",
          "path": "/Mail"
        },
        "runAfter": {}
      }
    },
    "else": {
      "actions": {
        "Scope_succeded": {
          "type": "ApiConnection",
          "inputs": {
            "body": {
              "Body": "Scope succeeded. Scope status: @{result('Scope')[0]['status']}",
              "Subject": "Scope succeeded",
              "To": "<your-email@domain.com>"
            },
            "host": {
              "connection": {
               "name": "@parameters('$connections')['outlook']['connectionId']"
              }
            },
            "method": "post",
            "path": "/Mail"
          },
          "runAfter": {}
        }
      }
    },
    "expression": {
      "or": [ 
         {
            "equals": [ 
              "@result('Scope')[0]['status']", 
              "Failed"
            ]
         },
         {
            "equals": [
               "@result('Scope')[0]['status']", 
               "Aborted"
            ]
         } 
      ]
    },
    "runAfter": {
      "Scope": [
        "Failed",
        "Skipped",
        "Succeeded",
        "TimedOut"
      ]
    }
  },
  "Scope": {
    "type": "Scope",
    "actions": {
      "Get_route": {
        "type": "ApiConnection",
        "inputs": {
          "host": {
            "connection": {
              "name": "@parameters('$connections')['bingmaps']['connectionId']"
            }
          },
          "method": "get",
          "path": "/REST/V1/Routes/Driving",
          "queries": {
            "distanceUnit": "Mile",
            "optimize": "timeWithTraffic",
            "travelMode": "Driving",
            "wp.0": "<start>",
            "wp.1": "<end>"
          }
        },
        "runAfter": {}
      },
      "If_traffic_time_is_more_than_specified_time": {
        "type": "If",
        "actions": {
          "Send_mail_when_traffic_exceeds_10_minutes": {
            "type": "ApiConnection",
            "inputs": {
              "body": {
                 "Body": "Travel time:@{div(body('Get_route')?['travelDurationTraffic'],60)} minutes",
                 "Subject": "Time to leave: Traffic more than 10 minutes",
                 "To": "<your-email@domain.com>"
              },
              "host": {
                "connection": {
                   "name": "@parameters('$connections')['outlook']['connectionId']"
                }
              },
              "method": "post",
              "path": "/Mail"
            },
            "runAfter": {}
          }
        },
        "expression": {
          "and" : [
            {
               "greater": [ 
                  "@body('Get_route')?['travelDurationTraffic']", 
                  600
               ]
            }
          ]
        },
        "runAfter": {
          "Get_route": [
            "Succeeded"
          ]
        }
      }
    },
    "runAfter": {}
  }
},

Destek alınGet support

Sonraki adımlarNext steps