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.
Sampel HiringProcess menunjukkan cara menerapkan proses bisnis menggunakan aktivitas olahpesan dan dua alur kerja yang dihosting sebagai layanan alur kerja. Alur kerja ini adalah bagian dari infrastruktur TI dari perusahaan fiktif bernama Contoso, Inc.
Proses alur kerja HiringRequest
(diimplementasikan sebagai Flowchart) meminta persetujuan dari beberapa manajer di organisasi. Untuk mencapai tujuan ini, alur kerja menggunakan layanan lain yang ada di organisasi (dalam kasus kami, layanan kotak masuk dan layanan data organisasi yang diimplementasikan sebagai layanan Windows Communication Foundation (WCF) biasa).
ResumeRequest
Alur kerja (diimplementasikan sebagai Sequence) menerbitkan lowongan pekerjaan di situs Web karier eksternal Contoso dan mengelola penerimaan resume. Postingan pekerjaan tersedia di situs Web eksternal untuk jangka waktu tetap (sampai batas waktu habis) atau sampai karyawan dari Contoso memutuskan untuk menghapusnya.
Sampel ini menunjukkan fitur .NET Framework 4.6.1 berikut:
Flowchart dan Sequence alur kerja untuk memodelkan proses bisnis.
Layanan Alur Kerja.
Aktivitas Olah Pesan.
Korelasi berbasis konten.
Aktivitas kustom (deklaratif dan berbasis kode).
Persistensi server SQL yang disediakan sistem.
Kustom PersistenceParticipant.
Pelacakan khusus.
Pelacakan Peristiwa untuk Windows (ETW).
Komposisi kegiatan.
Parallel Kegiatan.
CancellationScope aktivitas.
Timer tahan lama (Delay aktivitas).
Transaksi.
Lebih dari satu alur kerja dalam solusi yang sama.
Deskripsi Proses
Contoso, Inc. ingin memiliki kontrol ketat atas headcount di masing-masing departemennya. Oleh karena itu, setiap kali karyawan ingin memulai proses perekrutan baru, mereka perlu melalui persetujuan proses permintaan perekrutan sebelum perekrutan benar-benar dapat terjadi. Proses ini disebut permintaan proses perekrutan (ditentukan dalam proyek HiringRequestService) dan terdiri dari langkah-langkah berikut:
Karyawan (pemohon) memulai permintaan proses perekrutan.
Manajer pemohon harus menyetujui permintaan:
Manajer dapat menolak permintaan.
Manajer dapat mengembalikan permintaan kepada pemohon untuk informasi tambahan:
- Pemohon meninjau dan mengirim permintaan kembali ke manajer.
Manajer dapat menyetujui.
Setelah manajer pemohon menyetujui, pemilik departemen harus menyetujui permintaan:
Pemilik departemen dapat menolak.
Pemilik departemen dapat menyetujui.
Setelah pemilik departemen menyetujui, proses ini memerlukan persetujuan 2 manajer SDM atau CEO:
Proses ini dapat beralih ke status yang diterima atau ditolak.
Jika proses diterima, instans alur kerja baru
ResumeRequest
akan dimulai (ResumeRequest
ditautkan ke HiringRequest.csproj melalui referensi layanan.)
Setelah manajer menyetujui perekrutan karyawan baru, HR harus menemukan kandidat yang sesuai. Proses ini dilakukan oleh alur kerja kedua (ResumeRequest
, ditentukan dalam ResumeRequestService.csproj). Alur kerja ini mendefinisikan proses untuk mengirimkan posting pekerjaan dengan kesempatan karir ke situs Web Karir eksternal Contoso, menerima resume dari pelamar, dan memantau status posting pekerjaan. Posisi tersedia untuk periode waktu tetap (sampai waktu kedaluwarsa) atau sampai karyawan dari Contoso memutuskan untuk menghapusnya.
ResumeRequest
Alur kerja terdiri dari langkah-langkah berikut:
Karyawan dari Contoso mengetik informasi tentang posisi dan durasi jeda. Setelah karyawan memasukkan informasi ini, posisi dipublikasikan di Situs Karir.
Setelah informasi diterbitkan, pihak yang tertarik dapat mengirimkan resume mereka. Ketika resume dikirimkan, resume disimpan dalam catatan yang ditautkan ke lowongan pekerjaan.
Pemohon dapat mengirimkan resume hingga waktu habis atau seseorang dari departemen SDM Contoso secara eksplisit memutuskan untuk menghapus postingan dengan menghentikan proses.
Proyek dalam sampel
Tabel berikut ini memperlihatkan proyek dalam solusi sampel.
Proyek | Deskripsi |
---|---|
ContosoHR | Berisi kontrak data, objek bisnis, dan kelas repositori. |
HiringRequestService | Berisi definisi alur kerja Proses Permintaan Perekrutan. Proyek ini diimplementasikan sebagai aplikasi konsol yang menghost sendiri alur kerja (file xaml) sebagai layanan. |
LayananPermintaanResume | Layanan alur kerja yang mengumpulkan resume dari kandidat hingga waktu habis atau seseorang memutuskan bahwa proses harus dihentikan. Proyek ini diimplementasikan sebagai layanan alur kerja deklaratif (xamlx). |
OrgService | Layanan yang mengekspos informasi organisasi (Karyawan, Posisi, PositionTypes, dan Departemen). Anda dapat menganggap layanan ini sebagai modul Organisasi Perusahaan dari Paket Sumber Daya Perusahaan (ERP). Proyek ini diimplementasikan sebagai aplikasi konsol yang mengekspos layanan Windows Communication Foundation (WCF). |
Layanan Kotak Masuk | Kotak masuk berisi tugas yang dapat ditindaklanjuti untuk karyawan. Proyek ini diimplementasikan sebagai aplikasi konsol yang mengekspos layanan WCF. |
InternalClient | Aplikasi Web untuk berinteraksi dengan proses. Pengguna dapat memulai, berpartisipasi, dan melihat alur kerja HiringProcess mereka. Dengan menggunakan aplikasi ini, mereka juga dapat memulai dan memantau proses ResumeRequest. Situs ini diimplementasikan untuk menjadi internal intranet Contoso. Proyek ini diimplementasikan sebagai situs Web ASP.NET. |
CareersWebSite | Situs Web eksternal yang menampilkan lowongan pekerjaan di Contoso. Kandidat potensial apa pun dapat menavigasi ke situs ini dan mengirimkan resume. |
Ringkasan fitur
Tabel berikut ini menjelaskan bagaimana setiap fitur digunakan dalam sampel ini.
Fitur | Deskripsi | Proyek |
---|---|---|
Diagram Alur | Proses bisnis direpresentasikan sebagai diagram alur . Deskripsi diagram alur ini mewakili proses dengan cara yang sama di mana bisnis akan menggambarnya dalam papan tulis. | HiringRequestService |
Layanan alur kerja | Bagan Alur dengan definisi proses dihosting dalam layanan (dalam contoh ini, layanan dihosting dalam aplikasi konsol). | HiringRequestService |
Aktivitas olahpesan | Diagram alur menggunakan aktivitas olah pesan dengan dua cara: - Untuk mendapatkan informasi dari pengguna (untuk menerima keputusan dan informasi terkait di setiap langkah persetujuan). - Untuk berinteraksi dengan layanan lain yang ada (InboxService dan OrgDataService, digunakan melalui referensi layanan). |
HiringRequestService |
Korelasi berbasis konten | Pesan persetujuan berkorelasi pada properti ID permintaan perekrutan: - Ketika proses dimulai, handle korelasi diinisialisasi dengan ID dari permintaan. - Pesan persetujuan masuk berkorelasi pada ID mereka (parameter pertama dari setiap pesan persetujuan adalah ID permintaan). |
HiringRequestService / ResumeRequestService |
Aktivitas kustom (berbasis deklaratif dan kode) | Ada beberapa aktivitas kustom dalam sampel ini: - SaveActionTracking : Aktivitas ini memancarkan kustom TrackingRecord (menggunakan Track). Aktivitas ini telah ditulis menggunakan kode imperatif yang memperluas NativeActivity.- GetEmployeesByPositionTypes : Aktivitas ini menerima daftar ID jenis posisi dan mengembalikan daftar orang yang memiliki posisi tersebut di Contoso. Aktivitas ini telah ditulis secara deklaratif (menggunakan perancang aktivitas).- SaveHiringRequestInfo : Aktivitas ini menyimpan informasi dari sebuah HiringRequest (menggunakan HiringRequestRepository.Save ). Aktivitas ini telah ditulis menggunakan kode imperatif yang memperluas CodeActivity. |
HiringRequestService |
Persistensi SQL Server yang disediakan sistem | WorkflowServiceHost Instans yang menghosting definisi proses Bagan Alur dikonfigurasi untuk menggunakan persistensi SQL Server yang disediakan sistem. | HiringRequestService / ResumeRequestService |
Pelacakan Khusus | Sampel mencakup peserta pelacakan kustom yang menyimpan riwayat HiringRequestProcess (ini merekam tindakan apa yang telah dilakukan, oleh siapa, dan kapan). Kode sumber berada di folder Pelacakan HiringRequestService. |
HiringRequestService |
Pelacakan ETW | Pelacakan ETW yang disediakan sistem dikonfigurasi dalam file App.config di layanan HiringRequestService. | HiringRequestService |
Komposisi Kegiatan | Definisi proses menggunakan komposisi bebas Activity. Diagram Alur berisi beberapa aktivitas Urutan dan Paralel yang pada saat yang sama berisi aktivitas lain (dan sebagainya). | HiringRequestService |
Aktivitas Paralel |
-
ParallelForEach<T> digunakan untuk mendaftar di Kotak Masuk CEO dan Manajer SDM secara paralel (Menunggu dua langkah Persetujuan Manajer SDM). - Parallel digunakan untuk melakukan beberapa tugas pembersihan dalam langkah-langkah Selesai dan Ditolak |
HiringRequestService |
Pembatalan Model | Diagram alur menggunakan CancellationScope untuk membuat perilaku pembatalan (dalam hal ini melakukan pembersihan.) | HiringRequestService |
Peserta Persistensi Pelanggan |
HiringRequestPersistenceParticipant menyimpan data dari variabel alur kerja ke tabel yang disimpan dalam database HR Contoso. |
HiringRequestService |
Layanan Alur Kerja |
ResumeRequestService diimplementasikan menggunakan layanan alur kerja. Definisi alur kerja dan informasi layanan terkandung dalam ResumeRequestService.xamlx. Layanan ini dikonfigurasi untuk menggunakan persistensi dan pelacakan. |
LayananPermintaanResume |
Timer yang Tahan Lama |
ResumeRequestService menggunakan timer tahan lama untuk menentukan durasi Postingan Pekerjaan (setelah waktu habis berakhir, Postingan Pekerjaan ditutup). |
LayananPermintaanResume |
Transaksi | TransactionScope digunakan untuk memastikan konsistensi data dalam eksekusi beberapa aktivitas (ketika resume baru diterima). | LayananPermintaanResume |
Transaksi | Peserta persistensi kustom (HiringRequestPersistenceParticipant ) dan peserta pelacakan kustom (HistoryFileTrackingParticipant ) menggunakan transaksi yang sama. |
HiringRequestService |
Menggunakan WF dalam aplikasi ASP.NET. | Alur kerja diakses dari dua aplikasi ASP.NET. | InternalClient / CareersWebSite |
Penyimpanan Data
Data disimpan dalam database SQL Server yang disebut ContosoHR
(skrip untuk membuat database ini terletak di DbSetup
folder). Instans alur kerja disimpan dalam database SQL Server yang disebut InstanceStore
(skrip untuk membuat penyimpanan instans adalah bagian dari distribusi .NET Framework 4.6.1).
Kedua database dibuat dengan menjalankan skrip Setup.cmd dari Perintah Pengembang untuk Visual Studio.
Menjalankan sampel
Untuk membuat database
Buka Perintah Pengembang untuk Visual Studio.
Navigasi ke folder sampel.
Jalankan Setup.cmd.
Verifikasi bahwa dua database
ContosoHR
danInstanceStore
dibuat di SQL Express.
Untuk menyiapkan solusi untuk eksekusi
Jalankan Visual Studio sebagai administrator. Buka HiringRequest.sln.
Klik kanan solusi di Penjelajah Solusi dan pilih Properti.
Pilih opsi Beberapa Proyek Startup dan atur CareersWebSite, InternalClient, HiringRequestService, dan ResumeRequestService ke Mulai. Biarkan ContosoHR, InboxService, dan OrgService sebagai None.
Bangun solusi dengan menekan CTRL+SHIFT+B. Verifikasi bahwa kompilasi berhasil.
Untuk menjalankan solusi
Setelah solusi dibangun, tekan CTRL+F5 untuk menjalankan tanpa debugging. Verifikasi bahwa semua layanan telah dimulai.
Klik kanan InternalClient dalam solusi lalu pilih Tampilkan di Browser. Halaman default untuk
InternalClient
ditampilkan. Pastikan layanan berjalan, dan klik tautan.Modul HiringRequest ditampilkan. Anda dapat mengikuti skenario yang dirinci di sini.
Setelah
HiringRequest
selesai, Anda dapat memulaiResumeRequest
. Anda dapat mengikuti skenario yang dirinci di sini.Setelah
ResumeRequest
diposting, tersedia di situs web publik (Situs Web Karir Contoso). Untuk melihat Postingan Pekerjaan (dan melamar posisi), navigasikan ke Situs Web Karir.Klik kanan KarierWebSitus dalam solusi dan pilih Tampilkan di Browser.
Navigasikan kembali ke
InternalClient
dengan mengklik kanan InternalClient dalam solusi dan memilih Tampilkan di Browser.Buka bagian JobPostings dengan mengklik tautan Postingan Pekerjaan di menu atas kotak masuk. Anda dapat mengikuti skenario yang dirinci di sini.
Skenario
Permintaan perekrutan
Michael Alexander (Insinyur Perangkat Lunak) ingin meminta posisi baru untuk mempekerjakan Insinyur Perangkat Lunak dalam Pengujian (SDET) di departemen Teknik yang memiliki setidaknya 3 tahun pengalaman di C#.
Setelah dibuat, permintaan muncul di kotak masuk Michael (klik Refresh jika Anda tidak melihat permintaan) menunggu persetujuan Peter Brehm, yang merupakan manajer Michael.
Peter ingin bertindak atas permintaan Michael. Dia berpikir posisi menuntut 5 tahun pengalaman C# bukan 3, jadi dia mengirim komentarnya kembali untuk ditinjau.
Michael melihat pesan di kotak masuknya dari manajernya dan ingin bertindak. Michael melihat sejarah permintaan posisi dan setuju dengan Peter. Michael memodifikasi deskripsi untuk membutuhkan pengalaman C# 5 tahun dan menerima modifikasi.
Peter bertindak atas permintaan Michael yang dimodifikasi dan menerimanya. Permintaan sekarang harus disetujui oleh Direktur Teknik, Tsvi Reiter.
Tsvi Reiter ingin mempercepat permintaan, jadi dia memberikan komentar untuk mengatakan bahwa permintaan tersebut mendesak dan menerimanya.
Permintaan sekarang harus disetujui oleh dua manajer SDM atau CEO. CEO, Brian Richard Goldstein, memahami permintaan mendesak yang dibuat oleh Tsvi. Dia bertindak atas permintaan dengan menerimanya, sehingga melewati persetujuan oleh dua manajer SDM.
Permintaan dihapus dari kotak masuk Michael dan proses perekrutan SDET sekarang telah dimulai.
Mulai Lanjutkan Permintaan
Sekarang, posisi pekerjaan sedang menunggu untuk diposting ke situs Web eksternal tempat orang dapat melamar (Anda dapat melihatnya mengklik tautan Posting Pekerjaan ). Saat ini, posisi pekerjaan sedang ditinjau oleh perwakilan SDM yang bertanggung jawab untuk memfinalisasi posisi pekerjaan dan mempostingnya.
HR ingin mengedit posisi pekerjaan ini (dengan mengklik tautan Edit ) dengan mengatur batas waktu 60 menit (dalam kehidupan nyata, ini bisa ber hari atau minggu). Batas waktu memungkinkan posisi pekerjaan dihapus dari situs Web eksternal sesuai dengan waktu yang ditentukan.
Setelah menyimpan posisi pekerjaan yang diedit, posisi tersebut muncul di tab Resume Penerimaan (refresh halaman Web untuk melihat posisi pekerjaan baru).
Mengumpulkan CV
Posisi pekerjaan akan muncul di situs Web eksternal. Sebagai orang yang tertarik untuk melamar pekerjaan, Anda dapat mengajukan permohonan untuk posisi ini dan mengirimkan resume Anda.
Jika Anda kembali ke layanan Daftar Postingan Pekerjaan, Anda dapat "melihat resume" yang telah dikumpulkan sejauh ini.
SDM juga dapat berhenti mengumpulkan resume (misalnya, setelah kandidat yang tepat diidentifikasi).
Penyelesaian Masalah
Pastikan Anda menjalankan Visual Studio dengan hak istimewa administrator.
Jika solusi gagal dibuat, verifikasi hal berikut:
- Referensi ke
ContosoHR
tidak hilang dari proyekInternalClient
atau proyekCareersWebSite
.
- Referensi ke
Jika solusi gagal dijalankan, verifikasi hal berikut:
Semua layanan berjalan.
Referensi layanan diperbarui.
Buka folder App_WebReferences
Klik kanan Contoso dan pilih Perbarui Referensi Web/Layanan.
Bangun kembali solusi dengan menekan CTRL+SHIFT+B di Visual Studio.
Menghapus instalasi
Hapus penyimpanan instans SQL Server dengan menjalankan Cleanup.bat, yang terletak di folder DbSetup.
Hapus kode sumber dari hard drive Anda.