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
Bir Azure hesabı ve aboneliği Aboneliğiniz yoksa, ücretsiz bir Azure hesabı için kaydolun.
Kod parçacığınızı eklemek istediğiniz mantıksal uygulama iş akışı. İş akışının zaten bir tetikleyiciyle başlaması gerekir.
Bu makalenin örneği, Yeni bir e-posta geldiğinde adlı Office 365 Outlook tetikleyicisini kullanır.
İş akışınız yoksa aşağıdaki belgelere bakın:
Mantıksal uygulamanızın Tüketim mi yoksa Standart mı olduğuna bağlı olarak aşağıdaki gereksinimleri gözden geçirin:
Tüketim: Mantıksal uygulama kaynağınızdan Node.js sürüm 8.11.10 ve boş veya başka bir şekilde tümleştirme hesabına bağlantı gerektirir.
Önemli
Kullanım örneğine veya senaryonuza uygun bir tümleştirme hesabı kullandığınızdan emin olun.
Örneğin, Serbest katmanlı tümleştirme hesapları yalnızca keşif senaryoları ve iş yükleri için tasarlanmıştır, üretim senaryoları için değildir, kullanım ve aktarım hızı açısından sınırlıdır ve hizmet düzeyi sözleşmesi (SLA) tarafından desteklenmez.
Diğer tümleştirme hesabı katmanları maliyete neden olur, ancak SLA desteği içerir, daha fazla aktarım hızı sunar ve daha yüksek sınırlara sahiptir. Tümleştirme hesabı katmanları, sınırları ve fiyatlandırması hakkında daha fazla bilgi edinin.
Standart: Node.js sürüm 16.x.x gerektirir, ancak tümleştirme hesabı yoktur.
JavaScript Kodu Yürüt eylemini ekleme
Azure portal, Tüketim mantıksal uygulaması iş akışınızı tasarımcıda açın.
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.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:
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.
İ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.
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 tetikleyicininbody
özelliği gibi iş akışınızdaki eylemlerden önce gelen özellikleri içerir. Nesne hakkında daha fazla bilgi için bu makalenin devamındaworkflowContext
workflowContext 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.
Tetikleyicinin
body
özelliğinden seçtiğiniz e-posta iletisinin Body özelliğini ayırt etmek için, bunun yerine ikincibody
özelliği olarakBody
yeniden adlandırın. Kod deyimini tamamlamak için sonuna noktalı virgül (;) ekleyin.JavaScript Kodunu Yürüt eylemi, deyim gerektirmez
return
. Ancak deyiminireturn
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.İş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 , trigger
ve 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_email
parametresine 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
İş 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_email
Onay e-postası gönder eyleminin JSON adıdır.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.
Şimdi JSON adını JavaScript Kodu Yürüt eylemine ekleyin.
JavaScript Kodu Yürüt eylemine tetikleyici veya eylem adını ekleme
JavaScript Kodu Yürüt eyleminde Yeni parametre ekle listesini açın.
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. Bu örnekte Eylemler parametresini seçin.
Eylemler Öğesi - 1 kutusuna eylemin JSON adını girin.
Başka bir eylem adı eklemek için Yeni öğe ekle'yi seçin.
İş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.