Cara: Menghosting Beberapa Versi Alur Kerja Secara Berdampingan

WorkflowIdentity menyediakan cara bagi pengembang aplikasi alur kerja untuk mengaitkan nama dan versi dengan definisi alur kerja, dan agar informasi ini dikaitkan dengan contoh alur kerja yang bertahan. Informasi identitas ini dapat digunakan oleh pengembang aplikasi alur kerja untuk mengaktifkan skenario seperti eksekusi berdampingan dari beberapa versi definisi alur kerja, dan menyediakan landasan untuk fungsionalitas lain seperti pembaruan dinamis. Langkah dalam tutorial ini menunjukkan cara menggunakan WorkflowIdentity untuk menghosting beberapa versi alur kerja secara bersamaan.

Dalam topik ini

Dalam langkah tutorial ini, aktivitas WriteLine dalam alur kerja dimodifikasi untuk memberikan informasi tambahan, dan aktivitas WriteLine baru ditambahkan. Salinan rakitan alur kerja asli disimpan, dan aplikasi host diperbarui sehingga dapat menjalankan alur kerja asli dan yang diperbarui secara bersamaan.

Catatan

Sebelum mengikuti langkah-langkah dalam topik ini, jalankan aplikasi, mulai beberapa alur kerja dari setiap jenis, dan buat satu atau dua tebakan untuk masing-masing. Alur kerja yang dipertahankan ini digunakan dalam langkah ini dan langkah berikut, Cara: Memperbarui Definisi Instans Alur Kerja yang Berjalan.

Untuk membuat salinan proyek NumberGuessWorkflowActivities

  1. Buka solusi WF45GettingStartedTutorial di Visual Studio 2012 jika tidak terbuka.

  2. Tekan CTRL+SHIFT+B untuk membangun solusi.

  3. Tutup solusi WF45GettingStartedTutorial.

  4. Buka Windows Explorer dan buka folder tempat file solusi tutorial dan folder proyek berada.

  5. Buat folder baru bernama PreviousVersions di folder yang sama dengan NumberGuessWorkflowHost dan NumberGuessWorkflowActivities. Folder ini digunakan untuk menampung rakitan yang berisi berbagai versi alur kerja yang digunakan dalam langkah-langkah tutorial berikutnya.

  6. Buka folder NumberGuessWorkflowActivities\bin\debug (atau bin\release bergantung pada pengaturan proyek Anda). Salin NumberGuessWorkflowActivities.dll dan tempelkan ke folder PreviousVersions.

  7. Ganti nama NumberGuessWorkflowActivities.dll di folder PreviousVersions menjadi NumberGuessWorkflowActivities_v1.dll.

    Catatan

    Langkah-langkah dalam topik ini menunjukkan salah satu cara untuk mengelola rakitan yang digunakan untuk berisi beberapa versi alur kerja. Metode lain seperti penamaan yang kuat rakitan dan mendaftarkannya di singgahan perakitan global juga dapat digunakan.

  8. Buat folder baru bernama NumberGuessWorkflowActivities_du di folder yang sama dengan NumberGuessWorkflowHost, NumberGuessWorkflowActivities, dan folder PreviousVersions yang baru ditambahkan, dan salin semua file dan subfolder dari folder NumberGuessWorkflowActivities ke folder NumberGuessWorkflowActivities_du baru. Salinan cadangan proyek untuk versi awal aktivitas ini digunakan dalam Cara: Memperbarui Definisi Instans Alur Kerja yang Berjalan.

  9. Buka kembali solusi WF45GettingStartedTutorial di Visual Studio 2012.

Untuk memperbarui alur kerja

Di bagian ini, definisi alur kerja diperbarui. Dua aktivitas WriteLine yang memberikan umpan balik tentang tebakan pengguna diperbarui, dan aktivitas WriteLine baru ditambahkan yang memberikan informasi tambahan tentang permainan setelah jumlahnya ditebak.

