Aracılığıyla paylaş


Dayanıklı İşlevler'de alt düzenleme (Azure İşlevleri)

Orchestrator işlevleri, etkinlik işlevlerini çağırmaya ek olarak diğer orchestrator işlevlerini çağırabilir. Örneğin, daha küçük orchestrator işlevleri kitaplığından daha büyük bir düzenleme oluşturabilirsiniz. Veya bir orchestrator işlevinin birden çok örneğini paralel olarak çalıştırabilirsiniz.

Orchestrator işlevi, "call-sub-orchestrator" API'sini kullanarak başka bir orchestrator işlevini çağırabilir. Hata İşleme ve Telafi makalesinde otomatik yeniden deneme hakkında daha fazla bilgi bulunur.

Alt düzenleyici işlevleri, çağıranın perspektifinden etkinlik işlevleri gibi davranır. Bir değer döndürebilir, özel durum oluşturabilir ve üst düzenleyici işlevi tarafından beklenebilir.

Dekont

PowerShell'de alt düzenleme henüz desteklenmiyor.

Dekont

Azure İşlevleri için Node.js programlama modelinin 4. sürümü genel olarak kullanılabilir. Yeni v4 modeli, JavaScript ve TypeScript geliştiricileri için daha esnek ve sezgisel bir deneyime sahip olacak şekilde tasarlanmıştır. Geçiş kılavuzunda v3 ve v4 arasındaki farklar hakkında daha fazla bilgi edinin.

Aşağıdaki kod parçacıklarında JavaScript (PM4), yeni deneyim olan programlama modeli V4'i belirtir.

Örnek

Aşağıdaki örnekte, sağlanması gereken birden çok cihazın bulunduğu bir IoT ("Nesnelerin İnterneti") senaryosu gösterilmektedir. Aşağıdaki işlev, her cihaz için yürütülmesi gereken sağlama iş akışını temsil eder:

public static async Task DeviceProvisioningOrchestration(
    [OrchestrationTrigger] IDurableOrchestrationContext context)
{
    string deviceId = context.GetInput<string>();

    // Step 1: Create an installation package in blob storage and return a SAS URL.
    Uri sasUrl = await context.CallActivityAsync<Uri>("CreateInstallationPackage", deviceId);

    // Step 2: Notify the device that the installation package is ready.
    await context.CallActivityAsync("SendPackageUrlToDevice", Tuple.Create(deviceId, sasUrl));

    // Step 3: Wait for the device to acknowledge that it has downloaded the new package.
    await context.WaitForExternalEvent<bool>("DownloadCompletedAck");

    // Step 4: ...
}

Bu düzenleyici işlevi, tek seferlik cihaz sağlama için olduğu gibi kullanılabilir veya daha büyük bir düzenlemenin parçası olabilir. İkinci durumda, üst orchestrator işlevi "call-sub-orchestrator" API'sini DeviceProvisioningOrchestrationkullanarak örneklerini zamanlayabilir.

Birden çok düzenleyici işlevinin paralel olarak nasıl çalıştırıldığını gösteren bir örnek aşağıda verilmiştir.

[FunctionName("ProvisionNewDevices")]
public static async Task ProvisionNewDevices(
    [OrchestrationTrigger] IDurableOrchestrationContext context)
{
    string[] deviceIds = await context.CallActivityAsync<string[]>("GetNewDeviceIds");

    // Run multiple device provisioning flows in parallel
    var provisioningTasks = new List<Task>();
    foreach (string deviceId in deviceIds)
    {
        Task provisionTask = context.CallSubOrchestratorAsync("DeviceProvisioningOrchestration", deviceId);
        provisioningTasks.Add(provisionTask);
    }

    await Task.WhenAll(provisioningTasks);

    // ...
}

Dekont

Önceki C# örnekleri Dayanıklı İşlevler 2.x içindir. Dayanıklı İşlevler 1.x için yerine IDurableOrchestrationContextkullanmanız DurableOrchestrationContext gerekir. Sürümler arasındaki farklar hakkında daha fazla bilgi için Dayanıklı İşlevler sürümleri makalesine bakın.

Dekont

Alt düzenlemelerin üst düzenlemeyle aynı işlev uygulamasında tanımlanması gerekir. Başka bir işlev uygulamasında çağırmanız ve düzenleme beklemeniz gerekiyorsa, HTTP API'leri için yerleşik desteği ve HTTP 202 yoklama tüketici desenini kullanmayı göz önünde bulundurun. Daha fazla bilgi için HTTP Özellikleri konusuna bakın.

Sonraki adımlar