Azure Logic Apps'te Satır içi Kod işlemleriyle iş akışlarında kod parçacıkları çalıştırma

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

Çok fazla kurulum yapmadan mantıksal uygulama iş akışınızda kod parçacığı oluşturmak ve çalıştırmak için Satır İçi Kod yerleşik bağlayıcısını kullanabilirsiniz. Bu bağlayıcı, iş akışınızın sonraki eylemlerinde bu çıkışı kullanabilmeniz için kod parçacığından sonucu döndüren bir eyleme sahiptir.

Şu anda bağlayıcının yalnızca tek bir eylemi vardır ve bu eylem aşağıdaki özniteliklere sahip bir kod parçacığı için en iyi sonucu verir, ancak geliştirme aşamasında olan daha fazla eylem vardır. Satır İçi Kod yerleşik bağlayıcısının da mantıksal uygulama iş akışınızın Tüketim veya Standart olmasına bağlı olarak farklı sınırları vardır.

Eylem Dil Dil sürümü Çalıştırma süresi Veri boyutu Diğer notlar
JavaScript Kodu Yürütme JavaScript Standart:
Node.js 16.x.x

Tüketim:
Node.js 8.11.1

Daha fazla bilgi için Standart yerleşik nesneler bölümünü gözden geçirin.
5 saniye veya daha az bir süre içinde biter. 50 MB'a kadar olan verileri işler. - Eylem tarafından desteklenmeyen Değişkenler eylemleriyle çalışmayı gerektirmez.

- JavaScript çalıştırma işlevini desteklemez require() .

Bu özniteliklere uymayan kodu çalıştırmak için bunun yerine Azure İşlevleri aracılığıyla bir işlev oluşturabilir ve çağırabilirsiniz.

Bu makalede, Office 365 Outlook tetikleyicisiyle başlayan örnek bir iş akışında eylemin nasıl çalıştığı gösterilmektedir. İş akışı, ilişkili Outlook e-posta hesabına yeni bir e-posta geldiğinde çalışır. Örnek kod parçacığı, e-posta gövdesinde bulunan tüm e-posta adreslerini ayıklar ve bu adresleri sonraki bir eylemde kullanabileceğiniz çıkış olarak döndürür.

Aşağıdaki diyagramda örnek iş akışındaki önemli noktalar gösterilmektedir:

Önkoşullar