Untuk memperbarui alur kerja StateMachine

  1. Di Penjelajah Solusi, pada proyek NumberGuessWorkflowActivities, klik dua kali StateMachineNumberGuessWorkflow.xaml.

  2. Klik dua kali transisi Tebak Salah pada mesin status.

  3. Perbarui Text dari WriteLine di sebelah paling kiri dalam aktivitas If.

    Guess & " is too low."
    
    Guess + " is too low."
    
  4. Perbarui Text dari WriteLine di sebelah paling kanan dalam aktivitas If.

    Guess & " is too high."
    
    Guess + " is too high."
    
  5. Kembali ke tampilan mesin status keseluruhan di perancang alur kerja dengan mengklik StateMachine di tampilan breadcrumb di bagian atas perancang alur kerja.

  6. Klik dua kali transisi Tebak Benar pada mesin status.

  7. Seret aktivitas WriteLine dari bagian Primitives di Toolbox dan letakkan di label Aktivitas Drop Action di sini pada transisi.

  8. Ketik ekspresi berikut ke dalam kotak properti Text.

    Guess & " is correct. You guessed it in " & Turns & " turns."
    
    Guess + " is correct. You guessed it in " + Turns + " turns."
    

Untuk memperbarui alur kerja Diagram alur

  1. Di Penjelajah Solusi, pada proyek NumberGuessWorkflowActivities, klik dua kali FlowchartNumberGuessWorkflow.xaml.

  2. Perbarui Text dari aktivitas WriteLine paling kiri.

    Guess & " is too low."
    
    Guess + " is too low."
    
  3. Perbarui Text dari aktivitas WriteLine paling kanan.

    Guess & " is too high."
    
    Guess + " is too high."
    
  4. Seret aktivitas WriteLine dari bagian Primitives di Toolbox dan letakkan di titik lepas tindakan True di FlowDecision paling atas. Aktivitas WriteLine ditambahkan ke diagram alur dan ditautkan ke tindakan True dari FlowDecision.

  5. Ketik ekspresi berikut ke dalam kotak properti Text.

    Guess & " is correct. You guessed it in " & Turns & " turns."
    
    Guess + " is correct. You guessed it in " + Turns + " turns."
    

Untuk memperbarui alur kerja Berurutan

  1. Di Penjelajah Solusi, pada proyek NumberGuessWorkflowActivities, klik dua kali SequentialNumberGuessWorkflow.xaml.

  2. Perbarui Text dari WriteLine di sebelah paling kiri dalam aktivitas If.

    Guess & " is too low."
    
    Guess + " is too low."
    
  3. Perbarui Text dari aktivitas WriteLine paling kanan di aktivitas If.

    Guess & " is too high."
    
    Guess + " is too high."
    
  4. Seret aktivitas WriteLine dari bagian Primitives di Toolbox dan lepaskan setelah aktivitas DoWhile sehingga WriteLine adalah aktivitas terakhir dalam aktivitas root Sequence.

  5. Ketik ekspresi berikut ke dalam kotak properti Text.

    Guess & " is correct. You guessed it in " & Turns & " turns."
    
    Guess + " is correct. You guessed it in " + Turns + " turns."
    

