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.
Bu başvuru, mantıksal uygulamanızın temel iş akışı tanımında tetikleyicileri ve eylemleri tanımlamak için kullanılan genel türleri açıklar. Bu türler İş Akışı Tanım Dili tarafından açıklanıp doğrulanır. Mantıksal uygulamalarınızda kullanabileceğiniz belirli bağlayıcı tetikleyicilerini ve eylemlerini bulmak için Bağlayıcılara genel bakış altındaki listeye bakın.
Tetikleyicilere genel bakış
Her iş akışı, iş akışının örneğini oluşturan ve başlatan çağrıları tanımlayan bir tetikleyici içerir. Genel tetikleyici kategorileri şunlardır:
Bir hizmetin uç noktasını düzenli aralıklarla denetleyen yoklama tetikleyicisi
Bir uç noktaya abonelik oluşturan ve uç noktanın belirtilen olay gerçekleştiğinde veya veriler kullanılabilir olduğunda tetikleyiciyi uyarabilmesi için bir geri çağırma URL'si sağlayan bir anında iletme tetikleyicisi. Tetikleyici daha sonra tetiklemeden önce uç noktanın yanıtını bekler.
Tetikleyiciler şu üst düzey öğelere sahiptir, ancak bazıları isteğe bağlıdır:
"<trigger-name>": {
"type": "<trigger-type>",
"inputs": { "<trigger-inputs>" },
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>
},
"conditions": [ "<array-with-conditions>" ],
"runtimeConfiguration": { "<runtime-config-options>" },
"splitOn": "<splitOn-expression>",
"operationOptions": "<operation-option>"
},
Required
| Value | Type | Description |
|---|---|---|
| < tetikleyici-adı> | String | Tetikleyicinin adı |
| < tetikleyici türü> | String | "Http" veya "ApiConnection" gibi tetikleyici türü |
| < tetikleyici girişleri> | JSON Nesnesi | Tetikleyicinin davranışını tanımlayan girişler |
| < zaman birimi> | String | Tetikleyicinin ne sıklıkta tetiklendiğini açıklayan zaman birimi: "second", "Minute", "Hour", "Day", "Week", "Month" |
| < zaman birimi sayısı> | Integer | Tetikleyicinin sıklık temelinde ne sıklıkta tetiklendiğini belirten bir değerdir. Bu, tetikleyici yeniden tetiklenene kadar bekleyebileceğiniz zaman birimi sayısıdır Minimum ve maksimum aralıklar şunlardır: - Ay: 1-16 ay - Gün: 1-500 gün - Saat: 1-12.000 saat - Dakika: 1-72.000 dakika - Saniye: 1-9.999.999 saniye Örneğin, aralık 6 ve sıklık "Ay" ise, yinelenme 6 ayda bir olur. |
Optional
| Value | Type | Description |
|---|---|---|
| < koşullarla dizi> | Array | İş akışının çalıştırılıp çalıştırılmayacağını belirleyen bir veya daha fazla koşul içeren bir dizi. Yalnızca tetikleyiciler için kullanılabilir. |
| < runtime-config-options> | JSON Nesnesi | Özellikleri ayarlayarak runtimeConfiguration tetikleyici çalışma zamanı davranışını değiştirebilirsiniz. Daha fazla bilgi için bkz . Çalışma zamanı yapılandırma ayarları. |
| < splitOn-expression> | String | Dizi döndüren tetikleyiciler için, dizi öğelerini işlenmek üzere birden çok iş akışı örneğine bölen veya ayıran bir ifade belirtebilirsiniz. |
| < operation-option> | String | Özelliğini ayarlayarak operationOptions varsayılan davranışı değiştirebilirsiniz. Daha fazla bilgi için bkz . İşlem seçenekleri. |
Tetikleyici türleri listesi
Her tetikleyici türünün farklı bir arabirimi ve tetikleyicinin davranışını tanımlayan girişler vardır.
Yerleşik tetikleyiciler
| Tetikleyici türü | Description |
|---|---|
| HTTP | Herhangi bir uç noktayı denetler veya yoklar . Bu uç nokta, zaman uyumsuz bir desen kullanarak veya dizi döndürerek belirli bir 202 tetikleyici sözleşmesine uygun olmalıdır. |
| HTTPWebhook | Mantıksal uygulamanız için çağrılabilen bir uç nokta oluşturur, ancak belirtilen URL'yi çağırarak kaydetme veya kaydını kaldırma. |
| Recurrence | Tanımlanan bir zamanlamaya göre tetikler. Bu tetikleyiciyi tetikleme için gelecekteki bir tarih ve saat ayarlayabilirsiniz. Sıklık temelinde, iş akışınızı çalıştırmak için saatleri ve günleri de belirtebilirsiniz. |
| Request | Mantıksal uygulamanız için çağrılabilen bir uç nokta oluşturur ve "el ile" tetikleyici olarak da bilinir. Örneğin bkz . HTTP uç noktalarıyla iş akışlarını çağırma, tetikleme veya iç içe yerleştirme. |
Yönetilen API tetikleyicileri
| Tetikleyici türü | Description |
|---|---|
| ApiConnection | Microsoft tarafından yönetilen API'leri veya "bağlayıcıları" kullanarak uç noktayı denetler veya yoklar. |
| ApiConnectionWebhook | Abone olmak ve aboneliği kaldırmak için Microsoft tarafından yönetilen API'leri veya "bağlayıcıları" çağırarak mantıksal uygulama iş akışınız için çağrılabilen bir uç nokta oluşturur. |
Tetikleyiciler - Ayrıntılı başvuru
APIConnection tetikleyicisi
Bu tetikleyici, Microsoft tarafından yönetilen API'leri veya "bağlayıcıları" kullanarak bir uç noktayı denetler veya yoklar, böylece bu tetikleyicinin parametreleri uç noktaya göre farklılık gösterebilir. Bu tetikleyici tanımındaki birçok bölüm isteğe bağlıdır. Tetikleyicinin davranışı, bölümlerin dahil edilip edilmediğine bağlıdır.
"<APIConnection_trigger_name>": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['<connection-name>']['connectionId']"
}
},
"method": "<method-type>",
"path": "/<api-operation>",
"retryPolicy": { "<retry-behavior>" },
"queries": { "<query-parameters>" }
},
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>
},
"runtimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"splitOn": "<splitOn-expression>",
"operationOptions": "<operation-option>"
}
Required
| Property | Value | Type | Description |
|---|---|---|---|
| None | < APIConnection_trigger_name> | String | Tetikleyicinin adı |
| host.connection.name | < bağlantı adı> | String | İş akışının kullandığı yönetilen API bağlantısının adı |
| method | < yöntem türü> | String | Yönetilen API ile iletişim kurmak için HTTP yöntemi: GET, PUT, POST, PATCH, DELETE |
| path | < api-operation> | String | Çağrılacak API işlemi |
| recurrence.frequency | < zaman birimi> | String | Tetikleyicinin ne sıklıkta tetiklendiğini açıklayan zaman birimi: second, Minute, Hour, Day, Week, Month |
| recurrence.interval | < zaman birimi sayısı> | Integer | Tetikleyicinin sıklık temelinde ne sıklıkta tetiklendiğini belirten bir değerdir. Bu, tetikleyici yeniden tetiklenene kadar bekleyebileceğiniz zaman birimi sayısıdır Minimum ve maksimum aralıklar şunlardır: - Ay: 1-16 ay - Gün: 1-500 gün - Saat: 1-12.000 saat - Dakika: 1-72.000 dakika - Saniye: 1-9.999.999 saniye Örneğin, aralık 6 ve sıklık Ay ise, yinelenme 6 ayda bir olur. |
Optional
| Property | Value | Type | Description |
|---|---|---|---|
| retryPolicy | < yeniden deneme davranışı> | JSON Nesnesi | 408, 429 ve 5XX durum koduna ve tüm bağlantı özel durumlarına sahip aralıklı hatalar için yeniden deneme davranışını özelleştirir. Daha fazla bilgi için bkz . İlkeleri yeniden deneme. |
| queries | < sorgu parametreleri> | JSON Nesnesi | API çağrısına eklenecek tüm sorgu parametreleri. Örneğin, "queries": { "api-version": "2018-01-01" } nesnesi çağrısına ekler ?api-version=2018-01-01 . |
| runtimeConfiguration.concurrency.runs | < maksimum çalıştırmalar> | Integer | Varsayılan olarak, iş akışı örnekleri varsayılan sınıra kadar aynı anda (eşzamanlı veya paralel) çalışır. Yeni < bir sayı> değeri ayarlayarak bu sınırı değiştirmek için bkz. Tetikleyici eşzamanlılığını değiştirme. |
| runtimeConfiguration.maximumWaitingRuns | < max-runs-queue> | Integer | İş akışınız zaten en fazla örnek sayısını çalıştırıyorsa, yeni çalıştırmalar varsayılan sınıra kadar bu kuyruğa eklenir. Varsayılan sınırı değiştirmek için bkz . Bekleyen çalıştırma sınırını değiştirme. Örnek sayısı üst sınırını değiştirmek için runtimeConfiguration.concurrency.runs özelliği için bir değer belirtin. Not: |
| splitOn | < splitOn-expression> | String | Dizi döndüren tetikleyiciler için, bu ifade kullanılacak diziye başvurur, böylece her dizi öğesi için "her bir" döngüsü yerine bir iş akışı örneği oluşturup çalıştırabilirsiniz. Örneğin, bu ifade tetikleyicinin gövde içeriği içinde döndürülen dizideki bir öğeyi temsil eder: @triggerbody()?['value'] |
| operationOptions | < operation-option> | String | Özelliğini ayarlayarak operationOptions varsayılan davranışı değiştirebilirsiniz. Daha fazla bilgi için bkz . İşlem seçenekleri. |
Outputs
| Element | Type | Description |
|---|---|---|
| headers | JSON Nesnesi | Yanıttan alınan üst bilgiler |
| body | JSON Nesnesi | Yanıttan alınan gövde |
| durum kodu | Integer | Yanıttan gelen durum kodu |
Example
Bu tetikleyici tanımı, bir iş veya okul hesabı için gelen kutusunun içinde her gün e-posta olup olduğunu denetler:
"When_a_new_email_arrives": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "get",
"path": "/Mail/OnNewEmail",
"queries": {
"fetchOnlyWithAttachment": false,
"folderPath": "Inbox",
"importance": "Any",
"includeAttachments": false
}
},
"recurrence": {
"frequency": "Day",
"interval": 1
}
}
ApiConnectionWebhook tetikleyicisi
Bu tetikleyici Microsoft tarafından yönetilen bir API kullanarak uç noktaya abonelik isteği gönderir, uç noktanın yanıt gönderebileceği bir geri çağırma URL'si sağlar ve uç noktanın yanıt vermesini bekler. Daha fazla bilgi için bkz . Uç nokta abonelikleri.
"<ApiConnectionWebhook_trigger_name>": {
"type": "ApiConnectionWebhook",
"inputs": {
"body": {
"NotificationUrl": "@{listCallbackUrl()}"
},
"host": {
"connection": {
"name": "@parameters('$connections')['<connection-name>']['connectionId']"
}
},
"retryPolicy": { "<retry-behavior>" },
"queries": "<query-parameters>"
},
"runTimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-run-queue>
}
},
"splitOn": "<splitOn-expression>",
"operationOptions": "<operation-option>"
}
Required
| Value | Type | Description |
|---|---|---|
| < bağlantı adı> | String | İş akışının kullandığı yönetilen API bağlantısının adı |
| < gövde içeriği> | JSON Nesnesi | Yönetilen API'ye yük olarak gönderilecek tüm ileti içeriği |
Optional
| Value | Type | Description |
|---|---|---|
| < yeniden deneme davranışı> | JSON Nesnesi | 408, 429 ve 5XX durum koduna ve tüm bağlantı özel durumlarına sahip aralıklı hatalar için yeniden deneme davranışını özelleştirir. Daha fazla bilgi için bkz . İlkeleri yeniden deneme. |
| < sorgu parametreleri> | JSON Nesnesi | API çağrısına eklenecek tüm sorgu parametreleri Örneğin, "queries": { "api-version": "2018-01-01" } nesnesi çağrısına ekler ?api-version=2018-01-01 . |
| < maksimum çalıştırmalar> | Integer | Varsayılan olarak, iş akışı örnekleri varsayılan sınıra kadar aynı anda (eşzamanlı veya paralel) çalışır. Yeni < bir sayı> değeri ayarlayarak bu sınırı değiştirmek için bkz. Tetikleyici eşzamanlılığını değiştirme. |
| < max-runs-queue> | Integer | İş akışınız zaten özellik temelinde runtimeConfiguration.concurrency.runs değiştirebileceğiniz en fazla örnek sayısını çalıştırıyorsa, yeni çalıştırmalar varsayılan sınıra kadar bu kuyruğa alınır. Varsayılan sınırı değiştirmek için bkz . Bekleyen çalıştırma sınırını değiştirme. |
| < splitOn-expression> | String | Dizi döndüren tetikleyiciler için, bu ifade kullanılacak diziye başvurur, böylece her dizi öğesi için "her bir" döngüsü yerine bir iş akışı örneği oluşturup çalıştırabilirsiniz. Örneğin, bu ifade tetikleyicinin gövde içeriği içinde döndürülen dizideki bir öğeyi temsil eder: @triggerbody()?['value'] |
| < operation-option> | String | Özelliğini ayarlayarak operationOptions varsayılan davranışı değiştirebilirsiniz. Daha fazla bilgi için bkz . İşlem seçenekleri. |
Example
Bu tetikleyici tanımı Office 365 Outlook API'sine abonedir, API uç noktasına bir geri çağırma URL'si sağlar ve yeni bir e-posta geldiğinde uç noktanın yanıt vermesini bekler.
"When_a_new_email_arrives_(webhook)": {
"type": "ApiConnectionWebhook",
"inputs": {
"body": {
"NotificationUrl": "@{listCallbackUrl()}"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"path": "/MailSubscription/$subscriptions",
"queries": {
"folderPath": "Inbox",
"hasAttachment": "Any",
"importance": "Any"
}
},
"splitOn": "@triggerBody()?['value']"
}
HTTP tetikleyicisi
Bu tetikleyici, belirtilen yineleme zamanlamasına göre belirtilen HTTP veya HTTPS uç noktasına bir istek gönderir. Ardından tetikleyici, iş akışının çalışıp çalışmadığını belirlemek için yanıtı denetler. Daha fazla bilgi için bkz . Azure Logic Apps'ten HTTP veya HTTPS üzerinden hizmet uç noktalarını çağırma.
"HTTP": {
"type": "Http",
"inputs": {
"method": "<method-type>",
"uri": "<HTTP-or-HTTPS-endpoint-URL>",
"headers": { "<header-content>" },
"queries": "<query-parameters>",
"body": "<body-content>",
"authentication": { "<authentication-type-and-property-values>" },
"retryPolicy": {
"type": "<retry-behavior>"
}
},
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>
},
"runtimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"operationOptions": "<operation-option>"
}
Required
| Property | Value | Type | Description |
|---|---|---|---|
method |
< yöntem türü> | String | Giden isteği göndermek için kullanılacak yöntem: "GET", "PUT", "POST", "PATCH" veya "DELETE" |
uri |
< HTTP-veya-HTTPS-endpoint-URL> | String | Giden isteği göndermek istediğiniz HTTP veya HTTPS uç nokta URL'si. En büyük dize boyutu: 2 KB Bir Azure hizmeti veya kaynağı için bu URI söz dizimi kaynak kimliğini ve erişmek istediğiniz kaynağın yolunu içerir. |
frequency |
< zaman birimi> | String | Tetikleyicinin ne sıklıkta tetiklendiğini açıklayan zaman birimi: "second", "Minute", "Hour", "Day", "Week", "Month" |
interval |
< zaman birimi sayısı> | Integer | Tetikleyicinin sıklık temelinde ne sıklıkta tetiklendiğini belirten bir değerdir. Bu, tetikleyici yeniden tetiklenene kadar bekleyebileceğiniz zaman birimi sayısıdır Minimum ve maksimum aralıklar şunlardır: - Ay: 1-16 ay - Gün: 1-500 gün - Saat: 1-12.000 saat - Dakika: 1-72.000 dakika - Saniye: 1-9.999.999 saniye Örneğin, aralık 6 ve sıklık "Ay" ise, yinelenme 6 ayda bir olur. |
Optional
| Property | Value | Type | Description |
|---|---|---|---|
headers |
< üst bilgi içeriği> | JSON Nesnesi | İstekle birlikte eklemeniz gereken tüm üst bilgiler Örneğin, dili ayarlamak ve yazmak için: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
queries |
< sorgu parametreleri> | JSON Nesnesi | İstekte kullanmanız gereken tüm sorgu parametreleri Örneğin, "queries": { "api-version": "2018-01-01" } nesnesi isteğe ekler ?api-version=2018-01-01 . |
body |
< gövde içeriği> | JSON Nesnesi | İstekle yük olarak gönderilecek ileti içeriği |
authentication |
< kimlik doğrulama türü ve özellik-değerleri> | JSON Nesnesi | İsteğin giden isteklerin kimliğini doğrulamak için kullandığı kimlik doğrulama modeli. Daha fazla bilgi için bkz . Giden çağrılara kimlik doğrulaması ekleme. Scheduler'ın authority ötesinde özelliği desteklenir. Belirtilmediğinde varsayılan değer olur https://management.azure.com/, ancak farklı bir değer kullanabilirsiniz. |
retryPolicy > type |
< yeniden deneme davranışı> | JSON Nesnesi | 408, 429 ve 5XX durum koduna ve tüm bağlantı özel durumlarına sahip aralıklı hatalar için yeniden deneme davranışını özelleştirir. Daha fazla bilgi için bkz . İlkeleri yeniden deneme. |
runs |
< maksimum çalıştırmalar> | Integer | Varsayılan olarak, iş akışı örnekleri varsayılan sınıra kadar aynı anda (eşzamanlı veya paralel) çalışır. Yeni < bir sayı> değeri ayarlayarak bu sınırı değiştirmek için bkz. Tetikleyici eşzamanlılığını değiştirme. |
maximumWaitingRuns |
< max-runs-queue> | Integer | İş akışınız zaten özellik temelinde runtimeConfiguration.concurrency.runs değiştirebileceğiniz en fazla örnek sayısını çalıştırıyorsa, yeni çalıştırmalar varsayılan sınıra kadar bu kuyruğa alınır. Varsayılan sınırı değiştirmek için bkz . Bekleyen çalıştırma sınırını değiştirme. |
operationOptions |
< operation-option> | String | Özelliğini ayarlayarak operationOptions varsayılan davranışı değiştirebilirsiniz. Daha fazla bilgi için bkz . İşlem seçenekleri. |
Outputs
| Element | Type | Description |
|---|---|---|
headers |
JSON Nesnesi | Yanıttan alınan üst bilgiler |
body |
JSON Nesnesi | Yanıttan alınan gövde |
status code |
Integer | Yanıttan gelen durum kodu |
Gelen istekler için gereksinimler
Mantıksal uygulamanızla iyi çalışabilmek için uç noktanın belirli bir tetikleyici desenine veya sözleşmesine uyması ve şu yanıt özelliklerini tanıması gerekir:
| Property | Required | Description |
|---|---|---|
| Durum kodu | Yes | "200 Tamam" durum kodu bir çalıştırma başlatır. Diğer durum kodları çalıştırma başlatmaz. |
| Üst bilgiden sonra yeniden deneme | No | Mantıksal uygulamanızın uç noktayı yeniden yoklamasına kadar olan saniye sayısı |
| Konum üst bilgisi | No | Sonraki yoklama aralığında çağrılacak URL. Belirtilmezse, özgün URL kullanılır. |
Farklı istekler için örnek davranışlar
| Durum kodu | Sonra yeniden deneyin | Behavior |
|---|---|---|
| 200 | {none} | İş akışını çalıştırın, ardından tanımlanan yinelenmeden sonra daha fazla veri olup olmadığını yeniden denetleyin. |
| 200 | 10 saniye | İş akışını çalıştırın ve 10 saniye sonra daha fazla veri olup olmadığını yeniden denetleyin. |
| 202 | 60 saniye | İş akışını tetiklemeyin. Bir sonraki deneme, tanımlanan yinelenme durumuna bağlı olarak bir dakika içinde gerçekleşir. Tanımlanan yinelenme bir dakikadan azsa, yeniden deneme sonrası üst bilgisi önceliklidir. Aksi takdirde tanımlı yinelenme kullanılır. |
| 400 | {none} | Hatalı istek, iş akışını çalıştırma. Tanımlanmamışsa retryPolicy , varsayılan ilke kullanılır. Yeniden deneme sayısına ulaşıldıktan sonra tetikleyici, tanımlanan yinelenmeden sonra verileri yeniden denetler. |
| 500 | {none} | Sunucu hatası, iş akışını çalıştırma. Tanımlanmamışsa retryPolicy , varsayılan ilke kullanılır. Yeniden deneme sayısına ulaşıldıktan sonra tetikleyici, tanımlanan yinelenmeden sonra verileri yeniden denetler. |
HTTPWebhook tetikleyicisi
Bu tetikleyici, belirtilen uç nokta URL'sini çağırarak aboneliği kaydedebilen bir uç nokta oluşturarak mantıksal uygulamanızı çağırılabilir hale getirir. İş akışınızda bu tetikleyiciyi oluşturduğunuzda, giden bir istek aboneliği kaydetmek için çağrı yapar. Bu şekilde tetikleyici olayları dinlemeye başlayabilir. Bir işlem bu tetikleyiciyi geçersiz hale getirdiğinde, giden istek otomatik olarak aboneliği iptal etmek için çağrı yapar. Daha fazla bilgi için bkz . Uç nokta abonelikleri.
HttpWebhook tetikleyicisinde zaman uyumsuz sınırlar da belirtebilirsiniz. Tetikleyicinin davranışı, kullandığınız veya atladığınız bölümlere bağlıdır.
"HTTP_Webhook": {
"type": "HttpWebhook",
"inputs": {
"subscribe": {
"method": "<method-type>",
"uri": "<endpoint-subscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" },
"retryPolicy": { "<retry-behavior>" }
},
"unsubscribe": {
"method": "<method-type>",
"url": "<endpoint-unsubscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" }
}
},
"runTimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"operationOptions": "<operation-option>"
}
<
gibi > bazı değerler hem hem "subscribe" de "unsubscribe" nesneleri için kullanılabilir.
Required
| Value | Type | Description |
|---|---|---|
| < yöntem türü> | String | Abonelik isteği için kullanılacak HTTP yöntemi: "GET", "PUT", "POST", "PATCH" veya "DELETE" |
| < endpoint-subscribe-URL> | String | Abonelik isteğinin gönderileceği uç nokta URL'si |
Optional
| Value | Type | Description |
|---|---|---|
| < yöntem türü> | String | İptal isteği için kullanılacak HTTP yöntemi: "GET", "PUT", "POST", "PATCH" veya "DELETE" |
| < endpoint-unsubscribe-URL> | String | İptal isteğinin gönderileceği uç nokta URL'si |
| < gövde içeriği> | String | Abonelikte veya iptal isteğinde gönderilecek tüm ileti içeriği |
| < kimlik doğrulama türü> | JSON Nesnesi | İsteğin giden isteklerin kimliğini doğrulamak için kullandığı kimlik doğrulama modeli. Daha fazla bilgi için bkz . Giden çağrılara kimlik doğrulaması ekleme. |
| < yeniden deneme davranışı> | JSON Nesnesi | 408, 429 ve 5XX durum koduna ve tüm bağlantı özel durumlarına sahip aralıklı hatalar için yeniden deneme davranışını özelleştirir. Daha fazla bilgi için bkz . İlkeleri yeniden deneme. |
| < maksimum çalıştırmalar> | Integer | Varsayılan olarak, iş akışı örneklerinin tümü varsayılan sınıra kadar aynı anda (eşzamanlı veya paralel) çalışır. Yeni < bir sayı> değeri ayarlayarak bu sınırı değiştirmek için bkz. Tetikleyici eşzamanlılığını değiştirme. |
| < max-runs-queue> | Integer | İş akışınız zaten özellik temelinde runtimeConfiguration.concurrency.runs değiştirebileceğiniz en fazla örnek sayısını çalıştırıyorsa, yeni çalıştırmalar varsayılan sınıra kadar bu kuyruğa alınır. Varsayılan sınırı değiştirmek için bkz . Bekleyen çalıştırma sınırını değiştirme. |
| < operation-option> | String | Özelliğini ayarlayarak operationOptions varsayılan davranışı değiştirebilirsiniz. Daha fazla bilgi için bkz . İşlem seçenekleri. |
Outputs
| Element | Type | Description |
|---|---|---|
| headers | JSON Nesnesi | Yanıttan alınan üst bilgiler |
| body | JSON Nesnesi | Yanıttan alınan gövde |
| status code | Integer | Yanıttan gelen durum kodu |
Example
Bu tetikleyici, belirtilen uç noktaya bir abonelik oluşturur, benzersiz bir geri çağırma URL'si sağlar ve yeni yayımlanan teknoloji makalelerini bekler.
"HTTP_Webhook": {
"type": "HttpWebhook",
"inputs": {
"subscribe": {
"method": "POST",
"uri": "https://pubsubhubbub.appspot.com/subscribe",
"body": {
"hub.callback": "@{listCallbackUrl()}",
"hub.mode": "subscribe",
"hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
},
},
"unsubscribe": {
"method": "POST",
"url": "https://pubsubhubbub.appspot.com/subscribe",
"body": {
"hub.callback": "@{workflow().endpoint}@{listCallbackUrl()}",
"hub.mode": "unsubscribe",
"hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
}
}
}
}
Yinelenme tetikleyicisi
Bu tetikleyici, belirtilen yineleme zamanlamasına göre çalışır ve düzenli olarak çalışan bir iş akışı oluşturmak için kolay bir yol sağlar.
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
"startTime": "<start-date-time-with-format-YYYY-MM-DDThh:mm:ss>",
"timeZone": "<time-zone>",
"schedule": {
// Applies only when frequency is Day or Week. Separate values with commas.
"hours": [ <one-or-more-hour-marks> ],
// Applies only when frequency is Day or Week. Separate values with commas.
"minutes": [ <one-or-more-minute-marks> ],
// Applies only when frequency is Week. Separate values with commas.
"weekDays": [ "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday" ]
}
},
"runtimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-runs-queue>
}
},
"operationOptions": "<operation-option>"
}
Required
| Value | Type | Description |
|---|---|---|
| < zaman birimi> | String | Tetikleyicinin ne sıklıkta tetiklendiğini açıklayan zaman birimi: "second", "Minute", "Hour", "Day", "Week", "Month" |
| < zaman birimi sayısı> | Integer | Tetikleyicinin sıklık temelinde ne sıklıkta tetiklendiğini belirten bir değerdir. Bu, tetikleyici yeniden tetiklenene kadar bekleyebileceğiniz zaman birimi sayısıdır Minimum ve maksimum aralıklar şunlardır: - Ay: 1-16 ay - Gün: 1-500 gün - Saat: 1-12.000 saat - Dakika: 1-72.000 dakika - Saniye: 1-9.999.999 saniye Örneğin, aralık 6 ve sıklık "Ay" ise, yinelenme 6 ayda bir olur. |
Optional
| Value | Type | Description |
|---|---|---|
| < start-date-time-with-format-YYYY-MM-DDThh:mm:ss> | String | Başlangıç tarihi ve saati şu biçimdedir: Saat dilimi belirtirseniz YYYY-AA-GGThh:mm:ss -or- Saat dilimi belirtmezseniz YYYY-AA-GGThh:mm:ssZ Örneğin, 18 Eylül 2017'nin saat 14:00'da olmasını istiyorsanız, "2017-09-18T14:00:00" belirtin ve "Pasifik Standart Saati" gibi bir saat dilimi belirtin veya saat dilimi olmadan "2017-09-18T14:00:00Z" belirtin. Not: Bu başlangıç saati, gelecekte en fazla 49 yıla sahiptir ve UTC tarih saat biçiminde iso 8601 tarih saat belirtiminiizlemelidir ancak UTC uzaklığı olmadan olmalıdır. Saat dilimi belirtmezseniz, sonuna boşluk bırakmadan "Z" harfini eklemeniz gerekir. Bu "Z" eşdeğer deniz zamanını ifade eder. Basit zamanlamalar için başlangıç saati ilk oluşumdur, ancak karmaşık zamanlamalar için tetikleyici başlangıç zamanından daha erken tetiklenmez. Başlangıç tarihleri ve saatleri hakkında daha fazla bilgi için bkz . Düzenli olarak çalışan görevleri oluşturma ve zamanlama. |
| < saat dilimi> | String | Bu tetikleyici UTC uzaklığını kabul etmediğinden yalnızca bir başlangıç saati belirttiğinizde geçerlidir. Uygulamak istediğiniz saat dilimini belirtin. |
| < bir veya daha fazla saat işareti> | Tamsayı veya tamsayı dizisi | için frequency"Gün" veya "Hafta" belirtirseniz, iş akışını çalıştırmak istediğiniz günün saatleri olarak virgülle ayrılmış olarak 0 ile 23 arasında bir veya daha fazla tamsayı belirtebilirsiniz. Örneğin, "10", "12" ve "14" belirtirseniz saat işaretleri olarak 10:00, 12:00 ve 14:00 alırsınız. |
| < bir veya daha fazla dakika işareti> | Tamsayı veya tamsayı dizisi | için frequency"Gün" veya "Hafta" belirtirseniz, iş akışını çalıştırmak istediğiniz saatin dakikası olarak virgülle ayırarak 0 ile 59 arasında bir veya daha fazla tamsayı belirtebilirsiniz. Örneğin, dakika işareti olarak "30" belirtebilirsiniz ve günün saatleri için önceki örneği kullanarak 10:30, 12:30 ve 14:30 pm alırsınız. |
| weekDays | Dize veya dize dizisi | için frequency"Hafta" belirtirseniz, iş akışını çalıştırmak istediğinizde virgülle ayrılmış bir veya daha fazla gün belirtebilirsiniz: "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi" ve "Pazar" |
| < maksimum çalıştırmalar> | Integer | Varsayılan olarak, iş akışı örneklerinin tümü varsayılan sınıra kadar aynı anda (eşzamanlı veya paralel) çalışır. Yeni < bir sayı> değeri ayarlayarak bu sınırı değiştirmek için bkz. Tetikleyici eşzamanlılığını değiştirme. |
| < max-runs-queue> | Integer | İş akışınız zaten özellik temelinde runtimeConfiguration.concurrency.runs değiştirebileceğiniz en fazla örnek sayısını çalıştırıyorsa, yeni çalıştırmalar varsayılan sınıra kadar bu kuyruğa alınır. Varsayılan sınırı değiştirmek için bkz . Bekleyen çalıştırma sınırını değiştirme. |
| < operation-option> | String | Özelliğini ayarlayarak operationOptions varsayılan davranışı değiştirebilirsiniz. Daha fazla bilgi için bkz . İşlem seçenekleri. |
Örnek 1
Bu temel yinelenme tetikleyicisi günlük olarak çalışır:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1
}
}
Örnek 2
Tetikleyiciyi başlatmak için bir başlangıç tarihi ve saati belirtebilirsiniz. Bu yinelenme tetikleyicisi belirtilen tarihte başlar ve günlük olarak tetikler:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1,
"startTime": "2017-09-18T00:00:00Z"
}
}
Örnek 3
Bu yinelenme tetikleyicisi 9 Eylül 2017'de saat 14:00'da başlar ve her pazartesi 10:30, 12:30 ve Pasifik Standart Saati ile 14:30'da tetiklenir:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Week",
"interval": 1,
"schedule": {
"hours": [ 10, 12, 14 ],
"minutes": [ 30 ],
"weekDays": [ "Monday" ]
},
"startTime": "2017-09-07T14:00:00",
"timeZone": "Pacific Standard Time"
}
}
Bu tetikleyiciye ilişkin daha fazla bilgi ve örnekler için bkz . Düzenli olarak çalışan görevleri oluşturma ve zamanlama.
İstek tetikleyicisi
Bu tetikleyici, gelen istekleri kabul edebilen bir uç nokta oluşturarak mantıksal uygulamanızı çağırılabilir hale getirir. Bu tetikleyici için, tetikleyicinin gelen istekten aldığı yükü veya girişleri açıklayan ve doğrulayan bir JSON şeması sağlayın. Şema ayrıca iş akışındaki sonraki eylemlerden tetikleyici özelliklerine başvurmayı kolaylaştırır.
Note
İstek tetikleyicisinin özgün adı el ileydi ve bazı yerlerde görünmeye devam edebilir. Bu ad, oluşturmak için tetikleyiciyi kullandığınız iş akışı deseni türüyle ilgili daha fazla tutarlılık oluşturmak için değiştirildi.
Bu tetikleyiciyi listCallbackUrl çağırmak için İş Akışı Hizmeti REST API'sinde açıklanan API'yi kullanmanız gerekir. Bu tetikleyicinin HTTP uç noktası olarak nasıl kullanılacağını öğrenmek için bkz . HTTP uç noktalarıyla iş akışlarını çağırma, tetikleme veya iç içe yerleştirme.
"Request": {
"type": "Request",
"kind": "Http",
"inputs": {
"method": "<method-type>",
"relativePath": "<relative-path-for-accepted-parameter>",
"schema": {
"type": "object",
"properties": {
"<property-name>": {
"type": "<property-type>"
}
},
"required": [ "<required-properties>" ]
}
},
"runTimeConfiguration": {
"concurrency": {
"runs": <max-runs>,
"maximumWaitingRuns": <max-run-queue>
},
},
"operationOptions": "<operation-option>"
}
Required
| Value | Type | Description |
|---|---|---|
| < özellik-adı> | String | Yükü açıklayan JSON şemasındaki bir özelliğin adı |
| < özellik türü> | String | Özelliğin türü |
Optional
| Value | Type | Description |
|---|---|---|
| < yöntem türü> | String | Gelen isteklerin mantıksal uygulamanızı çağırmak için kullanması gereken yöntem: "GET", "PUT", "POST", "PATCH", "DELETE" |
| < relative-path-for-accepted-parameter> | String | Uç noktanızın URL'sinin kabul edebildiği parametrenin göreli yolu |
| < gerekli özellikler> | Array | Değer gerektiren bir veya daha fazla özellik |
| < maksimum çalıştırmalar> | Integer | Varsayılan olarak, iş akışı örneklerinin tümü varsayılan sınıra kadar aynı anda (eşzamanlı veya paralel) çalışır. Yeni < bir sayı> değeri ayarlayarak bu sınırı değiştirmek için bkz. Tetikleyici eşzamanlılığını değiştirme. |
| < max-runs-queue> | Integer | İş akışınız zaten özellik temelinde runtimeConfiguration.concurrency.runs değiştirebileceğiniz en fazla örnek sayısını çalıştırıyorsa, yeni çalıştırmalar varsayılan sınıra kadar bu kuyruğa alınır. Varsayılan sınırı değiştirmek için bkz . Bekleyen çalıştırma sınırını değiştirme. |
| < operation-option> | String | Özelliğini ayarlayarak operationOptions varsayılan davranışı değiştirebilirsiniz. Daha fazla bilgi için bkz . İşlem seçenekleri. |
Example
Bu tetikleyici, gelen bir isteğin tetikleyiciyi çağırmak için HTTP POST yöntemini kullanması gerektiğini belirtir ve gelen istekten gelen girişi doğrulayan bir şema içerir:
"Request": {
"type": "Request",
"kind": "Http",
"inputs": {
"method": "POST",
"schema": {
"type": "object",
"properties": {
"customerName": {
"type": "String"
},
"customerAddress": {
"type": "Object",
"properties": {
"streetAddress": {
"type": "string"
},
"city": {
"type": "string"
}
}
}
}
}
}
}
Tetikleyici koşulları
Tüm tetikleyiciler ve yalnızca tetikleyiciler için, iş akışının çalıştırılıp çalıştırılmayacağını belirleyen koşullar için bir veya daha fazla ifade içeren bir dizi ekleyebilirsiniz. özelliğini iş akışınızdaki bir tetikleyiciye eklemek conditions için mantıksal uygulamanızı kod görünümü düzenleyicisinde açın.
Örneğin, tetikleyicinin yalnızca bir web sitesi iç sunucu hatası döndürdüğünde tetikleyicinin özellikteki conditions durum koduna başvurarak tetikleneceğini belirtebilirsiniz:
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Hour",
"interval": 1
},
"conditions": [ {
"expression": "@equals(triggers().code, 'InternalServerError')"
} ]
}
Varsayılan olarak, tetikleyici yalnızca "200 Tamam" yanıtı aldıktan sonra tetikler. İfade bir tetikleyicinin durum koduna başvurduğunda tetikleyicinin varsayılan davranışı değiştirilir. Bu nedenle, tetikleyicinin "200" ve "201" durum kodu gibi birden fazla durum kodu için tetiklemesini istiyorsanız, koşulunuz olarak bu ifadeyi eklemeniz gerekir:
@or(equals(triggers().code, 200),equals(triggers().code, 201))
Dizide birden çok iş akışı çalıştırması tetikleme
İş akışınızın işlenmek üzere diziler alan bir tetikleyici kullandığı senaryolarda, bazen her bir için döngüsü kullanmak çok uzun sürebilir. İşlemeyi hızlandırmak için bir seçenek paralel dallar oluşturmaktır. Ya da tetikleyicinin eşleşmesini kaldırmayı destekliyorsa, tetikleyicinin dizi öğelerini bölmesini ve her dizi öğesi için ayrı bir iş akışı örneği çalıştırmasını sağlayabilirsiniz. Bu seçenek, örneğin yoklama aralıkları arasında birden çok yeni öğe döndürebilecek bir uç noktayı yoklamak istediğinizde kullanışlıdır.
Yalnızca dizileri kabul edip dizi döndürebilen tetikleyiciler İstek, HTTP, Azure Service Bus veya Office Outlook 365 gibi bu özelliği destekler. Bu tetikleyiciler için iş akışı tasarımcısında, özelliği tetikleyici tanımına ekleyen splitOn ayarını açabilirsiniz.
Note
Tetikleyicinin Swagger dosyası bir dizi olan yükü açıklıyorsa, splitOn özellik otomatik olarak tetikleyici tanımınıza eklenir. Değilse ve tetikleyici dizileri kabul edebilirse, özelliğini, eşleşmesini çözmek istediğiniz diziyi içeren yanıt yüküne ekleyebilirsiniz.
Eşleşmeyi kaldırma özelliğini kullanmadan önce aşağıdaki noktaları gözden geçirin:
Tetikleyici eşzamanlılığı da açıksa Bölme sınırı önemli ölçüde azalır. Öğe sayısı bu sınırı aşarsa Bölme özelliği kullanılamaz.
Bölme özelliği zaman uyumlu yanıt düzeniyle çalışmaz. Bir iş akışı Yanıt eylemini kullanır ve Böl ayarını açarsa zaman uyumsuz olarak çalışır ve hemen bir
202 ACCEPTEDyanıt gönderir.Split'in tek bir iş akışı çalıştırmasında işleyebileceği dizi öğelerinin sayısında bir sınır vardır. Daha fazla bilgi için bkz . Döngü ve toplu işlem sınırları.
özelliğini kullanarak
splitOntetikleyici tanımı aracılığıyla tanımlamayı kaldırmayı ayarlarsanız, dizinin dışında bulunan özelliklere doğrudan başvuramaz veya özelliklere erişemezsiniz. Hataları önlemek için başvurunun önüne işlecini ekleyin?. Örnekler için bkz . Tetikleyici tanımında eşleşmeyi kaldırmayı açma.
Tasarımcı aracılığıyla eşleşmeyi kaldırmayı açma
Desteklendiği bir tetikleyicide debatching ayarlamak için iş akışı tasarımcısında şu adımları izleyin:
[Azure portalı] içinde mantıksal uygulama kaynağınızı açın.
İş akışınızı tasarımcıda açın.
Tasarımcıda, tetikleyici bilgileri bölmesini açmak için bağlamayı kaldırmayı destekleyen tetikleyiciyi seçin.
Ayarlar sekmesindeki Genel'in altında Bölünmüş ayarını bulun ve açık değilse ayarı Açık olarak değiştirin.
Tetikleyici tanımında eşleşmeyi kaldırmayı açma
Bazı tetikleyiciler dizileri işler, ancak Bölme açık ayarı tasarımcı aracılığıyla kullanılamaz. Bu tür tetikleyiciler için, tetikleyici tanımına splitOn özelliğini eklemek için şu adımları izleyin:
Örneğin, iş akışınızın BIR API'yi çağırmak için HTTP tetikleyicisini kullandığını ve aşağıdaki yanıtı aldığını varsayalım:
{
"Status": "Succeeded",
"Rows": [
{
"id": 938109380,
"name": "customer-name-one"
},
{
"id": 938109381,
"name": "customer-name-two"
}
]
}
İş akışınız yalnızca dizideki Rows içeriğe ihtiyaç duyuyorsa, aşağıdaki örnekte gösterildiği gibi tetikleyici tanımına özelliğini ekleyebilir ve ayarlayabilirsiniz splitOn :
"HTTP_trigger_debatch": {
"type": "Http",
"inputs": {
"uri": "https://mydomain.com/myAPI",
"method": "GET"
},
"recurrence": {
"frequency": "Second",
"interval": 1
},
"splitOn": "@triggerBody()?.Rows"
}
Note
özelliğini kullanırsanız, dizinin dışında bulunan özelliklere splitOn doğrudan erişemez veya bu özelliklere başvuramazsınız. Hataları önlemek için, örneklerde gösterildiği gibi işlecini kullanın ? .
İş akışı tanımınız splitOn ve @triggerBody().name özelliğini kullanarak da name değer alabilir. Bu değerler "customer-name-one" ilk iş akışı çalıştırmasından ve "customer-name-two" ikinci iş akışı çalıştırmasındandır. Bu örnekte tetikleyici çıkışları aşağıdaki değerlere benzer:
{
"body": {
"id": 938109380,
"name": "customer-name-one"
}
}
{
"body": {
"id": 938109381,
"name": "customer-name-two"
}
}
Eylemlere genel bakış
Azure Logic Apps, her biri eylemin benzersiz davranışını tanımlayan farklı girişlere sahip çeşitli eylem türleri sağlar. Eylemler şu üst düzey öğelere sahiptir, ancak bazıları isteğe bağlıdır:
"<action-name>": {
"type": "<action-type>",
"inputs": {
"<input-name>": { "<input-value>" },
"retryPolicy": "<retry-behavior>"
},
"runAfter": { "<previous-trigger-or-action-status>" },
"runtimeConfiguration": { "<runtime-config-options>" },
"operationOptions": "<operation-option>"
},
Required
| Value | Type | Description |
|---|---|---|
| < eylem-adı> | String | Eylemin adı |
| < eylem türü> | String | Eylem türü, örneğin, "Http" veya "ApiConnection" |
| < input-name> | String | Eylemin davranışını tanımlayan girişin adı |
| < input-value> | Various | Dize, tamsayı, JSON nesnesi vb. olabilecek giriş değeri |
| < previous-trigger-or-action-status> | JSON Nesnesi | Bu geçerli eylemin çalıştırılabilmesi için hemen çalışması gereken tetikleyici veya eylemin adı ve sonuç durumu |
Optional
| Value | Type | Description |
|---|---|---|
| < yeniden deneme davranışı> | JSON Nesnesi | 408, 429 ve 5XX durum koduna ve tüm bağlantı özel durumlarına sahip aralıklı hatalar için yeniden deneme davranışını özelleştirir. Daha fazla bilgi için bkz. İlkeleri yeniden deneme. |
| < runtime-config-options> | JSON Nesnesi | Bazı eylemler için, özellikleri ayarlayarak runtimeConfiguration eylemin çalışma zamanındaki davranışını değiştirebilirsiniz. Daha fazla bilgi için bkz . Çalışma zamanı yapılandırma ayarları. |
| < operation-option> | String | Bazı eylemler için, özelliğini ayarlayarak operationOptions varsayılan davranışı değiştirebilirsiniz. Daha fazla bilgi için bkz . İşlem seçenekleri. |
Eylem türleri listesi
Yaygın olarak kullanılan bazı eylem türleri şunlardır:
Bu örnekler ve daha fazlası gibi yerleşik eylem türleri :
HTTP veya HTTPS üzerinden uç noktaları çağırmak için HTTP
İstekleri yanıtlama yanıtı
JavaScript kod parçacıklarını çalıştırmak için JavaScript Kodu yürütme
Azure İşlevleri'ni çağırma işlevi
Birleştirme, Oluşturma, Tablo, Seçme gibi veri işlemi eylemleri ve çeşitli girişlerden veri oluşturan veya dönüştüren diğer eylemler
Başka bir mantıksal uygulama iş akışını çağırmak için iş akışı
Azure Service Bus, Office 365 Outlook, Power BI, Azure Blob Depolama, OneDrive, GitHub ve daha fazlası gibi Microsoft tarafından yönetilen çeşitli bağlayıcıları ve API'leri çağıran ApiConnection ve ApiConnectionWebHook gibi yönetilen API eylem türleri
Başka eylemler içeren ve iş akışı yürütmeyi düzenlemenize yardımcı olan If, Foreach, Switch, Scope ve Until gibi iş akışı eylem türlerini denetleme
Yerleşik eylem
| Eylem türü | Description |
|---|---|
| Compose | Çeşitli türlerde olabilecek girişlerden tek bir çıkış oluşturur. |
| JavaScript Kodu Yürütme | Belirli ölçütlere uyan JavaScript kod parçacıklarını çalıştırın. Kod gereksinimleri ve daha fazla bilgi için bkz . Satır içi kodla kod parçacıkları ekleme ve çalıştırma. |
| Function | Bir Azure İşlevi çağırır. |
| HTTP | HTTP uç noktasını çağırır. |
| Join | Bir dizideki tüm öğelerden bir dize oluşturur ve bu öğeleri belirtilen sınırlayıcı karakteriyle ayırır. |
| JSON ayrıştırma | JSON içeriğindeki özelliklerden kullanıcı dostu belirteçler oluşturur. Ardından mantıksal uygulamanıza belirteçleri ekleyerek bu özelliklere başvurabilirsiniz. |
| Query | Bir koşula veya filtreye göre başka bir dizideki öğelerden dizi oluşturur. |
| Response | Gelen bir çağrıya veya isteğe yanıt oluşturur. |
| Select | Belirtilen eşlemeyi temel alarak başka bir dizideki öğeleri dönüştürerek JSON nesneleriyle bir dizi oluşturur. |
| Table | Diziden CSV veya HTML tablosu oluşturur. |
| Terminate | Etkin olarak çalışan bir iş akışını durdurur. |
| Wait | İş akışınızı belirtilen süre boyunca veya belirtilen tarih ve saate kadar duraklatır. |
| Workflow | Bir iş akışını başka bir iş akışının içine iç içe yuvalar. |
Yönetilen API eylemleri
| Eylem türü | Description |
|---|---|
| ApiConnection | Microsoft tarafından yönetilen BIR API kullanarak bir HTTP uç noktasını çağırır. |
| ApiConnectionWebhook | HTTP Web Kancası gibi çalışır ancak Microsoft tarafından yönetilen bir API kullanır. |
İş akışı eylemlerini denetleme
Bu eylemler, iş akışı yürütmeyi denetlemenize ve diğer eylemleri eklemenize yardımcı olur. Bir denetim iş akışı eyleminin dışından, bu denetim iş akışı eyleminin içindeki eylemlere doğrudan başvurabilirsiniz. Örneğin, kapsamın içinde bir Http eyleminiz varsa, ifadeye iş akışının @body('Http') herhangi bir yerinden başvurabilirsiniz. Ancak, bir denetim iş akışı eylemi içinde var olan eylemler yalnızca aynı denetim iş akışı yapısındaki diğer eylemlerden sonra "çalıştırılabilir".
| Eylem türü | Description |
|---|---|
| ForEach | Dizideki her öğe için döngüde aynı eylemleri çalıştırın. |
| If | Belirtilen koşulun true veya false olup olmadığına bağlı olarak eylemleri çalıştırın. |
| Scope | Bir dizi eylemden grup durumuna göre eylemleri çalıştırın. |
| Switch | İfadelerden, nesnelerden veya belirteçlerden gelen değerlerin her büyük/küçük harf tarafından belirtilen değerlerle eşleşmesi durumlarına göre düzenlenmiş eylemleri çalıştırın. |
| Until | Belirtilen koşul doğru olana kadar eylemleri döngüde çalıştırın. |
Eylemler - Ayrıntılı başvuru
APIConnection eylemi
Bu eylem , Microsoft tarafından yönetilen bir API'ye bir HTTP isteği gönderir ve API ve parametreler hakkında bilgi ile geçerli bir bağlantıya başvuru gerektirir.
"<action-name>": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['<api-name>']['connectionId']"
},
"<other-action-specific-input-properties>"
},
"method": "<method-type>",
"path": "/<api-operation>",
"retryPolicy": "<retry-behavior>",
"queries": { "<query-parameters>" },
"<other-action-specific-properties>"
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < eylem-adı> | String | Bağlayıcı tarafından sağlanan eylemin adı |
| < api-name> | String | Bağlantı için kullanılan Microsoft tarafından yönetilen API'nin adı |
| < yöntem türü> | String | API'yi çağırmak için HTTP yöntemi: "GET", "PUT", "POST", "PATCH" veya "DELETE" |
| < api-operation> | String | Çağrılacak API işlemi |
Optional
| Value | Type | Description |
|---|---|---|
| < diğer eyleme özgü giriş-özellikleri> | JSON Nesnesi | Bu belirli eyleme uygulanan diğer giriş özellikleri |
| < yeniden deneme davranışı> | JSON Nesnesi | 408, 429 ve 5XX durum koduna ve tüm bağlantı özel durumlarına sahip aralıklı hatalar için yeniden deneme davranışını özelleştirir. Daha fazla bilgi için bkz . İlkeleri yeniden deneme. |
| < sorgu parametreleri> | JSON Nesnesi | API çağrısına eklenecek tüm sorgu parametreleri. Örneğin, "queries": { "api-version": "2018-01-01" } nesnesi çağrısına ekler ?api-version=2018-01-01 . |
| < diğer eyleme özgü özellikler> | JSON Nesnesi | Bu belirli eyleme uygulanan diğer tüm özellikler |
Example
Bu tanım, Microsoft tarafından yönetilen bir API olan Office 365 Outlook bağlayıcısı için e-posta gönder eylemini açıklar:
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "Thank you for your membership!",
"Subject": "Hello and welcome!",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "POST",
"path": "/Mail"
},
"runAfter": {}
}
APIConnectionWebhook eylemi
Bu eylem , Microsoft tarafından yönetilen bir API kullanarak HTTP üzerinden uç noktaya bir abonelik isteği gönderir, uç noktanın yanıt gönderebileceği bir geri çağırma URL'si sağlar ve uç noktanın yanıt vermesini bekler. Daha fazla bilgi için bkz . Uç nokta abonelikleri.
"<action-name>": {
"type": "ApiConnectionWebhook",
"inputs": {
"subscribe": {
"method": "<method-type>",
"uri": "<api-subscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" },
"retryPolicy": "<retry-behavior>",
"queries": { "<query-parameters>" },
"<other-action-specific-input-properties>"
},
"unsubscribe": {
"method": "<method-type>",
"uri": "<api-unsubscribe-URL>",
"headers": { "<header-content>" },
"body": "<body-content>",
"authentication": { "<authentication-type>" },
"<other-action-specific-properties>"
},
},
"runAfter": {}
}
<
gibi > bazı değerler hem hem "subscribe" de "unsubscribe" nesneleri için kullanılabilir.
Required
| Value | Type | Description |
|---|---|---|
| < eylem-adı> | String | Bağlayıcı tarafından sağlanan eylemin adı |
| < yöntem türü> | String | Uç noktadan abone olmak veya abonelikten çıkmak için kullanılacak HTTP yöntemi: "GET", "PUT", "POST", "PATCH" veya "DELETE" |
| < api-subscribe-URL> | String | API'ye abone olmak için kullanılacak URI |
Optional
| Value | Type | Description |
|---|---|---|
| < api-unsubscribe-URL> | String | API'den abonelikten çıkmak için kullanılacak URI |
| < üst bilgi içeriği> | JSON Nesnesi | İstekte gönderilecek tüm üst bilgiler Örneğin, bir isteğin dilini ve türünü ayarlamak için: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
| < gövde içeriği> | JSON Nesnesi | İstekte gönderilecek tüm ileti içeriği |
| < kimlik doğrulama türü> | JSON Nesnesi | İsteğin giden isteklerin kimliğini doğrulamak için kullandığı kimlik doğrulama modeli. Daha fazla bilgi için bkz . Giden çağrılara kimlik doğrulaması ekleme. |
| < yeniden deneme davranışı> | JSON Nesnesi | 408, 429 ve 5XX durum koduna ve tüm bağlantı özel durumlarına sahip aralıklı hatalar için yeniden deneme davranışını özelleştirir. Daha fazla bilgi için bkz . İlkeleri yeniden deneme. |
| < sorgu parametreleri> | JSON Nesnesi | API çağrısına eklenecek tüm sorgu parametreleri Örneğin, "queries": { "api-version": "2018-01-01" } nesnesi çağrısına ekler ?api-version=2018-01-01 . |
| < diğer eyleme özgü giriş-özellikleri> | JSON Nesnesi | Bu belirli eyleme uygulanan diğer giriş özellikleri |
| < diğer eyleme özgü özellikler> | JSON Nesnesi | Bu belirli eyleme uygulanan diğer tüm özellikler |
ApiConnectionWebhook eyleminde sınırları HTTP zaman uyumsuz sınırlarıyla aynı şekilde de belirtebilirsiniz.
Eylem oluştur
Bu eylem, ifadeler de dahil olmak üzere birden çok girişten tek bir çıkış oluşturur. Hem çıktı hem de girişler, Azure Logic Apps'in yerel olarak desteklediği diziler, JSON nesneleri, XML ve ikili gibi herhangi bir türe sahip olabilir. Ardından eylemin çıkışını diğer eylemlerde kullanabilirsiniz.
"Compose": {
"type": "Compose",
"inputs": "<inputs-to-compose>",
"runAfter": {}
},
Required
| Value | Type | Description |
|---|---|---|
| < girişler-oluşturma> | Any | Tek çıkış oluşturmaya yönelik girişler |
Örnek 1
Bu eylem tanımı, sonunda bir boşluk ve değeriyle abcdefg birleştirilir1234:
"Compose": {
"type": "Compose",
"inputs": "abcdefg 1234",
"runAfter": {}
},
Bu eylemin oluşturduğu çıkış aşağıdadır:
abcdefg 1234
Örnek 2
Bu eylem tanımı, içeren abcdefg dize değişkenlerini ve içeren 1234bir tamsayı değişkenlerini birleştirir:
"Compose": {
"type": "Compose",
"inputs": "@{variables('myString')}@{variables('myInteger')}",
"runAfter": {}
},
Bu eylemin oluşturduğu çıkış aşağıdadır:
"abcdefg1234"
JavaScript Kodu Yürütme eylemi
Bu eylem bir JavaScript kod parçacığı çalıştırır ve sonuçları iş akışındaki sonraki eylemlerin başvurabileceği bir belirteç aracılığıyla döndürür.
"Execute_JavaScript_Code": {
"type": "JavaScriptCode",
"inputs": {
"code": "<JavaScript-code-snippet>",
"explicitDependencies": {
"actions": [ <preceding-actions> ],
"includeTrigger": true
}
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < JavaScript-code-snippet> | Varies | Çalıştırmak istediğiniz JavaScript kodu. Kod gereksinimleri ve daha fazla bilgi için bkz . İş akışlarında kod parçacıkları çalıştırma. özniteliğinde code kod parçacığınız salt okunur workflowContext nesnesini giriş olarak kullanabilir. Bu nesne, kodunuza tetikleyiciden ve iş akışınızdaki önceki eylemlerden gelen çıkışlara erişim sağlayan alt özelliklere sahiptir. Nesne hakkında workflowContext daha fazla bilgi için bkz . workflowContext nesnesini kullanarak tetikleyiciye ve eylem sonuçlarına başvurma. |
Bazı durumlarda gereklidir
explicitDependencies özniteliği tetikleyicinin sonuçlarını, önceki eylemleri veya her ikisini de kod parçacığınız için bağımlılık olarak açıkça eklemek istediğinizi belirtir. Bu bağımlılıkları ekleme hakkında daha fazla bilgi için bkz . Satır içi Koda parametre olarak bağımlılık ekleme eylemi.
özniteliği için includeTrigger veya true değerlerini belirtebilirsinizfalse.
| Value | Type | Description |
|---|---|---|
| < önceki eylemler> | Dize dizisi | Bağımlılık olarak JSON biçiminde eylem adlarını içeren bir dizi. İş akışı tanımınızda görünen eylem adlarını kullandığınızdan emin olun; burada eylem adları boşluk (" ") değil alt çizgi (_) kullanır. |
Örnek 1
Bu eylem, mantıksal uygulama iş akışınızın adını alan ve sonuç olarak "Logic-app-name'den <>Merhaba dünya" metnini döndüren kodu çalıştırır. Bu örnekte kod, özelliğine salt workflowContext.workflow.name okunur nesnesi aracılığıyla erişerek workflowContext iş akışının adına başvurur. Nesnesini kullanma workflowContext hakkında daha fazla bilgi için bkz . Kodunuzda başvuru tetikleyicisi ve eylem sonuçları.
"Execute_JavaScript_Code": {
"type": "JavaScriptCode",
"inputs": {
"code": "var text = \"Hello world from \" + workflowContext.workflow.name;\r\n\r\nreturn text;"
},
"runAfter": {}
}
Örnek 2
Bu eylem, kodu outlook hesabına yeni bir e-posta geldiğinde tetikleyen bir mantıksal uygulama iş akışında çalıştırır. İş akışı, alınan e-postadaki içeriği bir onay isteğiyle birlikte ileten Office 365 Outlook Onay e-postası gönder eylemini de kullanır.
Kod, e-posta iletisinin Body özelliğinden e-posta adreslerini ayıklar ve onay eylemindeki SelectedOption özellik değeriyle birlikte adresleri döndürür. Eylem, nesnenin içindeki nesnede gönder eylemini actions açıkça içerir.
"Execute_JavaScript_Code": {
"type": "JavaScriptCode",
"inputs": {
"code": "var myResult = /(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\r\n\r\nvar email = workflowContext.trigger.outputs.body.Body;\r\n\r\nvar reply = workflowContext.actions.Send_approval_email.outputs.body.SelectedOption;\r\n\r\nreturn email.match(myResult) + \" - \" + reply;\r\n;",
"explicitDependencies": {
"actions": [
"Send_approval_email"
]
}
},
"runAfter": {}
}
İşlev eylemi
Bu eylem, daha önce oluşturulmuş bir Azure işlevini çağırır.
"<Azure-function-name>": {
"type": "Function",
"inputs": {
"function": {
"id": "<Azure-function-ID>"
},
"method": "<method-type>",
"headers": { "<header-content>" },
"body": { "<body-content>" },
"queries": { "<query-parameters>" }
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < Azure-function-ID> | String | Çağırmak istediğiniz Azure işlevinin kaynak kimliği. Bu değerin biçimi aşağıdadır: "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Web/sites/<Azure-function-app-name>/functions/<Azure-function-name>" |
| < yöntem türü> | String | İşlevi çağırmak için kullanılacak HTTP yöntemi: "GET", "PUT", "POST", "PATCH" veya "DELETE" Belirtilmezse, varsayılan "POST" yöntemidir. |
Optional
| Value | Type | Description |
|---|---|---|
| < üst bilgi içeriği> | JSON Nesnesi | Aramayla gönderilecek tüm üst bilgiler Örneğin, bir isteğin dilini ve türünü ayarlamak için: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
| < gövde içeriği> | JSON Nesnesi | İstekte gönderilecek tüm ileti içeriği |
| < sorgu parametreleri> | JSON Nesnesi | API çağrısına eklenecek tüm sorgu parametreleri Örneğin, "queries": { "api-version": "2018-01-01" } nesnesi çağrısına ekler ?api-version=2018-01-01 . |
| < diğer eyleme özgü giriş-özellikleri> | JSON Nesnesi | Bu belirli eyleme uygulanan diğer giriş özellikleri |
| < diğer eyleme özgü özellikler> | JSON Nesnesi | Bu belirli eyleme uygulanan diğer tüm özellikler |
Mantıksal uygulamanızı kaydettiğinizde, Azure Logic Apps başvuruda bulunan işlevde şu denetimleri gerçekleştirir:
İş akışınızın işleve erişimi olmalıdır.
İş akışınız yalnızca standart bir HTTP tetikleyicisi veya genel bir JSON web kancası tetikleyicisi kullanabilir.
Azure Logic Apps, tetikleyicinin çalışma zamanında kullanılan URL'sini alır ve önbelleğe alır. Ancak, herhangi bir işlem önbelleğe alınan URL'yi geçersiz kılırsa, İşlev eylemi çalışma zamanında başarısız olur. Bu sorunu düzeltmek için mantıksal uygulamayı yeniden kaydedin, böylece mantıksal uygulama tetikleyici URL'sini yeniden alır ve önbelleğe alır.
İşlevde tanımlı yol olamaz.
Yalnızca "işlev" ve "anonim" yetkilendirme düzeylerine izin verilir.
Example
Bu eylem tanımı, daha önce oluşturulan "GetProductID" işlevini çağırır:
"GetProductID": {
"type": "Function",
"inputs": {
"function": {
"id": "/subscriptions/<XXXXXXXXXXXXXXXXXXXX>/resourceGroups/myLogicAppResourceGroup/providers/Microsoft.Web/sites/InventoryChecker/functions/GetProductID"
},
"method": "POST",
"headers": {
"x-ms-date": "@utcnow()"
},
"body": {
"Product_ID": "@variables('ProductID')"
}
},
"runAfter": {}
}
HTTP eylemi
Bu eylem, belirtilen HTTP veya HTTPS uç noktasına bir istek gönderir ve iş akışının çalışıp çalışmadığını belirlemek için yanıtı denetler. Daha fazla bilgi için bkz . Azure Logic Apps'ten HTTP veya HTTPS üzerinden hizmet uç noktalarını çağırma.
"HTTP": {
"type": "Http",
"inputs": {
"method": "<method-type>",
"uri": "<HTTP-or-HTTPS-endpoint-URL>",
"headers": { "<header-content>" },
"queries": { "<query-parameters>" },
"body": "<body-content>",
"authentication": { "<authentication-type-and-property-values>" },
"retryPolicy": {
"type": "<retry-behavior>"
},
},
"runAfter": {}
}
Required
| Property | Value | Type | Description |
|---|---|---|---|
method |
< yöntem türü> | String | Giden isteği göndermek için kullanılacak yöntem: "GET", "PUT", "POST", "PATCH" veya "DELETE" |
uri |
< HTTP-veya-HTTPS-endpoint-URL> | String | Giden isteği göndermek istediğiniz HTTP veya HTTPS uç nokta URL'si. En büyük dize boyutu: 2 KB Bir Azure hizmeti veya kaynağı için bu URI söz dizimi kaynak kimliğini ve erişmek istediğiniz kaynağın yolunu içerir. |
Optional
| Property | Value | Type | Description |
|---|---|---|---|
headers |
< üst bilgi içeriği> | JSON Nesnesi | İstekle birlikte eklemeniz gereken tüm üst bilgiler Örneğin, dili ayarlamak ve yazmak için: "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
queries |
< sorgu parametreleri> | JSON Nesnesi | İstekte kullanmanız gereken tüm sorgu parametreleri Örneğin, "queries": { "api-version": "2018-01-01" } nesnesi çağrısına ekler ?api-version=2018-01-01 . |
body |
< gövde içeriği> | JSON Nesnesi | İstekle yük olarak gönderilecek ileti içeriği |
authentication |
< kimlik doğrulama türü ve özellik-değerleri> | JSON Nesnesi | İsteğin giden isteklerin kimliğini doğrulamak için kullandığı kimlik doğrulama modeli. Daha fazla bilgi için bkz . Giden çağrılara kimlik doğrulaması ekleme. Scheduler'ın authority ötesinde özelliği desteklenir. Belirtilmediğinde varsayılan değer olur https://management.azure.com/, ancak farklı bir değer kullanabilirsiniz. |
retryPolicy > type |
< yeniden deneme davranışı> | JSON Nesnesi | 408, 429 ve 5XX durum koduna ve tüm bağlantı özel durumlarına sahip aralıklı hatalar için yeniden deneme davranışını özelleştirir. Daha fazla bilgi için bkz . İlkeleri yeniden deneme. |
| < diğer eyleme özgü giriş-özellikleri> | < input-property> | JSON Nesnesi | Bu belirli eyleme uygulanan diğer giriş özellikleri |
| < diğer eyleme özgü özellikler> | < özellik-değer> | JSON Nesnesi | Bu belirli eyleme uygulanan diğer tüm özellikler |
Example
Bu eylem tanımı, belirtilen uç noktaya bir istek göndererek en son haberleri alır:
"HTTP": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://mynews.example.com/latest"
}
}
Birleştirme eylemi
Bu eylem, bir dizideki tüm öğelerden bir dize oluşturur ve bu öğeleri belirtilen sınırlayıcı karakteriyle ayırır.
"Join": {
"type": "Join",
"inputs": {
"from": <array>,
"joinWith": "<delimiter>"
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < dizi> | Array | Kaynak öğeleri sağlayan dizi veya ifade. Bir ifade belirtirseniz, bu ifadeyi çift tırnak içine alın. |
| < sınırlayıcı> | Tek karakterli dize | Dizedeki her öğeyi ayıran karakter |
Example
Daha önce bu tamsayı diziyi içeren bir "myIntegerArray" değişkeni oluşturduğunuzu varsayalım:
[1,2,3,4]
Bu eylem tanımı, ifadedeki işlevini kullanarak variables() değişkendeki değerleri alır ve bu dizeyi virgülle ayrılmış değerlerle oluşturur: "1,2,3,4"
"Join": {
"type": "Join",
"inputs": {
"from": "@variables('myIntegerArray')",
"joinWith": ","
},
"runAfter": {}
}
JSON ayrıştır eylemi
Bu eylem, JSON içeriğindeki özelliklerden kullanıcı dostu alanlar veya belirteçler oluşturur. Bunun yerine belirteçleri kullanarak mantıksal uygulamanızda bu özelliklere erişebilirsiniz. Örneğin, Azure Service Bus ve Azure Cosmos DB gibi hizmetlerden gelen JSON çıkışını kullanmak istediğinizde, bu eylemi mantıksal uygulamanıza ekleyebilirsiniz, böylece bu çıktıdaki verilere daha kolay başvurabilirsiniz.
"Parse_JSON": {
"type": "ParseJson",
"inputs": {
"content": "<JSON-source>",
"schema": { "<JSON-schema>" }
},
"runAfter": {}
},
Required
| Value | Type | Description |
|---|---|---|
| < JSON kaynağı> | JSON Nesnesi | Ayrıştırmak istediğiniz JSON içeriği |
| < JSON şeması> | JSON Nesnesi | Eylemin kaynak JSON içeriğini ayrıştırma için kullandığı temel JSON içeriğini açıklayan JSON şeması. İpucu: İş akışı tasarımcısında, eylemin şemayı oluşturabilmesi için şemayı sağlayabilir veya örnek bir yük sağlayabilirsiniz. |
Example
Bu eylem tanımı, iş akışınızda kullanabileceğiniz ancak yalnızca JSON Ayrıştır eylemini izleyen eylemlerde kullanabileceğiniz bu belirteçleri oluşturur:
FirstName, LastName ve Email
"Parse_JSON": {
"type": "ParseJson",
"inputs": {
"content": {
"Member": {
"Email": "Sophie.Owen@contoso.com",
"FirstName": "Sophie",
"LastName": "Owen"
}
},
"schema": {
"type": "object",
"properties": {
"Member": {
"type": "object",
"properties": {
"Email": {
"type": "string"
},
"FirstName": {
"type": "string"
},
"LastName": {
"type": "string"
}
}
}
}
}
},
"runAfter": { }
},
Bu örnekte, "content" özelliği ayrıştırma eyleminin JSON içeriğini belirtir. Bu JSON içeriğini şemayı oluşturmak için örnek yük olarak da sağlayabilirsiniz.
"content": {
"Member": {
"FirstName": "Sophie",
"LastName": "Owen",
"Email": "Sophie.Owen@contoso.com"
}
},
"schema" özelliği, JSON içeriğini tanımlamak için kullanılan JSON şemasını belirtir:
"schema": {
"type": "object",
"properties": {
"Member": {
"type": "object",
"properties": {
"FirstName": {
"type": "string"
},
"LastName": {
"type": "string"
},
"Email": {
"type": "string"
}
}
}
}
}
Sorgu eylemi
Bu eylem, belirtilen bir koşula veya filtreye göre başka bir dizideki öğelerden bir dizi oluşturur.
"Filter_array": {
"type": "Query",
"inputs": {
"from": <array>,
"where": "<condition-or-filter>"
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < dizi> | Array | Kaynak öğeleri sağlayan dizi veya ifade. Bir ifade belirtirseniz, bu ifadeyi çift tırnak içine alın. |
| < koşul veya filtre> | String | Kaynak dizideki öğeleri filtrelemek için kullanılan koşul Not: Koşula uyan değer yoksa, eylem boş bir dizi oluşturur. |
Example
Bu eylem tanımı, belirtilen değerden daha büyük değerlere sahip bir dizi oluşturur; bu ikidir:
"Filter_array": {
"type": "Query",
"inputs": {
"from": [ 1, 3, 0, 5, 4, 2 ],
"where": "@greater(item(), 2)"
}
}
Yanıt eylemi
Bu eylem, bir HTTP isteğine yanıt için yük oluşturur.
"Response" {
"type": "Response",
"kind": "http",
"inputs": {
"statusCode": 200,
"headers": { <response-headers> },
"body": { <response-body> }
},
"runAfter": {}
},
Required
| Value | Type | Description |
|---|---|---|
| < response-status-code> | Integer | Gelen isteğe gönderilen HTTP durum kodu. Varsayılan kod "200 Tamam"dır, ancak kod 2xx, 4xx veya 5xx ile başlayan ancak 3xxx ile başlayan geçerli bir durum kodu olabilir. |
Optional
| Value | Type | Description |
|---|---|---|
| < response-headers> | JSON Nesnesi | Yanıta eklenecek bir veya daha fazla üst bilgi |
| < yanıt gövdesi> | Various | Bir dize, JSON nesnesi, hatta önceki bir eylemden ikili içerik olabilecek yanıt gövdesi |
Example
Bu eylem tanımı, belirtilen durum kodu, ileti gövdesi ve ileti üst bilgilerine sahip bir HTTP isteğine yanıt oluşturur:
"Response": {
"type": "Response",
"inputs": {
"statusCode": 200,
"body": {
"ProductID": 0,
"Description": "Organic Apples"
},
"headers": {
"x-ms-date": "@utcnow()",
"content-type": "application/json"
}
},
"runAfter": {}
}
Restrictions
Diğer eylemlerden farklı olarak , Yanıt eyleminin özel kısıtlamaları vardır:
İş akışınız Yanıt eylemini yalnızca iş akışı bir HTTP isteği tetikleyicisiyle başladığında kullanabilir; bu da iş akışınızın bir HTTP isteği tarafından tetiklenmiş olması gerektiği anlamına gelir.
İş akışınız, Sıralı döngüler ve paralel dallar dahil olmak üzere Foreach döngüleri, Until döngüleri dışındayanıt eylemini her yerde kullanabilir.
Özgün istek yalnızca Yanıt eyleminin gerektirdiği tüm eylemler HTTP zaman aşımı sınırı içinde tamamlandığında iş akışınızın yanıtını alır.
Ancak, iş akışınız başka bir mantıksal uygulamayı iç içe iş akışı olarak çağırırsa, iç içe iş akışı tamamlanmadan önce ne kadar zaman geçerse geçsin, üst iş akışı iç içe iş akışı bitene kadar bekler.
İş akışınız Yanıt eylemini ve zaman uyumlu yanıt desenini kullandığında, bu komut birden çok çalıştırma oluşturduğundan, iş akışı tetikleyici tanımında splitOn komutunu da kullanamaz. PUT yöntemi kullanıldığında bu durumu denetleyin ve doğruysa "hatalı istek" yanıtı döndür.
Aksi takdirde, iş akışınız splitOn komutunu ve Bir Yanıt eylemini kullanıyorsa, iş akışı zaman uyumsuz olarak çalışır ve hemen bir "202 KABUL EDİLEN" yanıtı döndürür.
İş akışınızın yürütmesi Yanıt eylemine ulaştığında ancak gelen istek zaten bir yanıt aldığında, çakışma nedeniyle Yanıt eylemi "Başarısız" olarak işaretlenir. Sonuç olarak mantıksal uygulama çalıştırmanız da "Başarısız" durumuyla işaretlenir.
Eylem seçin
Bu eylem, belirtilen eşlemeyi temel alarak başka bir dizideki öğeleri dönüştürerek JSON nesneleriyle bir dizi oluşturur. Çıkış dizisi ve kaynak dizi her zaman aynı sayıda öğeye sahiptir. Çıkış dizisindeki nesne sayısını değiştiremeseniz de, bu nesneler arasında özellikleri ve bunların değerlerini ekleyebilir veya kaldırabilirsiniz. özelliği, select kaynak dizideki öğeleri dönüştürmek için eşlemeyi tanımlayan en az bir anahtar-değer çifti belirtir. Anahtar-değer çifti, çıkış dizisindeki tüm nesneler arasında bir özelliği ve değerini temsil eder.
"Select": {
"type": "Select",
"inputs": {
"from": <array>,
"select": {
"<key-name>": "<expression>",
"<key-name>": "<expression>"
}
},
"runAfter": {}
},
Required
| Value | Type | Description |
|---|---|---|
| < dizi> | Array | Kaynak öğeleri sağlayan dizi veya ifade. Bir ifadeyi çift tırnak içine aldığınızdan emin olun. Not: Kaynak dizi boşsa, eylem boş bir dizi oluşturur. |
| < anahtar-adı> | String |
<
sonucuna atanan özellik adı> Çıkış dizisindeki tüm nesnelere yeni bir özellik eklemek için, bu özellik için bir <anahtar-ad> ve özellik değeri için bir <ifade> sağlayın. Dizideki tüm nesnelerden bir özelliği kaldırmak için, o özelliğin <anahtar adını> atla. |
| < ifade> | String | Kaynak dizideki öğeyi dönüştüren ve sonucu <anahtar-ada atayan ifade> |
Select eylemi çıkış olarak bir dizi oluşturur, bu nedenle bu çıkışı kullanmak isteyen tüm eylemler bir diziyi kabul etmelidir veya diziyi tüketici eyleminin kabul eden türüne dönüştürmeniz gerekir. Örneğin, çıkış dizisini bir dizeye dönüştürmek için, bu diziyi Oluştur eylemine geçirebilir ve ardından diğer eylemlerinizde Oluştur eyleminin çıkışına başvurabilirsiniz.
Example
Bu eylem tanımı, bir tamsayı dizisinden bir JSON nesne dizisi oluşturur. Eylem kaynak dizide yinelenir, ifadeyi @item() kullanarak her tamsayı değerini alır ve her değeri her JSON nesnesindeki "number" özelliğine atar:
"Select": {
"type": "Select",
"inputs": {
"from": [ 1, 2, 3 ],
"select": {
"number": "@item()"
}
},
"runAfter": {}
},
Bu eylemin oluşturduğu dizi aşağıdadır:
[ { "number": 1 }, { "number": 2 }, { "number": 3 } ]
Bu dizi çıkışını diğer eylemlerde kullanmak için bu çıkışı Oluştur eylemine geçirin:
"Compose": {
"type": "Compose",
"inputs": "@body('Select')",
"runAfter": {
"Select": [ "Succeeded" ]
}
},
Ardından Oluştur eyleminin çıkışını diğer eylemlerinizde kullanabilirsiniz; örneğin, Office 365 Outlook - E-posta gönder eylemi:
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "@{outputs('Compose')}",
"Subject": "Output array from Select and Compose actions",
"To": "<your-email@domain>"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {
"Compose": [ "Succeeded" ]
}
},
Tablo İşlemi
Bu eylem bir diziden CSV veya HTML tablosu oluşturur. JSON nesneleri olan diziler için, bu eylem nesnelerin özellik adlarından sütun üst bilgilerini otomatik olarak oluşturur. Diğer veri türlerine sahip diziler için sütun üst bilgilerini ve değerlerini belirtmeniz gerekir. Örneğin, bu dizi, bu eylemin sütun üst bilgisi adları için kullanabileceği "ID" ve "Product_Name" özelliklerini içerir:
[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]
"Create_<CSV | HTML>_table": {
"type": "Table",
"inputs": {
"format": "<CSV | HTML>",
"from": <array>,
"columns": [
{
"header": "<column-name>",
"value": "<column-value>"
},
{
"header": "<column-name>",
"value": "<column-value>"
}
]
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| <CSV veya HTML> | String | Oluşturmak istediğiniz tablonun biçimi |
| < dizi> | Array | Tablo için kaynak öğeleri sağlayan dizi veya ifade Not: Kaynak dizi boşsa, eylem boş bir tablo oluşturur. |
Optional
Sütun üst bilgilerini ve değerlerini belirtmek veya özelleştirmek için dizisini columns kullanın. Çiftler aynı üst bilgi adına sahip olduğunda header-value , değerleri bu üst bilgi adının altında aynı sütunda görünür. Aksi takdirde, her benzersiz üst bilgi benzersiz bir sütun tanımlar.
| Value | Type | Description |
|---|---|---|
| < sütun-adı> | String | Sütunun üst bilgi adı |
| < sütun-değer> | Any | Bu sütundaki değer |
Örnek 1
Şu anda şu diziyi içeren bir "myItemArray" değişkeni oluşturduğunuzu varsayalım:
[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]
Bu eylem tanımı, "myItemArray" değişkeninden bir CSV tablosu oluşturur. özelliği tarafından from kullanılan ifade, işlevini kullanarak variables() diziyi "myItemArray" öğesinden alır:
"Create_CSV_table": {
"type": "Table",
"inputs": {
"format": "CSV",
"from": "@variables('myItemArray')"
},
"runAfter": {}
}
Bu eylemin oluşturduğu CSV tablosu aşağıdadır:
ID,Product_Name
0,Apples
1,Oranges
Örnek 2
Bu eylem tanımı, "myItemArray" değişkeninden bir HTML tablosu oluşturur. özelliği tarafından from kullanılan ifade, işlevini kullanarak variables() diziyi "myItemArray" öğesinden alır:
"Create_HTML_table": {
"type": "Table",
"inputs": {
"format": "HTML",
"from": "@variables('myItemArray')"
},
"runAfter": {}
}
Bu eylemin oluşturduğu HTML tablosu aşağıdadır:
| ID | Product_Name |
|---|---|
| 0 | Apples |
| 1 | Oranges |
Örnek 3
Bu eylem tanımı, "myItemArray" değişkeninden bir HTML tablosu oluşturur. Ancak, bu örnek varsayılan sütun üst bilgisi adlarını "Stock_ID" ve "Açıklama" ile geçersiz kılar ve "Description" sütunundaki değerlere "Organik" sözcüğünü ekler.
"Create_HTML_table": {
"type": "Table",
"inputs": {
"format": "HTML",
"from": "@variables('myItemArray')",
"columns": [
{
"header": "Stock_ID",
"value": "@item().ID"
},
{
"header": "Description",
"value": "@concat('Organic ', item().Product_Name)"
}
]
},
"runAfter": {}
},
Bu eylemin oluşturduğu HTML tablosu aşağıdadır:
| Stock_ID | Description |
|---|---|
| 0 | Organik Elmalar |
| 1 | Organik Portakallar |
Sonlandırma eylemi
Bu eylem bir iş akışı örneği için çalıştırmayı durdurur, devam eden eylemleri iptal eder, kalan eylemleri atlar ve belirtilen durumu döndürür. Örneğin, mantıksal uygulamanızın hata durumundan tamamen çıkması gerektiğinde Sonlandır eylemini kullanabilirsiniz. Bu eylem zaten tamamlanmış eylemleri etkilemez ve sıralı döngüler de dahil olmak üzere Foreach ve Until döngülerinin içinde görünmez.
"Terminate": {
"type": "Terminate",
"inputs": {
"runStatus": "<status>",
"runError": {
"code": "<error-code-or-name>",
"message": "<error-message>"
}
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < durum> | String | Çalıştırma için döndürülecek durum: "Başarısız", "İptal Edildi" veya "Başarılı" |
Optional
"runError" nesnesinin özellikleri yalnızca "runStatus" özelliği "Failed" durumuna ayarlandığında uygulanır.
| Value | Type | Description |
|---|---|---|
| < error-code-or-name> | String | Hatanın kodu veya adı |
| < hata iletisi> | String | Hatayı ve uygulamanın gerçekleştirebileceği eylemleri açıklayan ileti veya metin |
Example
Bu eylem tanımı bir iş akışı çalıştırmasını durdurur, çalıştırma durumunu "Başarısız" olarak ayarlar ve durumu, hata kodunu ve hata iletisini döndürür:
"Terminate": {
"type": "Terminate",
"inputs": {
"runStatus": "Failed",
"runError": {
"code": "Unexpected response",
"message": "The service received an unexpected response. Please try again."
}
},
"runAfter": {}
}
Bekleme eylemi
Bu eylem, iş akışı yürütmesini belirtilen aralık için veya belirtilen saate kadar duraklatır, ancak ikisini birden duraklatmaz.
Belirtilen aralık
"Delay": {
"type": "Wait",
"inputs": {
"interval": {
"count": <number-of-units>,
"unit": "<interval>"
}
},
"runAfter": {}
},
Belirtilen süre
"Delay_until": {
"type": "Wait",
"inputs": {
"until": {
"timestamp": "<date-time-stamp>"
}
},
"runAfter": {}
},
Required
| Value | Type | Description |
|---|---|---|
| < birim sayısı> | Integer | Gecikme eylemi için, bekliyecek birim sayısı |
| < ara> | String | Gecikme eylemi için bekleme aralığı: "Second", "Minute", "Hour", "Day", "Week", "Month" |
| < tarih-saat damgası> | String | Gecikme Süresi eylemi için yürütmenin sürdürülmesi için tarih ve saat. Bu değer UTC tarih saat biçimini kullanmalıdır. |
Örnek 1
Bu eylem tanımı iş akışını 15 dakika duraklatır:
"Delay": {
"type": "Wait",
"inputs": {
"interval": {
"count": 15,
"unit": "Minute"
}
},
"runAfter": {}
},
Örnek 2
Bu eylem tanımı, iş akışını belirtilen saate kadar duraklatır:
"Delay_until": {
"type": "Wait",
"inputs": {
"until": {
"timestamp": "2017-10-01T00:00:00Z"
}
},
"runAfter": {}
},
İş akışı eylemi
Bu eylem, daha önce oluşturulmuş başka bir mantıksal uygulamayı çağırır; bu da diğer mantıksal uygulama iş akışlarını dahil edip yeniden kullanabileceğiniz anlamına gelir. Alt mantıksal uygulamanın yanıt döndürmesi koşuluyla, iç içe mantıksal uygulamayı izleyen eylemlerde alt veya iç içe mantıksal uygulamanın çıkışlarını da kullanabilirsiniz.
Azure Logic Apps, çağırmak istediğiniz tetikleyiciye erişimi denetler, bu nedenle bu tetikleyiciye erişebildiğinizden emin olun. Ayrıca, iç içe mantıksal uygulamanın şu ölçütleri karşılaması gerekir:
Tetikleyici, iç içe mantıksal uygulamayı İstek veya HTTP tetikleyicisi gibi çağrılabilir hale getirir
Üst mantıksal uygulamanızla aynı Azure aboneliği
İç içe mantıksal uygulamanızdaki çıkışları üst mantıksal uygulamanızda kullanmak için, iç içe mantıksal uygulamanın bir Yanıt eylemi olmalıdır
"<nested-logic-app-name>": {
"type": "Workflow",
"inputs": {
"body": { "<body-content" },
"headers": { "<header-content>" },
"host": {
"triggerName": "<trigger-name>",
"workflow": {
"id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Logic/<nested-logic-app-name>"
}
}
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < nested-logic-app-name> | String | Çağırmak istediğiniz mantıksal uygulamanın adı |
| < tetikleyici-adı> | String | Çağırmak istediğiniz iç içe mantıksal uygulamadaki tetikleyicinin adı |
| < Azure-abonelik-kimliği> | String | İç içe mantıksal uygulamanın Azure abonelik kimliği |
| < Azure-resource-group> | String | İç içe mantıksal uygulamanın Azure kaynak grubu adı |
Optional
| Value | Type | Description |
|---|---|---|
| < üst bilgi içeriği> | JSON Nesnesi | Aramayla gönderilecek tüm üst bilgiler |
| < gövde içeriği> | JSON Nesnesi | Aramayla gönderilecek tüm ileti içeriği |
Outputs
Bu eylemin çıkışları, iç içe mantıksal uygulamanın Yanıt eylemine göre değişir. İç içe mantıksal uygulama bir Yanıt eylemi içermiyorsa çıkışlar boş olur.
Example
"Start_search" eylemi başarıyla tamamlandıktan sonra, bu iş akışı eylem tanımı belirtilen girişleri geçiren "Get_product_information" adlı başka bir mantıksal uygulamayı çağırır:
"actions": {
"Start_search": { <action-definition> },
"Get_product_information": {
"type": "Workflow",
"inputs": {
"body": {
"ProductID": "24601",
},
"host": {
"id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/InventoryManager-RG/providers/Microsoft.Logic/Get_product_information",
"triggerName": "Find_product"
},
"headers": {
"content-type": "application/json"
}
},
"runAfter": {
"Start_search": [ "Succeeded" ]
}
}
},
İş akışı eylemi ayrıntılarını denetleme
Foreach eylemi
Bu döngü eylemi bir dizide yinelenir ve her dizi öğesinde eylemler gerçekleştirir. Varsayılan olarak, "her biri için" döngüsü en fazla döngü sayısına kadar paralel olarak çalışır. Bu üst sınır için bkz. Sınırlar ve yapılandırma. "Her döngü için" oluşturma hakkında bilgi edinin.
"For_each": {
"type": "Foreach",
"actions": {
"<action-1>": { "<action-definition-1>" },
"<action-2>": { "<action-definition-2>" }
},
"foreach": "<for-each-expression>",
"runAfter": {},
"runtimeConfiguration": {
"concurrency": {
"repetitions": <count>
}
},
"operationOptions": "<operation-option>"
}
Required
| Value | Type | Description |
|---|---|---|
| < eylem-1... n> | String | Her dizi öğesinde çalışan eylemlerin adları |
| < eylem tanımı-1... n> | JSON Nesnesi | Çalışan eylemlerin tanımları |
| < her ifade için> | String | Belirtilen dizideki her öğeye başvuran ifade |
Optional
| Value | Type | Description |
|---|---|---|
| < saymak> | Integer | Varsayılan olarak, "her biri için" döngü yinelemeleri varsayılan sınıra kadar aynı anda (eşzamanlı veya paralel olarak) çalışır. Yeni < bir sayı> değeri ayarlayarak bu sınırı değiştirmek için bkz. "Her bir için" döngü eşzamanlılığını değiştirme. |
| < operation-option> | String | Bir "her biri için" döngüsünü paralel olarak değil sıralı olarak çalıştırmak için<> olarak veya Sequential<>, ancak ikisini birden değil1. Daha fazla bilgi için bkz . "Her döngü için" sırayla çalıştırma. |
Example
Bu "her öğe için" döngüsü, dizideki her öğe için gelen e-postanın eklerini içeren bir e-posta gönderir. Döngü, eki gözden geçiren bir kişiye eki de içeren bir e-posta gönderir.
"For_each": {
"type": "Foreach",
"actions": {
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"body": {
"Body": "@base64ToString(items('For_each')?['Content'])",
"Subject": "Review attachment",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"id": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
},
"foreach": "@triggerBody()?['Attachments']",
"runAfter": {}
}
Yalnızca tetikleyiciden çıkış olarak geçirilen bir dizi belirtmek için, bu ifade tetikleyici gövdesinden < dizisini alır>. Dizi yoksa hata oluşmasını önlemek için ifade şu ? işlecini kullanır:
@triggerBody()?['<array-name>']
If eylemi
Koşullu bir deyim olan bu eylem, koşulu temsil eden bir ifadeyi değerlendirir ve koşulun true veya false olmasına bağlı olarak farklı bir dal çalıştırır. Koşul true ise, koşul "Başarılı" durumuyla işaretlenir. Koşullu deyimleri oluşturmayı öğrenin.
"Condition": {
"type": "If",
"expression": { "<condition>" },
"actions": {
"<action-1>": { "<action-definition>" }
},
"else": {
"actions": {
"<action-2>": { "<action-definition" }
}
},
"runAfter": {}
}
| Value | Type | Description |
|---|---|---|
| < koşul> | JSON Nesnesi | Değerlendirilecek bir ifade olabilecek koşul |
| < eylem-1> | JSON Nesnesi | < true olarak değerlendirildiğinde > çalıştırılacak eylem |
| < eylem tanımı> | JSON Nesnesi | Eylemin tanımı |
| < eylem-2> | JSON Nesnesi | < false olarak değerlendirildiğinde > çalıştırılacak eylem |
veya actions nesnelerindeki else eylemler şu durumları alır:
- Çalıştırıldığında ve başarılı olduğunda "Başarılı"
- Çalıştırıldığında ve başarısız olduğunda "Başarısız"
- İlgili dal çalışmadığında "Atlandı"
Example
Bu koşul, tamsayı değişkeni sıfırdan büyük bir değere sahip olduğunda iş akışının bir web sitesini denetlediğini belirtir. Değişken sıfır veya daha azsa, iş akışı farklı bir web sitesini denetler.
"Condition": {
"type": "If",
"expression": {
"and": [ {
"greater": [ "@variables('myIntegerVariable')", 0 ]
} ]
},
"actions": {
"HTTP - Check this website": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "http://this-url"
},
"runAfter": {}
}
},
"else": {
"actions": {
"HTTP - Check this other website": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "http://this-other-url"
},
"runAfter": {}
}
}
},
"runAfter": {}
}
Koşullar ifadeleri nasıl kullanır?
Koşullarda ifadeleri nasıl kullanabileceğinizi gösteren bazı örnekler aşağıda verilmiştir:
| JSON | Result |
|---|---|
| "expression": "@parameters('<hasSpecialAction>')" | Yalnızca Boole ifadeleri için koşul, true olarak değerlendirilen herhangi bir değer için geçer. Diğer türleri Boole'a dönüştürmek için şu işlevleri kullanın: empty() veya equals(). |
| "expression": "@greater(actions('<action>').output.value, parameters('<threshold>'))" | Karşılaştırma işlevleri için eylem yalnızca eylemin çıktısı <>< değerinden >. |
| "expression": "@or(greater(actions('<action>').output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100))" | Mantıksal işlevler ve iç içe Boole ifadeleri oluşturmak için eylem, <> çıktısı < değerinden > fazla veya 100'ün altında olduğunda çalışır. |
| "expression": "@equals(length(actions('<action>').outputs.errors), 0)" | Dizinin herhangi bir öğesi olup olmadığını denetlemek için dizi işlevlerini kullanabilirsiniz. Eylem, dizi boş olduğunda errors çalışır. |
Kapsam eylemi
Bu eylem, eylemleri mantıksal olarak kapsamlar halinde gruplandırarak söz konusu kapsamdaki eylemlerin çalışması tamamlandıktan sonra kendi durumlarını alır. Ardından kapsamın durumunu kullanarak diğer eylemlerin çalıştırılıp çalıştırılmayacağını belirleyebilirsiniz. Kapsam oluşturmayı öğrenin.
"Scope": {
"type": "Scope",
"actions": {
"<inner-action-1>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
},
"<inner-action-2>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
}
}
}
Required
| Value | Type | Description |
|---|---|---|
| < iç eylem-1... n> | JSON Nesnesi | Kapsamın içinde çalışan bir veya daha fazla eylem |
| < eylem girişleri> | JSON Nesnesi | Her eylem için girişler |
Eylem değiştir
Switch deyimi olarak da bilinen bu eylem, diğer eylemleri servis talepleri halinde düzenler ve varsa varsayılan servis talebi dışında her servis talebine bir değer atar. İş akışınız çalıştırıldığında , Anahtar eylemi bir ifadeden, nesneden veya belirteçten gelen değeri her servis talebi için belirtilen değerlerle karşılaştırır. Anahtar eylemi eşleşen bir servis talebi bulursa, iş akışınız yalnızca bu servis talebine yönelik eylemleri çalıştırır. Anahtar eylemi her çalıştığında, yalnızca bir eşleşen servis talebi vardır veya eşleşme yoktur. Eşleşme yoksa , Değiştir eylemi varsayılan eylemleri çalıştırır. Switch deyimleri oluşturmayı öğrenin.
"Switch": {
"type": "Switch",
"expression": "<expression-object-or-token>",
"cases": {
"Case": {
"actions": {
"<action-name>": { "<action-definition>" }
},
"case": "<matching-value>"
},
"Case_2": {
"actions": {
"<action-name>": { "<action-definition>" }
},
"case": "<matching-value>"
}
},
"default": {
"actions": {
"<default-action-name>": { "<default-action-definition>" }
}
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < expression-object-or-token> | Varies | Değerlendirilecek ifade, JSON nesnesi veya belirteç |
| < eylem-adı> | String | Eşleşen büyük/küçük harf için çalıştırılacak eylemin adı |
| < eylem tanımı> | JSON Nesnesi | Eşleşen büyük/küçük harf için çalıştırılacak eylemin tanımı |
| < eşleşen değer> | Varies | Değerlendirilen sonuçla karşılaştırılan değer |
Optional
| Value | Type | Description |
|---|---|---|
| < default-action-name> | String | Eşleşen bir büyük/küçük harf olmadığında çalıştırılacak varsayılan eylemin adı |
| < default-action-definition> | JSON Nesnesi | Eşleşen bir büyük/küçük harf olmadığında çalıştırılacak eylemin tanımı |
Example
Bu eylem tanımı, onay isteği e-postasına yanıt veren kişinin "Onayla" seçeneğini mi yoksa "Reddet" seçeneğini mi seçtiğini değerlendirir. Bu seçime bağlı olarak , Anahtar eylemi, yanıtlayana başka bir e-posta göndermek ancak her durumda farklı ifadelerle eşleşen büyük/küçük harfe yönelik eylemleri çalıştırır.
"Switch": {
"type": "Switch",
"expression": "@body('Send_approval_email')?['SelectedOption']",
"cases": {
"Case": {
"actions": {
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"Body": "Thank you for your approval.",
"Subject": "Response received",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
},
"case": "Approve"
},
"Case_2": {
"actions": {
"Send_an_email_2": {
"type": "ApiConnection",
"inputs": {
"Body": "Thank you for your response.",
"Subject": "Response received",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
},
"case": "Reject"
}
},
"default": {
"actions": {
"Send_an_email_3": {
"type": "ApiConnection",
"inputs": {
"Body": "Please respond with either 'Approve' or 'Reject'.",
"Subject": "Please respond",
"To": "Sophie.Owen@contoso.com"
},
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "post",
"path": "/Mail"
},
"runAfter": {}
}
},
"runAfter": {
"Send_approval_email": [
"Succeeded"
]
}
}
Until eylemi
Bu döngü eylemi, belirtilen koşul doğru olana kadar çalışan eylemler içerir. Döngü, diğer tüm eylemler çalıştırıldıktan sonra son adım olarak koşulu denetler. Nesneye "actions" birden fazla eylem ekleyebilirsiniz ve eylemin en az bir sınır tanımlaması gerekir. "Until" döngüleri oluşturmayı öğrenin.
"Until": {
"type": "Until",
"actions": {
"<action-name>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
},
"<action-name>": {
"type": "<action-type>",
"inputs": { "<action-inputs>" },
"runAfter": {}
}
},
"expression": "<condition>",
"limit": {
"count": <loop-count>,
"timeout": "<loop-timeout>"
},
"runAfter": {}
}
| Value | Type | Description |
|---|---|---|
| < eylem-adı> | String | Döngü içinde çalıştırmak istediğiniz eylemin adı |
| < eylem türü> | String | Çalıştırmak istediğiniz eylem türü |
| < eylem girişleri> | Various | Eylemin çalıştırılacak girişleri |
| < koşul> | String | Döngüdeki tüm eylemler tamamlandıktan sonra değerlendirilecek koşul veya ifade |
| < döngü sayısı> | Integer | Eylemin çalıştırabileceği en fazla döngü sayısı sınırı. Varsayılan sınır ve maksimum sınır hakkında daha fazla bilgi için bkz . Azure Logic Apps için sınırlar ve yapılandırma. |
| < döngü zaman aşımı> | String | Döngünün çalıştırabileceği en uzun süre sınırı. Varsayılan timeout değer, PT1Hgerekli ISO 8601 biçimi olan değeridir. |
Note
İfade, Until döngüsündeki herhangi bir eylemin çıkışına bağlıysa, bu eylemden kaynaklanan hataları hesaba eklediğinizden emin olun.
Example
Bu döngü eylemi tanımı, aşağıdaki koşullardan biri karşılanıncaya kadar belirtilen URL'ye bir HTTP isteği gönderir:
- İstek, "200 Tamam" durum koduyla bir yanıt alır.
- Döngü 60 kez çalıştırılır.
- Döngü bir saat boyunca çalışır.
"Run_until_loop_succeeds_or_expires": {
"type": "Until",
"actions": {
"HTTP": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "http://myurl"
},
"runAfter": {}
}
},
"expression": "@equals(outputs('HTTP')['statusCode'], 200)",
"limit": {
"count": 60,
"timeout": "PT1H"
},
"runAfter": {}
}
Web kancaları ve abonelikler
Web kancası tabanlı tetikleyiciler ve eylemler düzenli olarak uç noktaları denetlemez, ancak bunun yerine bu uç noktalarda belirli olayları veya verileri bekler. Bu tetikleyiciler ve eylemler, uç noktanın yanıt gönderebileceği bir geri çağırma URL'si sağlayarak uç noktalara abone olabilir.
Çağrı subscribe , iş akışı herhangi bir şekilde değiştiğinde, örneğin kimlik bilgileri yenilendiğinde veya bir tetikleyici veya eylem için giriş parametreleri değiştiğinde gerçekleşir. Bu çağrı, standart HTTP eylemleriyle aynı parametreleri kullanır.
Çağrı, unsubscribe bir işlem tetikleyiciyi veya eylemi geçersiz hale getirdiğinde otomatik olarak gerçekleşir, örneğin:
- Tetikleyici siliniyor veya devre dışı bırakiliyor.
- İş akışını silme veya devre dışı bırakma.
- Aboneliği silme veya devre dışı bırakma.
Bu çağrıları desteklemek için ifade, @listCallbackUrl() tetikleyici veya eylem için benzersiz bir "geri çağırma URL'si" döndürür. Bu URL, hizmetin REST API'sini kullanan uç noktalar için benzersiz bir tanımlayıcıyı temsil eder. Bu işlevin parametreleri web kancası tetikleyicisi veya eylemiyle aynıdır.
Zaman uyumsuz süreyi değiştirme
Hem tetikleyiciler hem de eylemler için, özelliğini ekleyerek zaman uyumsuz desenin süresini belirli bir zaman aralığıyla limit.timeout sınırlayabilirsiniz. Bu şekilde, aralık atlandığında eylem tamamlanmamışsa, eylemin durumu kodla birlikte Cancelled olarak ActionTimedOut işaretlenir.
timeout özelliği ISO 8601 biçimini kullanır.
"<trigger-or-action-name>": {
"type": "Workflow | Webhook | Http | ApiConnectionWebhook | ApiConnection",
"inputs": {},
"limit": {
"timeout": "PT10S"
},
"runAfter": {}
}
Çalışma zamanı yapılandırma ayarları
Tetikleyici veya eylem tanımına bu runtimeConfiguration özellikleri ekleyerek tetikleyiciler ve eylemler için varsayılan çalışma zamanı davranışını değiştirebilirsiniz.
| Property | Type | Description | Tetikleyici veya eylem |
|---|---|---|---|
runtimeConfiguration.concurrency.runs |
Integer | Aynı anda (eşzamanlı veya paralel olarak) çalışabilen iş akışı örneği sayısı için varsayılan sınırı değiştirin. Bu değerin ayarlanması, arka uç sistemlerinin aldığı istek sayısını sınırlamaya yardımcı olabilir. özelliğini olarak runs ayarlamak, 1 özelliğini operationOptionsolarak ayarlamakla SingleInstance aynı şekilde çalışır. İki özelliği de ayarlayabilirsiniz, ancak ikisini birden ayarlayamayın. Varsayılan sınırı değiştirmek için bkz . Tetikleyici eşzamanlılığını değiştirme veya Tetikleyici örneklerini sırayla değiştirme. |
Tüm tetikleyiciler |
runtimeConfiguration.concurrency.maximumWaitingRuns |
Integer | Mantıksal uygulamanız zaten en fazla eşzamanlı örneği çalıştırırken çalışması için beklemesi gereken iş akışı örneği sayısıyla ilgili varsayılan sınırı değiştirin. Varsayılan sınırı değiştirmek için bkz . Bekleyen çalıştırma sınırını değiştirme. |
Tüm tetikleyiciler |
runtimeConfiguration.concurrency.repetitions |
Integer | Aynı anda (eşzamanlı veya paralel olarak) çalışabilen "her bir döngü yinelemesi için" sayısı üzerindeki varsayılan sınırı değiştirin. özelliğini olarak repetitions ayarlamak, 1 özelliğini operationOptionsolarak ayarlamakla SingleInstance aynı şekilde çalışır. İki özelliği de ayarlayabilirsiniz, ancak ikisini birden ayarlayamayın. Varsayılan sınırı değiştirmek için bkz . "Her bir için" eşzamanlılığını değiştirme veya "her için" döngülerini sırayla çalıştırma. |
Action: Foreach |
runtimeConfiguration.paginationPolicy.minimumItemCount |
Integer | Sayfalandırmayı destekleyen ve açık olan belirli eylemler için bu değer alınacak en az sonuç sayısını belirtir. Sayfalandırmayı açmak için bkz . Sayfalandırma kullanarak toplu veri, öğe veya sonuç alma |
Eylem: Çeşitli |
runtimeConfiguration.secureData.properties |
Array | Birçok tetikleyicide ve eylemde, bu ayarlar girişleri, çıkışları veya her ikisini de mantıksal uygulamanın çalıştırma geçmişinden gizler. Bu verileri koruma hakkında daha fazla bilgi edinmek için bkz . Çalıştırma geçmişinden girişleri ve çıkışları gizleme. |
Çoğu tetikleyici ve eylem |
runtimeConfiguration.staticResult |
JSON Nesnesi | Statik sonuç ayarını destekleyen ve açık olan eylemler için nesnenin staticResult şu öznitelikleri vardır: - name, mantıksal uygulama iş akışınızın staticResults özniteliğindeki özniteliğin içinde görünen geçerli eylemin definition statik sonuç tanımı adına başvurur. Daha fazla bilgi için bkz . Statik sonuçlar - İş Akışı Tanım Dili için şema başvurusu. - staticResultOptions, statik sonuçların Enabled geçerli eylem için olup olmadığını belirtir. Statik sonuçları açmak için bkz . Statik sonuçları ayarlayarak mantıksal uygulamaları sahte verilerle test etme |
Eylem: Çeşitli |
İşlem seçenekleri
Tetikleyici veya eylem tanımında özelliğiyle operationOptions tetikleyiciler ve eylemler için varsayılan davranışı değiştirebilirsiniz.
| İşlem seçeneği | Type | Description | Tetikleyici veya eylem |
|---|---|---|---|
DisableAsyncPattern |
String | HTTP tabanlı eylemleri zaman uyumsuz olarak değil zaman uyumlu olarak çalıştırın. Bu seçeneği ayarlamak için bkz . Eylemleri zaman uyumlu olarak çalıştırma. |
Actions: ApiConnection, HTTP, Response |
IncludeAuthorizationHeadersInOutputs |
String | İstek tabanlı bir tetikleyici uç noktasına gelen çağrılar için erişim yetkisi vermek üzere Microsoft Entra ID ile OAuth'u etkinleştiren mantıksal uygulamalar için, tetikleyici çıkışlarına OAuth erişim belirtecinden üst bilgiyi ekleyinAuthorization. Daha fazla bilgi için bkz . İstek tetikleyicisi çıkışlarına 'Yetkilendirme' üst bilgisini ekleme. |
Triggers: Request, HTTP Web Kancası |
Sequential |
String | "Her biri için" döngü yinelemelerini aynı anda paralel olarak çalıştırmak yerine birer birer çalıştırın. Bu seçenek, özelliğini runtimeConfiguration.concurrency.repetitionsolarak ayarlamakla 1 aynı şekilde çalışır. İki özelliği de ayarlayabilirsiniz, ancak ikisini birden ayarlayamayın. Bu seçeneği ayarlamak için bkz . "Her döngü için" sırayla çalıştırma. |
Action: Foreach |
SingleInstance |
String | Her mantıksal uygulama örneği için tetikleyiciyi sıralı olarak çalıştırın ve sonraki mantıksal uygulama örneğini tetiklemeden önce önceden etkin olan çalıştırmanın tamamlanmasını bekleyin. Bu seçenek, özelliğini runtimeConfiguration.concurrency.runsolarak ayarlamakla 1 aynı şekilde çalışır. İki özelliği de ayarlayabilirsiniz, ancak ikisini birden ayarlayamayın. Bu seçeneği ayarlamak için bkz . Örnekleri sırayla tetikleme. |
Tüm tetikleyiciler |
SuppressWorkflowHeaders |
String | Giden isteklerde meta veri üst bilgilerini göndermeyin x-ms-* . Varsayılan olarak, Azure Logic Apps giden isteklerin x-ms- bir parçası olarak üst bilgi adında önek içeren ek meta veri üst bilgileri içerir. Ancak bazı eski hizmetler, fazla bilinmeyen üst bilgiler içeren istekleri kabul etmez ve başarısız isteklerle sonuçlanır. |
Actions: HTTP, Function, APIManagement |
SuppressWorkflowHeadersOnResponse |
String | Gelen tetikleyici isteklerine yanıt olarak meta veri üst bilgileri göndermeyin x-ms-* . Varsayılan olarak, Azure Logic Apps üst bilgi adında önek içeren x-ms- ek meta veri üst bilgileri içeren gelen isteklere yanıt gönderir. Ancak bazı eski hizmetler, fazladan bilinmeyen üst bilgiler içeren istekleri veya yanıtları kabul etmez ve başarısız isteklerle sonuçlanır. |
Triggers: Request, HTTP Web Kancası |
Tetikleyici eşzamanlılığını değiştirme
Varsayılan olarak, mantıksal uygulama iş akışı örneklerinin tümü aynı anda (eşzamanlı veya paralel) çalışır. Bu davranış, her tetikleyici örneğinin daha önce etkin olan iş akışı örneğinin çalışması tamamlanmadan önce tetiklendiğini gösterir. Ancak, eşzamanlı olarak çalışan örneklerin sayısı varsayılan bir sınıra sahiptir. Eşzamanlı olarak çalışan iş akışı örneklerinin sayısı bu sınıra ulaştığında, diğer tüm yeni örneklerin çalıştırılmasını beklemesi gerekir. Bu sınır, arka uç sistemlerinin aldığı istek sayısını denetlemeye yardımcı olur.
Tetikleyicinin eşzamanlılık denetimini açtığınızda, tetikleyici örnekleri varsayılan sınıra kadar paralel olarak çalışır. Bu varsayılan eşzamanlılık sınırını değiştirmek için kod görünümü düzenleyicisini veya iş akışı tasarımcısını kullanabilirsiniz çünkü eşzamanlılık ayarını tasarımcı aracılığıyla değiştirmek, temel tetikleyici tanımında özelliği ekler veya güncelleştirir runtimeConfiguration.concurrency.runs ve bunun tersi de geçerlidir. Bu özellik, paralel olarak çalışabilecek en fazla yeni iş akışı örneği sayısını denetler.
Tetikleyicide eşzamanlılığı etkinleştirmeden önce aşağıdaki noktaları gözden geçirin:
Eşzamanlılık denetimini etkinleştirdikten sonra eşzamanlılığı devre dışı bırakamazsınız.
Eşzamanlı tetikleyici çalıştırma sayısı üst sınırı paralellik derecesine ulaşırsa, sonraki tetikleyici çalıştırmaları azaltma veya "429 - Çok fazla istek" hatasıyla karşılaşabilir. 429 hatalarını işleyen bir yeniden deneme ilkesi ayarlarsanız tetikleyici, yeni tetikleyici isteklerini işlemede uzun gecikmelere neden olan bir yeniden deneme ve azaltma davranışı döngüsüyle karşılaşabilir.
Eşzamanlılık etkinleştirildiğinde, diziler için ayırma sınırı önemli ölçüde azaltılır. Öğe sayısı bu sınırı aşarsa Bölme özelliği devre dışı bırakılır.
Eşzamanlılık etkinleştirildiğinde, uzun süre çalışan bir mantıksal uygulama örneği yeni mantıksal uygulama örneklerinin bekleme durumuna girmesine neden olabilir. Bu durum, Azure Logic Apps'in yeni örnekler oluşturmasını engeller ve eşzamanlı çalıştırma sayısı belirtilen en fazla eşzamanlı çalıştırma sayısından az olduğunda bile gerçekleşir.
Bu durumu kesintiye uğratmak için , çalışmaya devam eden en eski örnekleri iptal edin.
Mantıksal uygulamanızın menüsünde Genel Bakış'ı seçin.
Çalıştırma geçmişi bölümünde, çalışmaya devam eden en eski örneği seçin, örneğin:
Tip
Yalnızca çalışmakta olan örnekleri görüntülemek için Tümü listesini açın ve Çalışıyor'ı seçin.
Mantıksal uygulama çalıştırma'nın altında Çalıştırmayı iptal et'i seçin.
Bu olasılığı geçici olarak çözmek için, bu çalıştırmaları tutabilecek herhangi bir eyleme zaman aşımı ekleyin. Kod düzenleyicisinde çalışıyorsanız bkz . Zaman uyumsuz süreyi değiştirme. Aksi takdirde, tasarımcıyı kullanıyorsanız şu adımları izleyin:
Mantıksal uygulama iş akışınızda, zaman aşımı eklemek istediğiniz eylemi seçin. Eylemin sağ üst köşesinde üç nokta (...) düğmesini ve ardından Ayarlar'ı seçin.
Zaman Aşımı'nın altında, iso 8601 biçiminde zaman aşımı süresini belirtin.
Mantıksal uygulamanızı sırayla çalıştırmak için kod görünümü düzenleyicisini veya tasarımcıyı kullanarak tetikleyicinin eşzamanlılığını
1olarak ayarlayın. TetikleyicininoperationOptionsözelliğiniSingleInstancekod görünümü düzenleyicisinde olarak ayarlamadığınızdan emin olun. Aksi takdirde doğrulama hatası alırsınız. Daha fazla bilgi için bkz . Örnekleri sırayla tetikleme.
Kod görünümünde düzenleme
Temel tetikleyici tanımında özelliğini ekleyin runtimeConfiguration.concurrency.runs ve tetikleyici eşzamanlılık sınırlarına göre değeri ayarlayın. İş akışınızı sırayla çalıştırmak için özellik değerini olarak 1ayarlayın.
Bu örnek eşzamanlı çalıştırmaları 10 örnekle sınırlar:
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"runtimeConfiguration": {
"concurrency": {
"runs": 10
}
}
}
Daha fazla bilgi için bkz . Çalışma zamanı yapılandırma ayarları.
İş akışı tasarımcısında düzenleme
Tetikleyicinin sağ üst köşesinde üç nokta (...) düğmesini ve ardından Ayarlar'ı seçin.
Eşzamanlılık Denetimi'nin altında Sınır'ı Açık olarak ayarlayın.
Paralellik Derecesi kaydırıcısını istediğiniz değere sürükleyin. Mantıksal uygulamanızı sırayla çalıştırmak için kaydırıcı değerini 1'e sürükleyin.
"Her bir için" eşzamanlılığını değiştirme
Varsayılan olarak, "her biri için" döngü yinelemelerinin tümü aynı anda (eşzamanlı veya paralel olarak) çalışır. Bu davranış, önceki yinelemenin çalışması tamamlanmadan önce her yinelemenin çalışmaya başladığı anlamına gelir. Ancak, eşzamanlı olarak çalışan yinelemelerin sayısı varsayılan bir sınıra sahiptir. Eşzamanlı olarak çalışan yinelemelerin sayısı bu sınıra ulaştığında, diğer yinelemelerin çalıştırılmasını beklemesi gerekir.
Varsayılan sınırı değiştirmek için kod görünümü düzenleyicisini veya iş akışı tasarımcısını kullanabilirsiniz çünkü eşzamanlılık ayarını tasarımcı aracılığıyla değiştirmek, temel alınan "her biri için" eylem tanımında özelliği ekler veya güncelleştirir runtimeConfiguration.concurrency.repetitions ve bunun tersi de geçerlidir. Bu özellik, paralel olarak çalışabilecek en fazla yineleme sayısını denetler.
Note
"Her eylem için" eylemini tasarımcıyı veya kod görünümü düzenleyicisini kullanarak sırayla çalışacak şekilde ayarlarsanız, eylemin operationOptions özelliğini kod görünümü düzenleyicisinde olarak Sequential ayarlamayın. Aksi takdirde doğrulama hatası alırsınız. Daha fazla bilgi için bkz . "Her döngü için" sırayla çalıştırma.
Kod görünümünde düzenleme
Temel alınan "her bir için" tanımında runtimeConfiguration.concurrency.repetitions ve arasında bir 150değere sahip olabilecek özelliğini ekleyin veya güncelleştirin.
Eş zamanlı çalıştırmaları 10 yinelemeyle sınırlayan bir örnek aşağıda verilmiştir:
"For_each" {
"type": "Foreach",
"actions": { "<actions-to-run>" },
"foreach": "<for-each-expression>",
"runAfter": {},
"runtimeConfiguration": {
"concurrency": {
"repetitions": 10
}
}
}
Daha fazla bilgi için bkz . Çalışma zamanı yapılandırma ayarları.
İş akışı tasarımcısında düzenleme
Her eylem için'in sağ üst köşesindeki üç nokta (...) düğmesini ve ardından Ayarlar'ı seçin.
Eşzamanlılık Denetimi'nin altında Eşzamanlılık Denetimi'yiAçık olarak ayarlayın.
Paralellik Derecesi kaydırıcısını istediğiniz değere sürükleyin. Mantıksal uygulamanızı sırayla çalıştırmak için kaydırıcı değerini 1'e sürükleyin.
Bekleyen çalıştırma sınırını değiştirme
Varsayılan olarak, mantıksal uygulama iş akışı örneklerinin tümü aynı anda (eşzamanlı veya paralel) çalışır. Bu davranış, her tetikleyici örneğinin daha önce etkin olan iş akışı örneğinin çalışması tamamlanmadan önce tetiklendiğini gösterir. Ancak, eşzamanlı olarak çalışan iş akışı örneklerinin sayısında varsayılan bir sınır vardır. Eş zamanlı çalıştırma sayısı bu sınıra ulaştığında, diğer tüm yeni iş akışı örneklerinin çalıştırılmasını beklemesi gerekir. Bekleyen iş akışı örneklerinin sayısında da varsayılan bir sınır vardır. Bekleyen örneklerin sayısı bu sınıra ulaştığında Azure Logic Apps artık çalıştırılacak yeni iş akışı örneklerini kabul etmemektedir. İstek ve web kancası tetikleyicileri 429 döndürür - Çok fazla istek hatası ve yinelenen tetikleyiciler yoklama girişimlerini atlamaya başlar.
Tetikleyici eşzamanlılığında varsayılan sınırı ve bekleme çalıştırmalarında varsayılan sınırı değiştirebilirsiniz. Ancak bu değişiklik, eşzamanlılık nedeniyle baskıyı hafifletmek için öncelikle tetikleyiciyi yavaşlatır. Örneğin yoklama tetikleyiciniz varsa ve devam eden çalıştırmalar nedeniyle bekleme çalıştırmaları kuyruğu doluysa Azure Logic Apps yoklamayı durdurur. İş akışınız istek tabanlı tetikleyici kullanıyorsa ve bekleyen çalıştırmalar kuyruğu doluysa Azure Logic Apps 429 hatasını döndürmeye başlar. Azure Logic Apps'in hatalara neden olmadan tetikleyicinin yoklamasını durduramadığı ve çağrı çalıştırmalarında başarısız olmadan bu tür çalıştırmaları yine de bekleme çalıştırmaları kuyruğuna eklemeyi tercih ettiği bazı senaryolar vardır.
Temel tetikleyici tanımında, ile arasında bir runtimeConfiguration.concurrency.maximumWaitingRuns1değere sahip olabilecek özelliğini ekleyin100.
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"runtimeConfiguration": {
"concurrency": {
"maximumWaitingRuns": 50
}
}
}
Daha fazla bilgi için bkz . Çalışma zamanı yapılandırma ayarları.
Örnekleri sıralı olarak tetikleme
Her mantıksal uygulama iş akışı örneğini yalnızca önceki örnek çalışmasını tamamladıktan sonra çalıştırmak için tetikleyiciyi sırayla çalışacak şekilde ayarlayın. Kod görünümü düzenleyicisini veya iş akışı tasarımcısını kullanabilirsiniz çünkü eşzamanlılık ayarını tasarımcı aracılığıyla değiştirmek, temel tetikleyici tanımına özelliği de ekler veya güncelleştirir runtimeConfiguration.concurrency.runs ve bunun tersi de geçerlidir.
Note
Tasarımcıyı veya kod görünümü düzenleyicisini kullanarak sırayla çalışacak bir tetikleyici ayarladığınızda, tetikleyicinin operationOptions özelliğini Sequential kod görünümü düzenleyicisinde olarak ayarlamayın.
Aksi takdirde doğrulama hatası alırsınız.
Kod görünümünde düzenleme
Tetikleyici tanımında bu özelliklerden birini ayarlayın, ancak ikisini birden ayarlamayın.
özelliğini olarak runtimeConfiguration.concurrency.runs1ayarlayın:
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"runtimeConfiguration": {
"concurrency": {
"runs": 1
}
}
}
-or-
özelliğini olarak operationOptionsSingleInstanceayarlayın:
"<trigger-name>": {
"type": "<trigger-name>",
"recurrence": {
"frequency": "<time-unit>",
"interval": <number-of-time-units>,
},
"operationOptions": "SingleInstance"
}
Daha fazla bilgi için bkz . Çalışma zamanı yapılandırma ayarları ve İşlem seçenekleri.
İş akışı tasarımcısında düzenleme
Tetikleyicinin sağ üst köşesinde üç nokta (...) düğmesini ve ardından Ayarlar'ı seçin.
Eşzamanlılık Denetimi'nin altında Sınır'ı Açık olarak ayarlayın.
Paralellik Derecesi kaydırıcısını numarasına
1sürükleyin.
"Her bir döngü için" döngülerini sıralı olarak çalıştırma
Yalnızca önceki yinelemenin çalışması tamamlandıktan sonra "her biri için" döngü yinelemesini çalıştırmak için, "her biri için" eylemini sırayla çalışacak şekilde ayarlayın. Eylemin eşzamanlılığını tasarımcı aracılığıyla değiştirdiğinizden kod görünümü düzenleyicisini veya iş akışı tasarımcısını kullanabilirsiniz. Bunun nedeni, temel alınan eylem tanımına özelliği de ekler veya güncelleştirir runtimeConfiguration.concurrency.repetitions .
Note
Tasarımcıyı veya kod görünümü düzenleyicisini kullanarak "her eylem için" eylemini sırayla çalışacak şekilde ayarladığınızda, eylemin operationOptions özelliğini kod görünümü düzenleyicisinde olarak Sequential ayarlamayın.
Aksi takdirde doğrulama hatası alırsınız.
Kod görünümünde düzenleme
Eylem tanımında bu özelliklerden birini ayarlayın, ancak ikisini birden ayarlamayın.
özelliğini olarak runtimeConfiguration.concurrency.repetitions1ayarlayın:
"For_each" {
"type": "Foreach",
"actions": { "<actions-to-run>" },
"foreach": "<for-each-expression>",
"runAfter": {},
"runtimeConfiguration": {
"concurrency": {
"repetitions": 1
}
}
}
-or-
özelliğini olarak operationOptionsSequentialayarlayın:
"For_each" {
"type": "Foreach",
"actions": { "<actions-to-run>" },
"foreach": "<for-each-expression>",
"runAfter": {},
"operationOptions": "Sequential"
}
Daha fazla bilgi için bkz . Çalışma zamanı yapılandırma ayarları ve İşlem seçenekleri.
İş akışı tasarımcısında düzenleme
Her eylemin sağ üst köşesinde üç nokta (...) düğmesini ve ardından Ayarlar'ı seçin.
Eşzamanlılık Denetimi'nin altında Eşzamanlılık Denetimi'yiAçık olarak ayarlayın.
Paralellik Derecesi kaydırıcısını numarasına
1sürükleyin.
Eylemleri zaman uyumlu bir işlem düzeninde çalıştırma
Varsayılan olarak, Azure Logic Apps'teki HTTP eylemi ve APIConnection eylemleri standart zaman uyumsuz işlem desenini, Yanıt eylemi ise zaman uyumlu işlem desenini izler. Zaman uyumsuz desen, bir eylem belirtilen uç noktayı, hizmeti, sistemi veya API'yi çağırdıktan veya istek gönderdikten sonra alıcının hemen bir "202 KABUL EDİLEN" yanıtı döndürdüğünü belirtir. Bu kod, alıcının isteği kabul ettiğini ancak işlemeyi tamamlamadığını onaylar. Yanıt, alıcı işlemeyi durdurup location dışı başka bir yanıt döndürene kadar çağıranın sürekli yoklama yapmak veya zaman uyumsuz isteğin durumunu denetlemek için kullanabileceği URL'yi ve yenileme kimliğini belirten bir üst bilgi içerebilir. Daha fazla bilgi için bkz . Zaman uyumsuz mikro hizmet tümleştirmesi mikro hizmet özerkliğini zorlar.
Mantıksal Uygulama Tasarımcısı'nda HTTP eylemi, APIConnection eylemleri ve Yanıt eylemi Zaman Uyumsuz Desen ayarına sahiptir. Etkinleştirildiğinde, bu ayar çağıranın işlemin bitmesini beklemediğini ve sonraki eyleme geçebileceğini ancak işleme durdurulana kadar durumu denetlemeye devam ettiğini belirtir. Devre dışı bırakılırsa, bu ayar çağıranın bir sonraki eyleme geçmeden önce işlemin tamamlanmasını beklediğini belirtir. Bu ayarı bulmak için şu adımları izleyin:
HTTP eyleminin başlık çubuğunda, eylemin ayarlarını açan üç nokta (...) düğmesini seçin.
Zaman Uyumsuz Desen ayarını bulun.
Eylemin temel alınan JavaScript Nesne Gösterimi (JSON) tanımında HTTP eylemi ve APIConnection eylemleri zaman uyumsuz işlem desenini örtük olarak izler.
Bazı senaryolarda, bunun yerine bir eylemin zaman uyumlu deseni izlemesini isteyebilirsiniz. Örneğin, HTTP eylemini kullandığınızda şunları yapmak isteyebilirsiniz:
- Uzun süre çalışan görevler için HTTP zaman aşımlarından kaçının
- Konum üst bilgilerini denetlemeyi devre dışı bırakma
Bu gibi durumlarda, şu seçenekleri kullanarak bir eylemin zaman uyumlu bir şekilde çalıştırılmasını sağlayabilirsiniz:
Varsa, bu eylemin yoklama sürümünü bir web kancası sürümüyle değiştirin.
Herhangi bir seçeneği izleyerek eylemin zaman uyumsuz davranışını devre dışı bırakın:
Mantıksal Uygulama Tasarımcısı'nda Zaman Uyumsuz Desen ayarını kapatın.
Eylemin temel alınan JSON tanımına
"DisableAsyncPattern"işlem seçeneğini ekleyin.
Zaman Uyumsuz Desen ayarını kapatma
Mantıksal Uygulama Tasarımcısı'nda, eylemin başlık çubuğunda, eylemin ayarlarını açan üç nokta (...) düğmesini seçin.
Zaman Uyumsuz Desen ayarını bulun, etkinleştirildiyse ayarı Kapalı duruma getirin ve Bitti'yi seçin.
Eylemin JSON tanımında zaman uyumsuz deseni devre dışı bırakma
Eylemin temel alınan JSON tanımında , eylemin bölümünde "operationOptions" özelliğini"DisableAsyncPattern""inputs" ekleyin ve ayarlayın, örneğin:
"<some-long-running-action>": {
"type": "Http",
"inputs": { "<action-inputs>" },
"operationOptions": "DisableAsyncPattern",
"runAfter": {}
}
Tetikleyicilerin ve eylemlerin kimliğini doğrulama
HTTP ve HTTPS uç noktaları farklı kimlik doğrulama türlerini destekler. Bu uç noktalara erişmek için giden çağrılar veya istekler yapmak için kullandığınız tetikleyiciye veya eyleme bağlı olarak, farklı kimlik doğrulama türleri arasından seçim yapabilirsiniz. Daha fazla bilgi için bkz . Giden çağrılara kimlik doğrulaması ekleme.
Sonraki Adımlar
- İş Akışı Tanım Dili hakkında daha fazla bilgi edinin