JavaScript Kodu Yürüt eylemini ekleme

  1. Azure portal, Tüketim mantıksal uygulaması iş akışınızı tasarımcıda açın.

  2. Tasarımcıda, iş akışınıza JavaScript Kodu Yürüt adlı Satır içi Kod eylemini eklemek için bu genel adımları izleyin.

    Bu örnek, eylemi Office 365 Outlook tetikleyicisinin altına ekler. Eylem varsayılan olarak deyimi return de dahil olmak üzere bazı örnek kodlar içerir.

    Varsayılan örnek kodla JavaScript Kodu Yürüt eylemini gösteren ekran görüntüsü.

  3. Kod kutusuna örnek kodu silin ve kodunuzu girin. Bir yöntemin içine koyacağınız kodu, ancak yöntem imzası olmadan yazın.

    İpucu

    İmleciniz Kod kutusundayken dinamik içerik listesi görüntülenir. Bu listeyi daha sonra kullansanız da, listeyi yoksayabilir ve şimdilik açık bırakabilirsiniz. Gizle'yi seçmeyin.

    Tanınan bir anahtar sözcük yazmaya başlarsanız, kullanılabilir anahtar sözcükler arasından seçim yapabileceğiniz otomatik tamamlama listesi görüntülenir, örneğin:

    Tüketim iş akışını, JavaScript Kodunu Yürüt eylemini ve anahtar sözcük otomatik tamamlama listesini gösteren ekran görüntüsü.

    Aşağıdaki örnek kod parçacığı ilk olarak giriş metninde eşleşecek bir desen belirten normal ifadeyi depolayan myResult adlı bir değişken oluşturur. Kod daha sonra tetikleyici çıkışlarından e-posta iletisinin gövde içeriğini depolayan email adlı bir değişken oluşturur.

    Tüketim iş akışını, JavaScript Kodunu Yürüt eylemini ve değişken oluşturan örnek kodu gösteren ekran görüntüsü.

  4. İmleciniz hala Kod kutusundayken, açık dinamik içerik listesinde Yeni bir e-posta geldiğinde bölümünü bulun ve e-posta iletisinin gövdesine başvuran Gövde özelliğini seçin.

    Tüketim iş akışını, JavaScript Kodunu Yürüt eylemini, dinamik içerik listesini ve e-posta iletisinin

    Dinamik içerik listesi, tetikleyicinin çıkışlarını ve bu çıkışlar şu anda odakta olan düzenleme kutusunun giriş biçimiyle eşleştiğinde önceki eylemleri gösterir. Bu liste, bu çıkışların kullanımını ve iş akışınızdan başvurulmesini kolaylaştırır. Bu örnekte liste, e-posta iletisinin Body özelliği de dahil olmak üzere Outlook tetikleyicisinden gelen çıkışları gösterir.

    Body özelliğini seçtikten sonra, JavaScript Kodu Yürüt eylemi belirteci salt workflowContext okunur bir JSON nesnesine çözümler ve kod parçacığınız giriş olarak kullanabilir. nesnesi, workflowContext kodunuzun tetikleyiciden çıkışlara erişmesini sağlayan özellikleri ve e-posta iletisinin Body özelliğinden farklı olan tetikleyicinin body özelliği gibi iş akışınızdaki eylemlerden önce gelen özellikleri içerir. Nesne hakkında daha fazla bilgi için bu makalenin devamında workflowContextworkflowContext nesnesini kullanan başvuru tetikleyicisi ve eylem çıkışları bölümüne bakın.

    Önemli

    Kod parçacığınız nokta (.) işlecini içeren eylem adlarına başvurursa, bu başvuruların bu eylem adlarını köşeli ayraç ([]) ve tırnak işaretleri ("") içine almaları gerekir, örneğin:

    // Correct
    workflowContext.actions["my.action.name"].body

    // Incorrect
    workflowContext.actions.my.action.name.body

    Ayrıca , JavaScript Kodu Yürüt eyleminde Actions parametresini ve ardından bu eylem adlarını bu parametreye eklemeniz gerekir. Daha fazla bilgi için, bu makalenin devamında Yer alan JavaScript Kodunu Yürüt eylemine parametre olarak bağımlılık ekleme konusuna bakın.

  5. Tetikleyicinin body özelliğinden seçtiğiniz e-posta iletisinin Body özelliğini ayırt etmek için, bunun yerine ikinci body özelliği olarak Body yeniden adlandırın. Kod deyimini tamamlamak için sonuna noktalı virgül (;) ekleyin.

    Tüketim mantıksal uygulaması iş akışını, JavaScript Kodunu Yürüt eylemini ve

    JavaScript Kodunu Yürüt eylemi, deyim gerektirmezreturn. Ancak deyimini return ekleyerek, sonraki eylemlerde Sonuç belirtecini kullanarak eylem sonuçlarına daha sonra iş akışınızda daha kolay başvurabilirsiniz.

    Bu örnekte kod parçacığı, e-posta iletisi gövdesinde belirtilen normal ifadeyle eşleşmeleri bulan işlevini çağırarak match() sonucu döndürür. Html tablosu oluştur eylemi daha sonra Sonuç belirtecini kullanarak JavaScript Kodunu Yürüt eyleminin sonuçlarına başvurur ve tek bir sonuç oluşturur.

    Tamamlanmış Tüketim mantıksal uygulaması iş akışını gösteren ekran görüntüsü.

  6. İşiniz bittiğinde iş akışınızı kaydedin.

workflowContext nesnesini kullanarak başvuru tetikleyicisi ve eylem çıkışları

Tasarımcıdaki kod parçacığınızın içinden dinamik içerik listesini kullanarak tetikleyicinin veya önceki herhangi bir eylemin çıkışına başvuran bir belirteç seçebilirsiniz. Belirteci seçtiğinizde , JavaScript Kodu Yürüt eylemi bu belirteci salt workflowContext okunur bir JSON nesnesine çözümler. Bu nesne, kodunuza tetikleyiciden, önceki eylemlerden ve iş akışından gelen çıkışlara erişim verir. nesnesi aşağıdaki yapıyı kullanır ve aynı zamanda nesne olan , triggerve workflow özelliklerini içeriractions:

{
   "workflowContext": {
      "actions": {
         "<action-name-1>": @actions('<action-name-1>'),
         "<action-name-2>": @actions('<action-name-2>')
      },
      "trigger": {
         @trigger()
      },
      "workflow": {
         @workflow()
      }
   }
}

Aşağıdaki tabloda bu özellikler hakkında daha fazla bilgi yer alır:

Özellik Tür Açıklama
actions Nesne koleksiyonu Kod parçacığınız çalışmadan önce çalışan önceki eylemlerden elde edilen sonuç nesneleri. Her nesnenin anahtar-değer çifti vardır ve burada anahtar eylem adıdır ve değer ifadesiyle actions() işlevini çağırma sonucuna @actions('<action-name>') eşdeğerdir.

Eylemin adı, temel alınan iş akışı tanımında görünen eylem adını kullanır ve bu ad eylem adındaki boşlukları (" ") alt çizgilerle (_) değiştirir. Bu nesne koleksiyonu, geçerli iş akışı örneği çalıştırmasından eylemin özellik değerlerine erişim sağlar.
trigger Nesne Sonucun trigger() işlevini çağırmaya eşdeğer olduğu tetikleyicideki sonuç nesnesi. Bu nesne geçerli iş akışı örneği çalıştırmasından tetikleyicinin özellik değerlerine erişim sağlar.
workflow Nesne workflow() işlevini çağırmaya eşdeğer olan iş akışı nesnesi. Bu nesne, geçerli iş akışı örneği çalıştırmasından iş akışı adı, çalıştırma kimliği vb. gibi özellik değerlerine erişim sağlar.

Bu makalenin örneğinde workflowContext , JSON nesnesi Outlook tetikleyicisinden aşağıdaki örnek özelliklere ve değerlere sahip olabilir:

{
   "workflowContext": {
      "trigger": {
         "name": "When_a_new_email_arrives",
         "inputs": {
            "host": {
               "connection": {
                  "name": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Web/connections/office365"
               }
            },
            "method": "get",
            "path": "/Mail/OnNewEmail",
            "queries": {
               "includeAttachments": "False"
            }
         },
         "outputs": {
            "headers": {
               "Pragma": "no-cache",
               "Content-Type": "application/json; charset=utf-8",
               "Expires": "-1",
               "Content-Length": "962095"
            },
            "body": {
               "Id": "AAMkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgBGAAAAAABmZwxUQtCGTqSPpjjMQeD",
               "DateTimeReceived": "2019-03-28T19:42:16+00:00",
               "HasAttachment": false,
               "Subject": "Hello World",
               "BodyPreview": "Hello World",
               "Importance": 1,
               "ConversationId": "AAQkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgAQ",
               "IsRead": false,
               "IsHtml": true,
               "Body": "Hello World",
               "From": "<sender>@<domain>.com",
               "To": "<recipient-2>@<domain>.com;<recipient-2>@<domain>.com",
               "Cc": null,
               "Bcc": null,
               "Attachments": []
            }
         },
         "startTime": "2019-05-03T14:30:45.971564Z",
         "endTime": "2019-05-03T14:30:50.1746874Z",
         "scheduledTime": "2019-05-03T14:30:45.8778117Z",
         "trackingId": "1cd5ffbd-f989-4df5-a96a-6e9ce31d03c5",
         "clientTrackingId": "08586447130394969981639729333CU06",
         "originHistoryName": "08586447130394969981639729333CU06",
         "code": "OK",
         "status": "Succeeded"
      },
      "workflow": {
         "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>",
         "name": "<logic-app-workflow-name>",
         "type": "Microsoft.Logic/workflows",
         "location": "<Azure-region>",
         "run": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>/runs/08586453954668694173655267965CU00",
            "name": "08586453954668694173655267965CU00",
            "type": "Microsoft.Logic/workflows/runs"
         }
      }
   }
}

JavaScript Kodu Yürüt eylemine parametre olarak bağımlılık ekleme

Bazı senaryolarda , JavaScript Kodu Yürüt eyleminin tetikleyicinin çıkışlarını veya kodunuzun bağımlılık olarak başvurduğunu eylemleri içermesini açıkça zorunlu tutabilirsiniz. Örneğin, kodunuz iş akışı çalışma zamanında bulunmayan çıkışlara başvurduğunda bu ek adımı gerçekleştirmeniz gerekir. İş akışı oluşturma sırasında Azure Logic Apps altyapısı kod parçacığını analiz eder ve kodun herhangi bir tetikleyiciye veya eylem çıkışına başvurup başvurmadığını belirler. Bu başvurular varsa, altyapı bu çıkışları otomatik olarak içerir. İş akışı çalışma zamanında, başvurulan tetikleyici veya eylem çıkışı nesnede workflowContext bulunamazsa, altyapı bir hata oluşturur. Bu hatayı çözmek için bu tetikleyiciyi veya eylemi JavaScript Kodu Yürüt eylemi için açık bir bağımlılık olarak eklemeniz gerekir. Bu adımı atmayı gerektiren bir diğer senaryo da nesnenin workflowContext nokta işlecini (.) kullanan bir tetikleyiciye veya eylem adına başvurmasıdır.

