Aracılığıyla paylaş


Azure Logic Apps'te kapsamları kullanarak grup durumuna göre eylemleri çalıştırma

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

Eylemleri yalnızca başka bir eylem grubu başarılı veya başarısız olduktan sonra çalıştırmak için, bu eylemleri bir kapsam içinde gruplandırın. Bu yapı, eylemleri mantıksal grup olarak düzenlemek, bu grubun durumunu değerlendirmek ve kapsamın durumuna göre eylemler gerçekleştirmek istediğinizde kullanışlıdır. Kapsamdaki tüm eylemler çalışmaya son verdikten sonra kapsam kendi durumunu da alır. Örneğin, özel durum ve hata işleme uygulamak istediğinizde kapsamları kullanabilirsiniz.

Bir kapsamın durumunu denetlemek için, mantıksal uygulamaların başarılı, başarısız, iptal edildi vb. çalıştırma durumunu belirlemek için kullandığınız ölçütlerin aynısını kullanabilirsiniz. Varsayılan olarak, kapsamın tüm eylemleri başarılı olduğunda kapsamın durumu Başarılı olarak işaretlenir. Ancak kapsamdaki herhangi bir eylem başarısız olduğunda veya iptal edildiğinde kapsamın durumu Başarısız olarak işaretlenir. Kapsamlarla ilgili sınırlar için bkz . Sınırlar ve yapılandırma.

Örneğin, kapsamı belirli eylemleri çalıştırmak için kullanan üst düzey bir mantıksal uygulama ve kapsamın durumunu denetlemek için bir koşul aşağıda verilmiştir. Kapsamdaki herhangi bir eylem başarısız olursa veya beklenmedik şekilde biterse kapsam sırasıyla Başarısız veya Durduruldu olarak işaretlenir ve mantıksal uygulama "Kapsam başarısız oldu" iletisi gönderir. Tüm kapsamlı eylemler başarılı olursa, mantıksal uygulama bir "Kapsam başarılı" iletisi gönderir.

Diyagramda

Önkoşullar

Bu makaledeki örneği takip etmek için şu öğelere ihtiyacınız vardır:

  • Azure aboneliği. Aboneliğiniz yoksa, ücretsiz bir Azure hesabı için kaydolun.

  • Logic Apps tarafından desteklenen herhangi bir e-posta sağlayıcısından bir e-posta hesabı. Bu örnekte Outlook.com kullanılır. Farklı bir sağlayıcı kullanıyorsanız genel akış aynı kalır ancak kullanıcı arabiriminiz farklı görünür.

  • Bing Haritalar anahtarı. Bu anahtarı almak için bkz . Bing Haritalar anahtarı alma.

  • Mantıksal uygulamalar hakkında temel bilgiler

Örnek mantıksal uygulama oluşturma

İlk olarak, daha sonra kapsam ekleyebilmeniz için bu örnek mantıksal uygulamayı oluşturun:

Örnek mantıksal uygulama oluşturma

  • Bing Haritalar hizmetini belirttiğiniz bir aralıkta denetleyan Bir Zamanlama - Yinelenme tetikleyicisi
  • Bing Haritalar - İki konum arasındaki seyahat süresini denetleen rota eylemini alma
  • Seyahat süresinin belirtilen seyahat sürenizi aşıp aşmadığını denetleen bir koşul eylemi
  • Geçerli seyahat süresinin belirttiğiniz süreyi aştığını belirten bir e-posta gönderen eylem