Untuk memperbarui WorkflowVersionMap guna menyertakan versi alur kerja sebelumnya

  1. Klik dua kali WorkflowVersionMap.cs (atau WorkflowVersionMap.vb) pada proyek NumberGuessWorkflowHost untuk membukanya.

  2. Tambahkan pernyataan using (atau Imports) berikut ke bagian atas file dengan pernyataan using (atau Imports) lainnya.

    Imports System.Reflection
    Imports System.IO
    
    using System.Reflection;
    using System.IO;
    
  3. Tambahkan tiga identitas alur kerja baru tepat di bawah tiga deklarasi identitas alur kerja yang ada. Identitas alur kerja v1 baru ini akan digunakan untuk memberikan definisi alur kerja yang benar untuk alur kerja yang dimulai sebelum pembaruan dibuat.

    'Current version identities.
    Public StateMachineNumberGuessIdentity As WorkflowIdentity
    Public FlowchartNumberGuessIdentity As WorkflowIdentity
    Public SequentialNumberGuessIdentity As WorkflowIdentity
    
    'v1 Identities.
    Public StateMachineNumberGuessIdentity_v1 As WorkflowIdentity
    Public FlowchartNumberGuessIdentity_v1 As WorkflowIdentity
    Public SequentialNumberGuessIdentity_v1 As WorkflowIdentity
    
    // Current version identities.
    static public WorkflowIdentity StateMachineNumberGuessIdentity;
    static public WorkflowIdentity FlowchartNumberGuessIdentity;
    static public WorkflowIdentity SequentialNumberGuessIdentity;
    
    // v1 identities.
    static public WorkflowIdentity StateMachineNumberGuessIdentity_v1;
    static public WorkflowIdentity FlowchartNumberGuessIdentity_v1;
    static public WorkflowIdentity SequentialNumberGuessIdentity_v1;
    
  4. Di konstruktor WorkflowVersionMap, perbarui properti Version dari tiga identitas alur kerja saat ini ke 2.0.0.0.

    'Add the current workflow version identities.
    StateMachineNumberGuessIdentity = New WorkflowIdentity With
    {
        .Name = "StateMachineNumberGuessWorkflow",
        .Version = New Version(2, 0, 0, 0)
    }
    
    FlowchartNumberGuessIdentity = New WorkflowIdentity With
    {
        .Name = "FlowchartNumberGuessWorkflow",
        .Version = New Version(2, 0, 0, 0)
    }
    
    SequentialNumberGuessIdentity = New WorkflowIdentity With
    {
        .Name = "SequentialNumberGuessWorkflow",
        .Version = New Version(2, 0, 0, 0)
    }
    
    map.Add(StateMachineNumberGuessIdentity, New StateMachineNumberGuessWorkflow())
    map.Add(FlowchartNumberGuessIdentity, New FlowchartNumberGuessWorkflow())
    map.Add(SequentialNumberGuessIdentity, New SequentialNumberGuessWorkflow())
    
    // Add the current workflow version identities.
    StateMachineNumberGuessIdentity = new WorkflowIdentity
    {
        Name = "StateMachineNumberGuessWorkflow",
        // Version = new Version(1, 0, 0, 0),
        Version = new Version(2, 0, 0, 0)
    };
    
    FlowchartNumberGuessIdentity = new WorkflowIdentity
    {
        Name = "FlowchartNumberGuessWorkflow",
        // Version = new Version(1, 0, 0, 0),
        Version = new Version(2, 0, 0, 0)
    };
    
    SequentialNumberGuessIdentity = new WorkflowIdentity
    {
        Name = "SequentialNumberGuessWorkflow",
        // Version = new Version(1, 0, 0, 0),
        Version = new Version(2, 0, 0, 0)
    };
    
    map.Add(StateMachineNumberGuessIdentity, new StateMachineNumberGuessWorkflow());
    map.Add(FlowchartNumberGuessIdentity, new FlowchartNumberGuessWorkflow());
    map.Add(SequentialNumberGuessIdentity, new SequentialNumberGuessWorkflow());
    

    Kode di dalamnya menambahkan versi alur kerja saat ini ke kamus menggunakan versi saat ini yang direferensikan dalam proyek. Dengan begitu, kode yang menginisialisasi definisi alur kerja tidak perlu diperbarui.

  5. Tambahkan kode berikut di konstruktor tepat setelah kode yang menambahkan versi saat ini ke kamus.

    'Initialize the previous workflow version identities.
    StateMachineNumberGuessIdentity_v1 = New WorkflowIdentity With
    {
        .Name = "StateMachineNumberGuessWorkflow",
        .Version = New Version(1, 0, 0, 0)
    }
    
    FlowchartNumberGuessIdentity_v1 = New WorkflowIdentity With
    {
        .Name = "FlowchartNumberGuessWorkflow",
        .Version = New Version(1, 0, 0, 0)
    }
    
    SequentialNumberGuessIdentity_v1 = New WorkflowIdentity With
    {
        .Name = "SequentialNumberGuessWorkflow",
        .Version = New Version(1, 0, 0, 0)
    }
    
    // Initialize the previous workflow version identities.
    StateMachineNumberGuessIdentity_v1 = new WorkflowIdentity
    {
        Name = "StateMachineNumberGuessWorkflow",
        Version = new Version(1, 0, 0, 0)
    };
    
    FlowchartNumberGuessIdentity_v1 = new WorkflowIdentity
    {
        Name = "FlowchartNumberGuessWorkflow",
        Version = new Version(1, 0, 0, 0)
    };
    
    SequentialNumberGuessIdentity_v1 = new WorkflowIdentity
    {
        Name = "SequentialNumberGuessWorkflow",
        Version = new Version(1, 0, 0, 0)
    };
    

    Identitas alur kerja ini dikaitkan dengan versi awal dari definisi alur kerja yang sesuai.

  6. Selanjutnya, muat rakitan yang berisi versi awal definisi alur kerja, dan buat serta tambahkan definisi alur kerja yang sesuai ke kamus.

    'Add the previous version workflow identities to the dictionary along with
    'the corresponding workflow definitions loaded from the v1 assembly.
    'Assembly.LoadFile requires an absolute path so convert this relative path
    'to an absolute path.
    Dim v1AssemblyPath As String = "..\..\..\PreviousVersions\NumberGuessWorkflowActivities_v1.dll"
    v1AssemblyPath = Path.GetFullPath(v1AssemblyPath)
    Dim v1Assembly As Assembly = Assembly.LoadFile(v1AssemblyPath)
    
    map.Add(StateMachineNumberGuessIdentity_v1,
        v1Assembly.CreateInstance("NumberGuessWorkflowActivities.StateMachineNumberGuessWorkflow"))
    
    map.Add(SequentialNumberGuessIdentity_v1,
        v1Assembly.CreateInstance("NumberGuessWorkflowActivities.SequentialNumberGuessWorkflow"))
    
    map.Add(FlowchartNumberGuessIdentity_v1,
        v1Assembly.CreateInstance("NumberGuessWorkflowActivities.FlowchartNumberGuessWorkflow"))
    
    // Add the previous version workflow identities to the dictionary along with
    // the corresponding workflow definitions loaded from the v1 assembly.
    // Assembly.LoadFile requires an absolute path so convert this relative path
    // to an absolute path.
    string v1AssemblyPath = @"..\..\..\PreviousVersions\NumberGuessWorkflowActivities_v1.dll";
    v1AssemblyPath = Path.GetFullPath(v1AssemblyPath);
    Assembly v1Assembly = Assembly.LoadFile(v1AssemblyPath);
    
    map.Add(StateMachineNumberGuessIdentity_v1,
        v1Assembly.CreateInstance("NumberGuessWorkflowActivities.StateMachineNumberGuessWorkflow") as Activity);
    
    map.Add(SequentialNumberGuessIdentity_v1,
        v1Assembly.CreateInstance("NumberGuessWorkflowActivities.SequentialNumberGuessWorkflow") as Activity);
    
    map.Add(FlowchartNumberGuessIdentity_v1,
        v1Assembly.CreateInstance("NumberGuessWorkflowActivities.FlowchartNumberGuessWorkflow") as Activity);
    

    Contoh berikut adalah daftar lengkap untuk kelas WorkflowVersionMap yang diperbarui.

    Public Module WorkflowVersionMap
        Dim map As Dictionary(Of WorkflowIdentity, Activity)
    
        'Current version identities.
        Public StateMachineNumberGuessIdentity As WorkflowIdentity
        Public FlowchartNumberGuessIdentity As WorkflowIdentity
        Public SequentialNumberGuessIdentity As WorkflowIdentity
    
        'v1 Identities.
        Public StateMachineNumberGuessIdentity_v1 As WorkflowIdentity
        Public FlowchartNumberGuessIdentity_v1 As WorkflowIdentity
        Public SequentialNumberGuessIdentity_v1 As WorkflowIdentity
    
        Sub New()
            map = New Dictionary(Of WorkflowIdentity, Activity)
    
            'Add the current workflow version identities.
            StateMachineNumberGuessIdentity = New WorkflowIdentity With
            {
                .Name = "StateMachineNumberGuessWorkflow",
                .Version = New Version(2, 0, 0, 0)
            }
    
            FlowchartNumberGuessIdentity = New WorkflowIdentity With
            {
                .Name = "FlowchartNumberGuessWorkflow",
                .Version = New Version(2, 0, 0, 0)
            }
    
            SequentialNumberGuessIdentity = New WorkflowIdentity With
            {
                .Name = "SequentialNumberGuessWorkflow",
                .Version = New Version(2, 0, 0, 0)
            }
    
            map.Add(StateMachineNumberGuessIdentity, New StateMachineNumberGuessWorkflow())
            map.Add(FlowchartNumberGuessIdentity, New FlowchartNumberGuessWorkflow())
            map.Add(SequentialNumberGuessIdentity, New SequentialNumberGuessWorkflow())
    
            'Initialize the previous workflow version identities.
            StateMachineNumberGuessIdentity_v1 = New WorkflowIdentity With
            {
                .Name = "StateMachineNumberGuessWorkflow",
                .Version = New Version(1, 0, 0, 0)
            }
    
            FlowchartNumberGuessIdentity_v1 = New WorkflowIdentity With
            {
                .Name = "FlowchartNumberGuessWorkflow",
                .Version = New Version(1, 0, 0, 0)
            }
    
            SequentialNumberGuessIdentity_v1 = New WorkflowIdentity With
            {
                .Name = "SequentialNumberGuessWorkflow",
                .Version = New Version(1, 0, 0, 0)
            }
    
            'Add the previous version workflow identities to the dictionary along with
            'the corresponding workflow definitions loaded from the v1 assembly.
            'Assembly.LoadFile requires an absolute path so convert this relative path
            'to an absolute path.
            Dim v1AssemblyPath As String = "..\..\..\PreviousVersions\NumberGuessWorkflowActivities_v1.dll"
            v1AssemblyPath = Path.GetFullPath(v1AssemblyPath)
            Dim v1Assembly As Assembly = Assembly.LoadFile(v1AssemblyPath)
    
            map.Add(StateMachineNumberGuessIdentity_v1,
                v1Assembly.CreateInstance("NumberGuessWorkflowActivities.StateMachineNumberGuessWorkflow"))
    
            map.Add(SequentialNumberGuessIdentity_v1,
                v1Assembly.CreateInstance("NumberGuessWorkflowActivities.SequentialNumberGuessWorkflow"))
    
            map.Add(FlowchartNumberGuessIdentity_v1,
                v1Assembly.CreateInstance("NumberGuessWorkflowActivities.FlowchartNumberGuessWorkflow"))
        End Sub
    
        Public Function GetWorkflowDefinition(identity As WorkflowIdentity) As Activity
            Return map(identity)
        End Function
    
        Public Function GetIdentityDescription(identity As WorkflowIdentity) As String
            Return identity.ToString()
        End Function
    End Module
    
    public static class WorkflowVersionMap
    {
        static Dictionary<WorkflowIdentity, Activity> map;
    
        // Current version identities.
        static public WorkflowIdentity StateMachineNumberGuessIdentity;
        static public WorkflowIdentity FlowchartNumberGuessIdentity;
        static public WorkflowIdentity SequentialNumberGuessIdentity;
    
        // v1 identities.
        static public WorkflowIdentity StateMachineNumberGuessIdentity_v1;
        static public WorkflowIdentity FlowchartNumberGuessIdentity_v1;
        static public WorkflowIdentity SequentialNumberGuessIdentity_v1;
    
        static WorkflowVersionMap()
        {
            map = new Dictionary<WorkflowIdentity, Activity>();
    
            // Add the current workflow version identities.
            StateMachineNumberGuessIdentity = new WorkflowIdentity
            {
                Name = "StateMachineNumberGuessWorkflow",
                // Version = new Version(1, 0, 0, 0),
                Version = new Version(2, 0, 0, 0)
            };
    
            FlowchartNumberGuessIdentity = new WorkflowIdentity
            {
                Name = "FlowchartNumberGuessWorkflow",
                // Version = new Version(1, 0, 0, 0),
                Version = new Version(2, 0, 0, 0)
            };
    
            SequentialNumberGuessIdentity = new WorkflowIdentity
            {
                Name = "SequentialNumberGuessWorkflow",
                // Version = new Version(1, 0, 0, 0),
                Version = new Version(2, 0, 0, 0)
            };
    
            map.Add(StateMachineNumberGuessIdentity, new StateMachineNumberGuessWorkflow());
            map.Add(FlowchartNumberGuessIdentity, new FlowchartNumberGuessWorkflow());
            map.Add(SequentialNumberGuessIdentity, new SequentialNumberGuessWorkflow());
    
            // Initialize the previous workflow version identities.
            StateMachineNumberGuessIdentity_v1 = new WorkflowIdentity
            {
                Name = "StateMachineNumberGuessWorkflow",
                Version = new Version(1, 0, 0, 0)
            };
    
            FlowchartNumberGuessIdentity_v1 = new WorkflowIdentity
            {
                Name = "FlowchartNumberGuessWorkflow",
                Version = new Version(1, 0, 0, 0)
            };
    
            SequentialNumberGuessIdentity_v1 = new WorkflowIdentity
            {
                Name = "SequentialNumberGuessWorkflow",
                Version = new Version(1, 0, 0, 0)
            };
    
            // Add the previous version workflow identities to the dictionary along with
            // the corresponding workflow definitions loaded from the v1 assembly.
            // Assembly.LoadFile requires an absolute path so convert this relative path
            // to an absolute path.
            string v1AssemblyPath = @"..\..\..\PreviousVersions\NumberGuessWorkflowActivities_v1.dll";
            v1AssemblyPath = Path.GetFullPath(v1AssemblyPath);
            Assembly v1Assembly = Assembly.LoadFile(v1AssemblyPath);
    
            map.Add(StateMachineNumberGuessIdentity_v1,
                v1Assembly.CreateInstance("NumberGuessWorkflowActivities.StateMachineNumberGuessWorkflow") as Activity);
    
            map.Add(SequentialNumberGuessIdentity_v1,
                v1Assembly.CreateInstance("NumberGuessWorkflowActivities.SequentialNumberGuessWorkflow") as Activity);
    
            map.Add(FlowchartNumberGuessIdentity_v1,
                v1Assembly.CreateInstance("NumberGuessWorkflowActivities.FlowchartNumberGuessWorkflow") as Activity);
        }
    
        public static Activity GetWorkflowDefinition(WorkflowIdentity identity)
        {
            return map[identity];
        }
    
        public static string GetIdentityDescription(WorkflowIdentity identity)
        {
            return identity.ToString();
        }
    }
    