Bağımlılık olarak bir tetikleyici veya eylem eklemek için JavaScript Kodu Yürüt eylemine uygulanabilir olan Tetikleyici veya Eylemler parametrelerini eklersiniz. Ardından tetikleyici veya eylem adlarını iş akışınızın temel JSON tanımında göründükleri şekilde eklersiniz.

Not

Değişken işlemlerini, For each veya Until gibi döngüleri ve yineleme dizinlerini açık bağımlılıklar olarak ekleyemezsiniz.

Kodunuzu yeniden kullanmayı planlıyorsanız tetikleyici ve eylem çıkışlarına başvurmak için her zaman kod parçacığı düzenleme kutusunu kullandığınızdan emin olun. Bu şekilde kodunuz yalnızca tetikleyiciyi veya eylem çıkışlarını açık bağımlılıklar olarak eklemek yerine çözümlenen belirteç başvurularını içerir.

Örneğin, Office 365 Outlook bağlayıcısının Onay e-postası gönder eyleminin örnek iş akışındaki kod parçacığından önce olduğunu varsayalım. Aşağıdaki örnek kod parçacığı, bu eylemden SelectedOption çıkışına bir başvuru içerir.

Bu örnekte, yalnızca Actions parametresini ve ardından eylemin JSON adını Send_approval_emailparametresine eklemeniz gerekir. Bu şekilde , JavaScript Kodu Yürüt eyleminin Onay e-postası gönder eyleminin çıkışını açıkça içerdiğini belirtirsiniz.

Tetikleyicinin veya eylemin JSON adını bulma

Başlamadan önce, temel alınan iş akışı tanımında tetikleyici veya eylem için JSON adına ihtiyacınız vardır.

  • İş akışı tanımınızdaki adlar boşluk değil alt çizgi (_) kullanır.

  • Bir eylem adı nokta işlecini (.) kullanıyorsa, bu işleci ekleyin, örneğin:

    My.Action.Name

  1. İş akışı tasarımcısı araç çubuğunda Kod görünümü'nü seçin. nesnesinde actions eylemin adını bulun.

    Örneğin, Send_approval_emailOnay e-postası gönder eyleminin JSON adıdır.

    JSON'da eylem adını gösteren ekran görüntüsü.

  2. Tasarımcı görünümüne dönmek için kod görünümü araç çubuğunda Tasarım Aracı'i seçin.

  3. Şimdi JSON adını JavaScript Kodu Yürüt eylemine ekleyin.

JavaScript Kodu Yürüt eylemine tetikleyici veya eylem adını ekleme

  1. JavaScript Kodu Yürüt eyleminde Yeni parametre ekle listesini açın.

  2. Parametreler listesinden senaryonuzun gerektirdiği şekilde aşağıdaki parametreleri seçin.

    Parametre Açıklama
    Eylemler Önceki eylemlerden gelen çıkışları bağımlılık olarak ekleyin. Bu parametreyi seçtiğinizde, eklemek istediğiniz eylemler istenir.
    Tetikleyici Tetikleyicinin çıkışlarını bağımlılık olarak ekleyin. Bu parametreyi seçtiğinizde tetikleyici sonuçlarının dahil edilip edilmeyeceği sorulur. Bu nedenle Tetikleyici listesinde Evet'i seçin.
  3. Bu örnekte Eylemler parametresini seçin.

    Actions parametresinin seçili olduğu JavaScript Kodu Yürüt eylemini gösteren ekran görüntüsü.

  4. Eylemler Öğesi - 1 kutusuna eylemin JSON adını girin.

    Eylemler Öğesi -1 kutusunu ve eylemin JSON adını gösteren ekran görüntüsü.

  5. Başka bir eylem adı eklemek için Yeni öğe ekle'yi seçin.

  6. İşiniz bittiğinde iş akışınızı kaydedin.

Eylem başvurusu

İş Akışı Tanımı Dili'ni kullanarak temel alınan iş akışı tanımınızda JavaScript Kodu Yürüt eyleminin yapısı ve söz dizimi hakkında daha fazla bilgi için bu eylemin başvuru bölümüne bakın.

Sonraki adımlar