Mantıksal uygulamanızı istediğiniz zaman kaydedebilirsiniz, bu nedenle çalışmanızı sık sık kaydedin.

  1. Henüz yapmadıysanız Azure portalında oturum açın. Boş bir mantıksal uygulama oluşturma.

  2. Zamanlama - Yinelenme tetikleyicisini şu ayarlarla ekleyin: Interval = "1" ve Frequency = "Minute"

    İpucu

    Görünümünüzü görsel olarak basitleştirmek ve her eylemin ayrıntılarını tasarımcıda gizlemek için, bu adımlarda ilerledikçe her eylemin şeklini daraltın.

  3. Bing Haritalar - Yol al eylemini ekleyin.

    1. Bing Haritalar bağlantınız yoksa bir bağlantı oluşturmanız istenir.

      Ayar Value Açıklama
      Bağlantı Adı BingMapsConnection Bağlantınıza bir ad verin.
      API Anahtarı <your-Bing-Maps-key> Daha önce aldığınız Bing Haritalar anahtarını girin.
    2. Bu görüntünün altındaki tabloda gösterildiği gibi Rota al eyleminizi ayarlayın:

      Bu parametreler hakkında daha fazla bilgi için bkz. Rota hesaplama.

      Ayar Value Açıklama
      Güzergah noktası 1 <start> Rotanızın çıkış noktasını girin.
      Güzergah noktası 2 <son> Rotanızın hedefini girin.
      Önleme Hiçbiri Otoyollar, ücretli yollar gibi rotanızda kaçınılması gereken öğeleri girin. Olası değerler için bkz . Yol hesaplama.
      İyileştir timeWithTraffic Rotanızı iyileştirmek için mesafe, geçerli trafik bilgileriyle zaman gibi bir parametre seçin. Bu örnekte şu değer kullanılır: "timeWithTraffic"
      Mesafe birimi <your-preference> Rotanızı hesaplamak için mesafe birimini girin. Bu örnekte şu değer kullanılır: "Mil"
      Seyahat modu Sürüş Rotanızın seyahat modunu girin. Bu örnekte "Sürüş" değeri kullanılır
      Toplu Ulaşım Tarih-Saati Hiçbiri Yalnızca aktarım modu için geçerlidir.
      Aktarım Tarihi Türü Hiçbiri Yalnızca aktarım modu için geçerlidir.
  4. Trafikle geçerli seyahat süresinin belirtilen süreyi aşıp aşmadığını denetleyebilen bir koşul ekleyin. Bu örnek için şu adımları izleyin:

    1. Koşulu şu açıklamayla yeniden adlandırın: Trafik süresi belirtilen süreden uzunsa

    2. En soldaki sütunda Değer seçin kutusunun içini seçerek dinamik içerik listesinin görünmesini sağlayın. Bu listeden , saniye cinsinden Seyahat Süresi Trafiği alanını seçin.

      Koşul derleme

    3. Ortadaki kutuda şu işleci seçin: büyüktür

    4. En sağdaki sütuna saniye cinsinden ve 10 dakikaya eşdeğer olan bu karşılaştırma değerini girin: 600

      İşlem tamamlandığında koşulunuz şu örnekteki gibi görünür:

      Tamamlanmış koşul

  5. True dalında, e-posta sağlayıcınız için bir "e-posta gönder" eylemi ekleyin. Bu görüntünün altındaki adımları izleyerek bu eylemi ayarlayın:

    1. Son alanına, test amacıyla e-posta adresinizi girin.

    2. Konu alanına şu metni girin:

    Time to leave: Traffic more than 10 minutes

    1. Gövde alanına, sondaki boşlukla şu metni girin:

    Travel time:

    İmleciniz Gövde alanında görünürken, dinamik içerik listesi açık kalır, böylece bu noktada kullanılabilen parametreleri seçebilirsiniz.

    1. Dinamik içerik listesinde İfade'yi seçin.

    2. div() işlevini bulun ve seçin. İmlecinizi işlevin parantezlerinin içine yerleştirin.

    3. İmleciniz işlevin parantez içindeyken Dinamik içerik'i seçerek dinamik içerik listesinin görünmesini sağlayın.

    4. Rotayı al bölümünde Trafik Süresi Trafik alanını seçin.

    5. Alan JSON biçimine çözümlendikten sonra, trafik süresi trafiğindeki değeri saniyelerden dakikalara dönüştürmeniz için bir virgül (,) ve ardından sayı 60 ekleyin.

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

      İfadeniz şimdi şu örneğe benzer:

      Bitiş ifadesi

    6. Bitirdiğinizde Tamam'ı seçin.

    1. İfade çözümlendikten sonra, bu metni baştaki boşlukla ekleyin: minutes

      Gövde alanınız şimdi şu örneğe benzer:

      Tamamlanan

  6. Mantıksal uygulamanızı kaydedin.

Ardından, belirli eylemleri gruplandırmak ve durumlarını değerlendirmek için bir kapsam ekleyin.

