Proses Perekrutan
Sampel Proses Perekrutan menunjukkan cara menerapkan proses bisnis menggunakan aktivitas perpesanan dan dua alur kerja yang dihosting sebagai layanan alur kerja. Alur kerja ini adalah bagian dari infrastruktur TI dari perusahaan fiksi bernama Contoso, Inc.
Proses alur kerja HiringRequest
(diimplementasikan sebagai Flowchart) meminta otorisasi 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 diimplementasikan sebagai layanan Windows Communication Foundation (WCF) biasa).
Alur kerja ResumeRequest
(diimplementasikan sebagai Sequence) menerbitkan lowongan pekerjaan di situs web karier eksternal Contoso dan mengelola akuisisi resume. Sebuah postingan pekerjaan tersedia di situs Web eksternal untuk jangka waktu tertentu (sampai batas waktu berakhir) atau sampai seorang karyawan dari Contoso memutuskan untuk menghapusnya.
Sampel ini menunjukkan fitur .NET Framework 4.6.1 berikut ini:
Alur kerja Flowchart dan Sequence untuk memodelkan proses bisnis.
Layanan alur kerja.
Aktivitas Olahpesan.
Korelasi Berbasis Konten.
Aktivitas kustom (deklaratif dan berbasis kode).
Presistensi server SQL yang disediakan sistem.
PersistenceParticipant kustom.
Pelacakan kustom.
Pelacakan Peristiwa untuk Pelacakan Windows (ETW).
Komposisi kegiatan.
Parallel aktivitas.
Aktivitas CancellationScope.
Durable timers (Delay aktivitas).
Transaksi.
Lebih dari satu alur kerja dalam solusi yang sama.
Deskripsi Proses
Contoso, Inc. ingin memiliki kendali ketat atas headcount di setiap departemennya. Oleh karena itu, kapan pun karyawan ingin memulai proses perekrutan baru, mereka harus melalui persetujuan proses permintaan perekrutan sebelum perekrutan benar-benar dapat dilakukan. Proses ini disebut permintaan proses perekrutan (didefinisikan dalam proyek HiringRequestService) dan terdiri dari langkah-langkah berikut:
Seorang karyawan (pemohon) memulai permintaan proses perekrutan.
Manajer pemohon harus menyetujui permintaan:
Manajer dapat menolak permintaan tersebut.
Manajer dapat mengembalikan permintaan kepada pemohon untuk informasi tambahan:
- Pemohon meninjau dan mengirimkan permintaan kembali ke manajer.
Manajer dapat menyetujui.
Setelah manajer pemohon menyetujui, pemilik departemen harus menyetujui permintaan tersebut:
Pemilik departemen dapat menolak.
Pemilik departemen dapat menyetujui.
Setelah pemilik departemen menyetujui, prosesnya memerlukan persetujuan 2 manajer SDM atau CEO:
Proses dapat bertransisi ke status diterima atau ditolak.
Jika proses Diterima, contoh baru dari alur kerja
ResumeRequest
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 di ResumeRequestService.csproj). Alur kerja ini mendefinisikan proses untuk mengirimkan postingan pekerjaan dengan peluang karir ke situs Web Karir eksternal Contoso, menerima resume dari pelamar, dan memantau status posting pekerjaan. Posisi tersedia untuk jangka waktu tertentu (sampai waktu berakhir) atau sampai seorang karyawan dari Contoso memutuskan untuk menghapusnya. Alur kerja ResumeRequest
terdiri dari langkah-langkah berikut:
Seorang karyawan dari Contoso mengetik informasi tentang posisi dan durasi waktu habis. Setelah karyawan mengetik informasi ini, posisi tersebut diposting di situs Web Karir.
Setelah informasi diterbitkan, pihak yang berkepentingan dapat mengirimkan resume mereka. Saat resume dikirimkan, resume tersebut disimpan dalam catatan yang ditautkan ke lowongan pekerjaan.
Pelamar dapat mengirimkan resume sampai batas waktu berakhir atau seseorang dari departemen HR Contoso secara eksplisit memutuskan untuk menghapus posting dengan menghentikan proses.
Proyek dan sampel
Tabel berikut menunjukkan proyek dalam solusi sampel.
Project | 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 menghosting sendiri alur kerja (file xaml) sebagai layanan. |
ResumeRequestService | 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, Jabatan, Jenis Jabatan, dan Departemen). Anda dapat menganggap layanan ini sebagai modul Organisasi Perusahaan dari Rencana Sumber Daya Perusahaan (ERP). Proyek ini diimplementasikan sebagai aplikasi konsol yang memperlihatkan layanan Windows Communication Foundation (WCF). |
InboxService | Kotak masuk yang 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 internal ke intranet Contoso. Proyek ini diimplementasikan sebagai situs Web ASP.NET. |
CareersWebSite | Situs Web eksternal yang mengekspos posisi terbuka di Contoso. Setiap kandidat potensial dapat menavigasi ke situs ini dan mengirimkan resume. |
Ringkasan fitur
Tabel berikut menjelaskan bagaimana setiap fitur digunakan dalam sampel ini.
Fitur | Deskripsi | Project |
---|---|---|
Diagram Alur | Proses bisnis direpresentasikan sebagai diagram alur. Deskripsi diagram alur ini mewakili proses dengan cara yang sama dengan cara bisnis akan menggambarnya di papan tulis. | HiringRequestService |
Layanan alur kerja | Diagram alur dengan definisi proses dihosting di layanan (dalam contoh ini, layanan dihosting di aplikasi konsol). | HiringRequestService |
Aktivitas olahpesan | Diagram alur menggunakan aktivitas pengiriman pesan dalam 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 dari permintaan perekrutan: - Saat proses dimulai, handel korelasi diinisialisasi dengan ID permintaan. - Pesan persetujuan yang 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 itu di Contoso. Aktivitas ini telah ditulis secara deklaratif (menggunakan perancang aktivitas).- SaveHiringRequestInfo : Aktivitas ini menyimpan informasi HiringRequest (menggunakan HiringRequestRepository.Save ). Aktivitas ini telah ditulis menggunakan kode imperatif yang memperluas CodeActivity. |
HiringRequestService |
Presistensi SQL Server yang disediakan sistem | Instans WorkflowServiceHost yang menghosting definisi proses Diagram alur dikonfigurasi untuk menggunakan presistensi SQL Server yang disediakan sistem. | HiringRequestService / ResumeRequestService |
Pelacakan Kustom | Sampel mencakup peserta pelacakan kustom yang menyimpan riwayat HiringRequestProcess (ini merekam tindakan apa yang telah dilakukan, oleh siapa, dan kapan). Kode sumber ada di folder Pelacakan HiringRequestService. |
HiringRequestService |
Pelacakan ETW | Pelacakan ETW yang disediakan sistem dikonfigurasi dalam file App.config di layanan HiringRequestService. | HiringRequestService |
Komposisi Aktivitas | Definisi proses menggunakan komposisi Activity gratis. Diagram alur berisi beberapa aktivitas Sequence dan Parallel yang sekaligus berisi aktivitas lain (dan seterusnya). | HiringRequestService |
Aktivitas Paralel | - ParallelForEach<T> digunakan untuk mendaftar di Inbox CEO dan Manajer SDM secara paralel (Menunggu langkah Persetujuan dua Manajer SDM). - Parallel digunakan untuk melakukan beberapa tugas pembersihan di langkah Selesai dan Ditolak |
HiringRequestService |
Pembatalan Model | Diagram alur menggunakan CancellationScope untuk membuat perilaku pembatalan (dalam hal ini ia melakukan beberapa pembersihan.) | HiringRequestService |
Peserta Persistensi Pelanggan | HiringRequestPersistenceParticipant menyimpan data dari variabel alur kerja ke tabel yang disimpan di database Contoso HR. |
HiringRequestService |
Layanan Alur Kerja | ResumeRequestService diimplementasikan menggunakan layanan alur kerja. Definisi alur kerja dan informasi layanan terdapat di ResumeRequestService.xamlx. Layanan dikonfigurasi untuk menggunakan presistensi dan pelacakan. |
ResumeRequestService |
Timer tahan lama | ResumeRequestService menggunakan timer tahan lama untuk menentukan durasi Postingan Lowongan (setelah batas waktu berakhir, Postingan Lowongan ditutup). |
ResumeRequestService |
Transaksi | TransactionScope digunakan untuk memastikan konsistensi data dalam pelaksanaan beberapa aktivitas (ketika resume baru diterima). | ResumeRequestService |
Transaksi | Peserta kegigihan 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 folder DbSetup
). 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 Prompt Perintah Pengembang untuk Visual Studio.
Menjalankan sampel
Untuk membuat database
Buka Prompt Perintah Pengembang untuk Visual Studio.
Navigasi ke folder sampel.
Jalankan Setup.cmd.
Verifikasi bahwa dua database
ContosoHR
danInstanceStore
dibuat di SQL Express.
Untuk mengatur solusi untuk eksekusi
Buka 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 Tidak Ada.
Bangun solusi dengan menekan CTRL+SHIFT+B. Verifikasi bahwa build berhasil.
Untuk menjalankan solusinya
Setelah solusi dibuat, tekan CTRL+F5 untuk menjalankan tanpa penelusuran kesalahan. Verifikasi bahwa semua layanan telah dimulai.
Klik kanan InternalClient dalam solusi, lalu pilih Lihat di Browser. Halaman default untuk
InternalClient
ditampilkan. Pastikan bahwa layanan berjalan, dan klik link-nya.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.Jika
ResumeRequest
diposting, itu tersedia di situs Web publik (Situs Web Karir Contoso). Untuk melihat Lowongan Pekerjaan (dan melamar posisi tersebut), navigasikan ke Situs Web Karir.Klik kanan CareersWebSite dalam solusi dan pilih Lihat di Browser.
Navigasikan kembali ke
InternalClient
dengan mengeklik kanan InternalClient dalam solusi dan memilih Lihat di Browser.Buka bagian JobPosting dengan mengeklik link 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 pengalaman minimal 3 tahun di C#.
Setelah dibuat, permintaan tersebut muncul di kotak masuk Michael (klik Refresh jika Anda tidak melihat permintaan tersebut) menunggu persetujuan Peter Brehm, yang merupakan manajer Michael.
Peter ingin bertindak atas permintaan Michael. Dia pikir posisi itu menuntut pengalaman C# 5 tahun, bukan 3 tahun, 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 memerlukan 5 tahun pengalaman C# dan menerima modifikasi.
Peter bertindak atas permintaan modifikasi Michael dan menerimanya. Permintaan itu sekarang harus disetujui oleh Direktur Teknik, Tsvi Reiter.
Tsvi Reiter ingin mempercepat permintaan itu, jadi dia berkomentar untuk mengatakan bahwa permintaan itu mendesak dan menerimanya.
Permintaan tersebut sekarang harus disetujui oleh dua manajer SDM atau CEO. CEO, Brian Richard Goldstein, melihat permintaan mendesak dari Tsvi. Dia bertindak atas permintaan dengan menerimanya, sehingga melewati persetujuan oleh dua manajer SDM.
Permintaan dihapus dari kotak masuk Michael dan proses perekrutan SDET kini telah dimulai.
Mulai Permintaan Lanjutkan
Sekarang, posisi pekerjaan sedang menunggu untuk diposkan ke situs Web eksternal tempat orang dapat melamar (Anda dapat melihatnya mengeklik link Postingan Pekerjaan). Saat ini, posisi pekerjaan sedang duduk dengan perwakilan SDM yang bertanggung jawab untuk menyelesaikan posisi pekerjaan dan mempostingnya.
HR ingin mengedit posisi pekerjaan ini (dengan mengeklik link Edit) dengan menetapkan batas waktu 60 menit (dalam kehidupan nyata, ini bisa berhari-hari atau berminggu-minggu). Waktu habis memungkinkan posisi pekerjaan diambil dari situs Web eksternal sesuai dengan waktu yang ditentukan.
Setelah menyimpan posisi pekerjaan yang telah diedit, posisi tersebut muncul di tab Menerima Resume (refresh halaman Web untuk melihat posisi pekerjaan baru).
Mengumpulkan Resume
Posisi pekerjaan akan muncul di situs Web eksternal. Sebagai orang yang tertarik melamar pekerjaan, Anda dapat melamar posisi ini dan mengirimkan resume Anda.
Jika Anda kembali ke layanan Daftar Postingan Pekerjaan, Anda dapat "melihat resume" yang telah dikumpulkan selama ini.
HR juga dapat berhenti mengumpulkan resume (misalnya, setelah kandidat yang tepat telah diidentifikasi).
Pemecahan Masalah
Pastikan Anda menjalankan Visual Studio dengan hak istimewa administrator.
Jika solusi gagal dibuat, verifikasi berikut ini:
- Referensi ke
ContosoHR
tidak hilang dari proyekInternalClient
atauCareersWebSite
.
- Referensi ke
Jika solusi gagal dijalankan, verifikasi berikut ini:
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 instalan
Hapus penyimpanan instans SQL Server dengan menjalankan Cleanup.bat, yang terletak di folder DbSetup.
Hapus kode sumber dari hard drive Anda.