Bagikan melalui


Proses Perekrutan

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:

  1. Karyawan (pemohon) memulai permintaan proses perekrutan.

  2. Manajer pemohon harus menyetujui permintaan:

    1. Manajer dapat menolak permintaan.

    2. Manajer dapat mengembalikan permintaan kepada pemohon untuk informasi tambahan:

      1. Pemohon meninjau dan mengirim permintaan kembali ke manajer.
    3. Manajer dapat menyetujui.

  3. Setelah manajer pemohon menyetujui, pemilik departemen harus menyetujui permintaan:

    1. Pemilik departemen dapat menolak.

    2. Pemilik departemen dapat menyetujui.

  4. Setelah pemilik departemen menyetujui, proses ini memerlukan persetujuan 2 manajer SDM atau CEO:

    1. Proses ini dapat beralih ke status yang diterima atau ditolak.

    2. 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:

  1. Karyawan dari Contoso mengetik informasi tentang posisi dan durasi jeda. Setelah karyawan memasukkan informasi ini, posisi dipublikasikan di Situs Karir.

  2. Setelah informasi diterbitkan, pihak yang tertarik dapat mengirimkan resume mereka. Ketika resume dikirimkan, resume disimpan dalam catatan yang ditautkan ke lowongan pekerjaan.

  3. 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

  1. Buka Perintah Pengembang untuk Visual Studio.

  2. Navigasi ke folder sampel.

  3. Jalankan Setup.cmd.

  4. Verifikasi bahwa dua database ContosoHR dan InstanceStore dibuat di SQL Express.

Untuk menyiapkan solusi untuk eksekusi

  1. Jalankan Visual Studio sebagai administrator. Buka HiringRequest.sln.

  2. Klik kanan solusi di Penjelajah Solusi dan pilih Properti.

  3. Pilih opsi Beberapa Proyek Startup dan atur CareersWebSite, InternalClient, HiringRequestService, dan ResumeRequestService ke Mulai. Biarkan ContosoHR, InboxService, dan OrgService sebagai None.

  4. Bangun solusi dengan menekan CTRL+SHIFT+B. Verifikasi bahwa kompilasi berhasil.

Untuk menjalankan solusi

  1. Setelah solusi dibangun, tekan CTRL+F5 untuk menjalankan tanpa debugging. Verifikasi bahwa semua layanan telah dimulai.

  2. Klik kanan InternalClient dalam solusi lalu pilih Tampilkan di Browser. Halaman default untuk InternalClient ditampilkan. Pastikan layanan berjalan, dan klik tautan.

  3. Modul HiringRequest ditampilkan. Anda dapat mengikuti skenario yang dirinci di sini.

  4. Setelah HiringRequest selesai, Anda dapat memulai ResumeRequest. Anda dapat mengikuti skenario yang dirinci di sini.

  5. Setelah ResumeRequest diposting, tersedia di situs web publik (Situs Web Karir Contoso). Untuk melihat Postingan Pekerjaan (dan melamar posisi), navigasikan ke Situs Web Karir.

  6. Klik kanan KarierWebSitus dalam solusi dan pilih Tampilkan di Browser.

  7. Navigasikan kembali ke InternalClient dengan mengklik kanan InternalClient dalam solusi dan memilih Tampilkan di Browser.

  8. Buka bagian JobPostings dengan mengklik tautan Postingan Pekerjaan di menu atas kotak masuk. Anda dapat mengikuti skenario yang dirinci di sini.

Skenario

Permintaan perekrutan

  1. 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#.

  2. Setelah dibuat, permintaan muncul di kotak masuk Michael (klik Refresh jika Anda tidak melihat permintaan) menunggu persetujuan Peter Brehm, yang merupakan manajer Michael.

  3. Peter ingin bertindak atas permintaan Michael. Dia berpikir posisi menuntut 5 tahun pengalaman C# bukan 3, jadi dia mengirim komentarnya kembali untuk ditinjau.

  4. 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.

  5. Peter bertindak atas permintaan Michael yang dimodifikasi dan menerimanya. Permintaan sekarang harus disetujui oleh Direktur Teknik, Tsvi Reiter.

  6. Tsvi Reiter ingin mempercepat permintaan, jadi dia memberikan komentar untuk mengatakan bahwa permintaan tersebut mendesak dan menerimanya.

  7. 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.

  8. Permintaan dihapus dari kotak masuk Michael dan proses perekrutan SDET sekarang telah dimulai.

Mulai Lanjutkan Permintaan

  1. 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.

  2. 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.

  3. Setelah menyimpan posisi pekerjaan yang diedit, posisi tersebut muncul di tab Resume Penerimaan (refresh halaman Web untuk melihat posisi pekerjaan baru).

Mengumpulkan CV

  1. 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.

  2. Jika Anda kembali ke layanan Daftar Postingan Pekerjaan, Anda dapat "melihat resume" yang telah dikumpulkan sejauh ini.

  3. SDM juga dapat berhenti mengumpulkan resume (misalnya, setelah kandidat yang tepat diidentifikasi).

Penyelesaian Masalah

  1. Pastikan Anda menjalankan Visual Studio dengan hak istimewa administrator.

  2. Jika solusi gagal dibuat, verifikasi hal berikut:

    • Referensi ke ContosoHR tidak hilang dari proyek InternalClient atau proyek CareersWebSite.
  3. Jika solusi gagal dijalankan, verifikasi hal berikut:

    1. Semua layanan berjalan.

    2. Referensi layanan diperbarui.

      1. Buka folder App_WebReferences

      2. Klik kanan Contoso dan pilih Perbarui Referensi Web/Layanan.

      3. Bangun kembali solusi dengan menekan CTRL+SHIFT+B di Visual Studio.

Menghapus instalasi

  1. Hapus penyimpanan instans SQL Server dengan menjalankan Cleanup.bat, yang terletak di folder DbSetup.

  2. Hapus kode sumber dari hard drive Anda.