Untuk membangun dan menjalankan aplikasi

  1. Tekan CTRL+SHIFT+B untuk membangun aplikasi, lalu CTRL+F5 untuk memulai.

  2. Mulai alur kerja baru dengan mengklik Permainan Baru. Versi alur kerja ditampilkan di bawah jendela status dan mencerminkan versi yang diperbarui dari WorkflowIdentity yang terkait. Catat InstanceId sehingga Anda dapat melihat file penelusuran untuk alur kerja setelah selesai, lalu masukkan tebakan hingga permainan selesai. Perhatikan bagaimana tebakan pengguna ditampilkan dalam informasi yang ditampilkan di jendela status berdasarkan pembaruan aktivitas WriteLine.

    Please enter a number between 1 and 10
    5 is too high.
    Please enter a number between 1 and 10
    3 is too high.
    Please enter a number between 1 and 10
    1 is too low.
    Please enter a number between 1 and 10
    Congratulations, you guessed the number in 4 turns.
    

    Catatan

    Teks yang diperbarui dari aktivitas WriteLine akan ditampilkan, tetapi tidak untuk keluaran aktivitas WriteLine akhir yang ditambahkan dalam topik ini. Hal tersebut terjadi karena jendela status diperbarui oleh handler PersistableIdle. Karena alur kerja selesai dan tidak menganggur setelah aktivitas akhir, penangan PersistableIdle tidak dipanggil. Namun, pesan serupa ditampilkan di jendela status oleh penangan Completed. Jika diinginkan, kode dapat ditambahkan ke penangan Completed untuk mengekstrak teks dari StringWriter dan menampilkannya ke jendela status.

  3. Buka Windows Explorer dan navigasi ke folder NumberGuessWorkflowHost\bin\debug (atau bin\release tergantung pada pengaturan proyek Anda) dan buka file penelusuran menggunakan Notepad yang sesuai dengan alur kerja yang telah selesai. Jika Anda tidak mencatat InstanceId, Anda dapat mengidentifikasi file penelusuran yang benar dengan menggunakan informasi Tanggal diubah di Windows Explorer.

    Please enter a number between 1 and 10
    5 is too high.
    Please enter a number between 1 and 10
    3 is too high.
    Please enter a number between 1 and 10
    1 is too low.
    Please enter a number between 1 and 10
    2 is correct. You guessed it in 4 turns.
    

    Keluaran WriteLine yang diperbarui terkandung dalam file penelusuran, termasuk keluaran WriteLine yang ditambahkan dalam topik ini.

  4. Beralih kembali ke aplikasi penebakan angka dan pilih salah satu alur kerja yang dimulai sebelum pembaruan dilakukan. Anda dapat mengidentifikasi versi alur kerja yang saat ini dipilih dengan melihat informasi versi yang ditampilkan di bawah jendela status. Masukkan beberapa tebakan dan perhatikan bahwa pembaruan status cocok dengan keluaran aktivitas WriteLine dari versi sebelumnya, dan jangan sertakan tebakan pengguna. Hal tersebut karena alur kerja ini menggunakan definisi alur kerja sebelumnya yang tidak memiliki pembaruan WriteLine.

    Pada langkah berikutnya, Cara: Memperbarui Definisi Instans Alur Kerja yang Berjalan, instans alur kerja v1 yang berjalan diperbarui sehingga berisi fungsionalitas baru sebagai instans v2.