Kapsam ekle

  1. Henüz açmadıysanız mantıksal uygulamanızı iş akışı tasarımcısında açın.

  2. İstediğiniz iş akışı konumuna bir kapsam ekleyin. Örneğin, mantıksal uygulama iş akışındaki mevcut adımlar arasına kapsam eklemek için şu adımları izleyin:

    1. İşaretçinizi kapsamı eklemek istediğiniz ok üzerinde hareket ettirin. Artı işaretini (+) >Eylem ekle'yi seçin.

      Kapsam ekle

    2. Arama kutusuna filtreniz olarak "kapsam" yazın. Kapsam eylemini seçin.

Kapsama adım ekleme

  1. Şimdi adımları ekleyin veya kapsamın içinde çalıştırmak istediğiniz mevcut adımları sürükleyin. Bu örnekte, bu eylemleri kapsama sürükleyin:

    • Rotayı al
    • Trafik süresi belirtilen süreden uzunsa, hem true hem de false dallarını içerir

    Mantıksal uygulamanız şimdi şu örneğe benzer:

    Kapsam eklendi

  2. Kapsamın altına kapsamın durumunu denetleen bir koşul ekleyin. Koşulu şu açıklamayla yeniden adlandırın: Kapsam başarısız olduysa

    Kapsam durumunu denetlemek için koşul ekleme

  3. koşulunda, kapsamın durumunun "Başarısız" veya "Durduruldu" değerine eşit olup olmadığını denetleen bu ifadeleri ekleyin.

    1. Başka bir satır eklemek için Ekle'yi seçin.

    2. Her satırda, dinamik içerik listesinin görünmesi için sol kutunun içini seçin. Dinamik içerik listesinden İfade'yi seçin. Düzenleme kutusuna bu ifadeyi girin ve Tamam'ı seçin:

      action('Scope')

      Sonuç ifadesinin vurgulandığı

    3. her iki satır için de işleç olarak eşittir'i seçin.

    4. Karşılaştırma değerleri için ilk satıra girin Failed. İkinci satıra girin Aborted.

      İşlem tamamlandığında koşulunuz şu örnekteki gibi görünür:

      Kapsamın durumunu denetleen ifade ekleme

      Şimdi koşulun özelliğini, koşulun runAfter kapsam durumunu denetlemesi ve sonraki adımlarda tanımladığınız eşleşen eylemi çalıştırması için ayarlayın.

    5. Kapsam başarısız olduysa koşulunda üç nokta (...) düğmesini ve ardından Çalıştırma sonrasını yapılandır'ı seçin.

      runAfter özelliğini yapılandırma

    6. Tüm bu kapsam durumlarını seçin: başarılı, başarısız, atlandı ve zaman aşımına uğradı

      Kapsam durumlarını seçme

    7. İşiniz bittiğinde Bitti'yi seçin. Koşulda artık bir "bilgi" simgesi gösterilir.

  4. Doğru ve Yanlış dallarında, her kapsam durumuna göre gerçekleştirmek istediğiniz eylemleri ekleyin; örneğin, bir e-posta veya ileti gönderin.

    Kapsam durumuna göre yapılması gereken eylemleri ekleme

  5. Mantıksal uygulamanızı kaydedin.

Tamamlanmış mantıksal uygulamanız şimdi şu örneğe benzer:

Kapsamı olan tamamlanmış mantıksal uygulama

Çalışmanızı test edin

Tasarımcı araç çubuğunda Çalıştır'ı> seçin. Tüm kapsamlı eylemler başarılı olursa, "Kapsam başarılı" iletisi alırsınız. Kapsamlı eylemlerden herhangi biri başarılı olmazsa" Kapsam başarısız oldu" iletisi alırsınız.

JSON tanımı

Kod görünümünde çalışıyorsanız, bunun yerine mantıksal uygulamanızın JSON tanımında bir kapsam yapısı tanımlayabilirsiniz. Örneğin, önceki mantıksal uygulamadaki tetikleyici ve eylemler için JSON tanımı aşağıda verilmiştir:

"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: @{action('Scope')}",
            "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: @{action('Scope')}",
              "Subject": "Scope succeeded",
              "To": "<your-email@domain.com>"
            },
            "host": {
              "connection": {
               "name": "@parameters('$connections')['outlook']['connectionId']"
              }
            },
            "method": "post",
            "path": "/Mail"
          },
          "runAfter": {}
        }
      }
    },
    "expression": {
      "or": [ 
         {
            "equals": [ 
              "@action('Scope')",
              "Failed"
            ]
         },
         {
            "equals": [
               "@action('Scope')",
               "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": {}
  }
},

Sonraki adımlar