Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Di Windows Workflow Foundation (WF), variabel mewakili penyimpanan data dan argumen mewakili aliran data ke dalam dan ke luar aktivitas. Aktivitas memiliki serangkaian argumen dan membentuk tanda tangan aktivitas. Selain itu, aktivitas dapat mempertahankan daftar variabel tempat pengembang dapat menambahkan atau menghapus variabel selama desain alur kerja. Argumen terikat menggunakan ekspresi yang mengembalikan nilai.
Variabel
Variabel adalah lokasi penyimpanan untuk data. Variabel dinyatakan sebagai bagian dari definisi alur kerja. Variabel mengambil nilai pada run time dan nilai-nilai ini disimpan sebagai bagian dari status instans alur kerja. Definisi variabel menentukan jenis variabel dan secara opsional, nama. Kode berikut menunjukkan cara mendeklarasikan variabel, menetapkan nilai ke variabel tersebut menggunakan Assign<T> aktivitas, lalu menampilkan nilainya ke konsol menggunakan WriteLine aktivitas.
// Define a variable named "str" of type string.
Variable<string> var = new Variable<string>
{
Name = "str"
};
// Declare the variable within a Sequence, assign
// a value to it, and then display it.
Activity wf = new Sequence()
{
Variables = { var },
Activities =
{
new Assign<string>
{
To = var,
Value = "Hello World."
},
new WriteLine
{
Text = var
}
}
};
WorkflowInvoker.Invoke(wf);
Ekspresi nilai default dapat secara opsional ditentukan sebagai bagian dari deklarasi variabel. Variabel juga dapat memiliki pengubah. Misalnya, jika variabel bersifat baca-saja, pengubah baca-saja VariableModifiers dapat diterapkan. Dalam contoh berikut, variabel baca-saja dibuat yang memiliki nilai default yang ditetapkan.
// Define a read-only variable with a default value.
Variable<string> var = new Variable<string>
{
Default = "Hello World.",
Modifiers = VariableModifiers.ReadOnly
};
Cakupan Variabel
Masa pakai variabel pada run time sama dengan masa pakai aktivitas yang mendeklarasikannya. Ketika aktivitas selesai, variabelnya dibersihkan dan tidak dapat lagi direferensikan.
Argumen
Penulis aktivitas menggunakan argumen untuk menentukan cara data mengalir ke dalam dan ke luar aktivitas. Setiap argumen memiliki arah yang ditentukan: In, , Outatau InOut.
Runtime alur kerja membuat jaminan berikut tentang waktu pergerakan data ke dalam dan di luar aktivitas:
Saat aktivitas mulai dijalankan, nilai semua argumen input dan input/outputnya dihitung. Misalnya, terlepas dari kapan Get dipanggil, nilai yang dikembalikan adalah nilai yang dihitung oleh runtime sebelum pemanggilannya .
Execute
Ketika Set dipanggil, runtime segera mengatur nilai.
Argumen secara opsional dapat memiliki EvaluationOrder yang ditentukan. EvaluationOrder adalah nilai berbasis nol yang menentukan urutan di mana argumen dievaluasi. Secara default, urutan evaluasi argumen tidak ditentukan dan sama dengan UnspecifiedEvaluationOrder nilai. Atur EvaluationOrder ke nilai yang lebih besar atau sama dengan nol untuk menentukan urutan evaluasi untuk argumen ini. Windows Workflow Foundation mengevaluasi argumen dengan urutan evaluasi tertentu dalam urutan naik. Perhatikan bahwa argumen dengan urutan evaluasi yang tidak ditentukan dievaluasi sebelum argumen dengan urutan evaluasi tertentu.
Penulis aktivitas dapat menggunakan metode pengetikan yang kuat untuk mengekspos argumennya. Ini dicapai dengan mendeklarasikan properti jenis InArgument<T>, , OutArgument<T>dan InOutArgument<T>. Ini memungkinkan penulis aktivitas untuk membuat kontrak tertentu tentang data yang masuk dan keluar dari aktivitas.
Menentukan Argumen pada Aktivitas
Argumen dapat ditentukan pada aktivitas dengan menentukan properti jenis InArgument<T>, OutArgument<T>, dan InOutArgument<T>. Kode berikut menunjukkan cara menentukan argumen untuk Prompt
aktivitas yang mengambil string untuk ditampilkan kepada pengguna dan mengembalikan string yang berisi respons pengguna.
public class Prompt : Activity
{
public InArgument<string> Text { get; set; }
public OutArgument<string> Response { get; set; }
// Rest of activity definition omitted.
}
Nota
Aktivitas yang mengembalikan satu nilai dapat berasal dari Activity<TResult>, , NativeActivity<TResult>atau CodeActivity<TResult>. Aktivitas ini memiliki OutArgument<T> yang terdefinisi dengan baik bernama Result yang berisi nilai pengembalian dari aktivitas.
Menggunakan Variabel dan Argumen dalam Alur Kerja
Contoh berikut menunjukkan bagaimana variabel dan argumen digunakan dalam alur kerja. Alur kerja adalah urutan yang mendeklarasikan tiga variabel: var1
, , var2
dan var3
. Aktivitas pertama dalam alur kerja adalah Assign
aktivitas yang menetapkan nilai variabel var1
ke variabel var2
. Ini diikuti oleh aktivitas WriteLine
yang mencetak variabel var2
nilai. Selanjutnya adalah aktivitas lain Assign
yang menetapkan nilai variabel var2
ke variabel var3
. Akhirnya ada aktivitas lain WriteLine
yang mencetak nilai var3
variabel. Aktivitas pertama Assign
menggunakan InArgument<string>
objek dan OutArgument<string>
yang secara eksplisit mewakili pengikatan untuk argumen aktivitas.
InArgument<string>
digunakan untuk Value karena nilai mengalir ke Assign<T> aktivitas melalui argumennya Value , dan OutArgument<string>
digunakan untuk To karena nilai mengalir keluar dari To argumen ke dalam variabel. Aktivitas kedua Assign
menghasilkan hasil yang sama dengan sintaks yang lebih ringkas namun setara, yang menggunakan cast implisit. Aktivitas WriteLine
juga menggunakan sintaksis ringkas.
// Declare three variables; the first one is given an initial value.
Variable<string> var1 = new Variable<string>()
{
Default = "one"
};
Variable<string> var2 = new Variable<string>();
Variable<string> var3 = new Variable<string>();
// Define the workflow
Activity wf = new Sequence
{
Variables = { var1, var2, var3 },
Activities =
{
new Assign<string>()
{
Value = new InArgument<string>(var1),
To = new OutArgument<string>(var2)
},
new WriteLine() { Text = var2 },
new Assign<string>()
{
Value = var2,
To = var3
},
new WriteLine() { Text = var3 }
}
};
WorkflowInvoker.Invoke(wf);
Menggunakan Variabel dan Argumen dalam Aktivitas Code-Based
Contoh sebelumnya menunjukkan cara menggunakan argumen dan variabel dalam alur kerja dan aktivitas deklaratif. Argumen dan variabel juga digunakan dalam aktivitas berbasis kode. Secara konseptual penggunaannya sangat mirip. Variabel mewakili penyimpanan data dalam aktivitas, dan argumen mewakili aliran data ke atau keluar dari aktivitas, dan terikat oleh penulis alur kerja ke variabel atau argumen lain dalam alur kerja yang mewakili tempat data mengalir ke atau dari. Untuk mendapatkan atau mengatur nilai variabel atau argumen dalam aktivitas, konteks aktivitas harus digunakan yang mewakili lingkungan eksekusi aktivitas saat ini. Ini diteruskan ke Execute metode aktivitas oleh runtime alur kerja. Dalam contoh ini, aktivitas kustom Add
didefinisikan yang memiliki dua In argumen. Untuk mengakses nilai argumen, digunakan metode Get serta konteks yang diteruskan oleh runtime alur kerja.
public sealed class Add : CodeActivity<int>
{
[RequiredArgument]
public InArgument<int> Operand1 { get; set; }
[RequiredArgument]
public InArgument<int> Operand2 { get; set; }
protected override int Execute(CodeActivityContext context)
{
return Operand1.Get(context) + Operand2.Get(context);
}
}
Untuk informasi selengkapnya tentang bekerja dengan argumen, variabel, dan ekspresi dalam kode, lihat Penulisan Alur Kerja, Aktivitas, dan Ekspresi Menggunakan Kode Imperatif dan Argumen yang Diperlukan dan Grup Kelebihan Beban.