Denetim noktasını ve paralel işlemeyi inceleme

Tamamlandı

İş akışları, kodunuz içinde karmaşık mantık uygulamanıza olanak tanır. İş akışlarıyla kullanılabilen iki özellik, denetim noktaları ve paralel işlemedir.

Denetim noktaları

Denetim noktası , iş akışının geçerli durumunun anlık görüntüsüdür.

Denetim noktaları, değişkenler için geçerli değeri ve bu noktaya kadar oluşturulan tüm çıkışları içerir. (Denetim noktasının ne olduğu hakkında daha fazla bilgi için denetim noktası web sayfasını okuyun.)

Bir iş akışı hatayla biterse veya askıya alınırsa, bir sonraki çalıştırmada iş akışının başında değil, son denetim noktasından başlar.

Checkpoint-Workflow etkinliğini kullanarak bir iş akışında denetim noktası ayarlayabilirsiniz.

Örneğin, Activity2'nin ardından bir özel durum oluşursa, iş akışı aşağıdaki örnek kodla sona erer.

İş akışı yeniden çalıştırıldığında Activity2 ile başlar ve son denetim noktası kümesinden hemen sonra izlenir.

    <Activity1>
        Checkpoint-Workflow
            <Activity2>
                <Exception>
            <Activity3>

Paralel işleme

Betik bloğu, tipik bir betikte olduğu gibi sıralı olarak değil eşzamanlı (veya paralel) çalışan birden çok komut içerir.

Paralel işleme olarak adlandırılır. (Paralel işleme hakkında daha fazla bilgi içinParalel işleme web sayfası.)

Aşağıdaki örnekte, iki vm0 ve vm1 VM eşzamanlı olarak başlatılır ve vm2 yalnızca vm0 ve vm1 başlatıldıktan sonra başlatılır.

    Parallel
    {
        Start-AzureRmVM -Name $vm0 -ResourceGroupName $rg 
        Start-AzureRmVM -Name $vm1 -ResourceGroupName $rg
    }

    Start-AzureRmVM -Name $vm2 -ResourceGroupName $rg 

Başka bir paralel işleme örneği, bazı ek seçenekler getiren aşağıdaki yapılar olabilir:

  • ForEach -Parallel. ForEach -Parallel yapısını kullanarak bir koleksiyondaki her öğeye yönelik komutları eşzamanlı olarak işleyebilirsiniz. Betik bloğundaki komutlar sırayla yürütülürken koleksiyondaki öğeler paralel olarak işlenir.

Aşağıdaki örnekte, Etkinlik1 koleksiyondaki tüm öğeler için aynı anda başlar.

Her öğe için Activity2, Activity1 tamamlandıktan sonra başlar. Activity3 yalnızca tüm öğeler için hem Activity1 hem de Activity2 tamamlandıktan sonra başlar.

  • ThrottleLimit - Paralelliği sınırlamak için ThrottleLimit parametresini kullanırız. Çok yüksek bir ThrottleLimit sorunlara neden olabilir. ThrottleLimit parametresi için ideal değer birkaç çevresel faktöre bağlıdır. Düşük bir ThrottleLimit değeriyle başlamayı deneyin ve ardından belirli koşullarınıza uygun bir değer bulana kadar değeri artırın:
ForEach -Parallel -ThrottleLimit 10 ($<item> in $<collection>)
{
    <Activity1>
    <Activity2>
}
<Activity3>

Bunun gerçek dünyadaki bir örneği aşağıdaki koda benzer olabilir: kopyalandıktan sonra her dosya için bir ileti görüntülenir. Yalnızca tüm dosyalar kopyalandıktan sonra tamamlama iletisi görüntülenir.

    Workflow Copy-Files
    {
        $files = @("C:\LocalPath\File1.txt","C:\LocalPath\File2.txt","C:\LocalPath\File3.txt")
   
        ForEach -Parallel -ThrottleLimit 10 ($File in $Files)
        {
            Copy-Item -Path $File -Destination \\NetworkPath
            Write-Output "$File copied."
        }
   
        Write-Output "All files copied."
    }