Bagikan melalui


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:

  1. Seorang karyawan (pemohon) memulai permintaan proses perekrutan.

  2. Manajer pemohon harus menyetujui permintaan:

    1. Manajer dapat menolak permintaan tersebut.

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

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

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

    1. Pemilik departemen dapat menolak.

    2. Pemilik departemen dapat menyetujui.

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

    1. Proses dapat bertransisi ke status diterima atau ditolak.

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

  1. Seorang karyawan dari Contoso mengetik informasi tentang posisi dan durasi waktu habis. Setelah karyawan mengetik informasi ini, posisi tersebut diposting di situs Web Karir.

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

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

  1. Buka Prompt 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 mengatur solusi untuk eksekusi

  1. Buka 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 Tidak Ada.

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

Untuk menjalankan solusinya

  1. Setelah solusi dibuat, tekan CTRL+F5 untuk menjalankan tanpa penelusuran kesalahan. Verifikasi bahwa semua layanan telah dimulai.

  2. Klik kanan InternalClient dalam solusi, lalu pilih Lihat di Browser. Halaman default untuk InternalClient ditampilkan. Pastikan bahwa layanan berjalan, dan klik link-nya.

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

  6. Klik kanan CareersWebSite dalam solusi dan pilih Lihat di Browser.

  7. Navigasikan kembali ke InternalClient dengan mengeklik kanan InternalClient dalam solusi dan memilih Lihat di Browser.

  8. Buka bagian JobPosting dengan mengeklik link 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 pengalaman minimal 3 tahun di C#.

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

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

  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 memerlukan 5 tahun pengalaman C# dan menerima modifikasi.

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

  6. Tsvi Reiter ingin mempercepat permintaan itu, jadi dia berkomentar untuk mengatakan bahwa permintaan itu mendesak dan menerimanya.

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

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

Mulai Permintaan Lanjutkan

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

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

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

Mengumpulkan Resume

  1. Posisi pekerjaan akan muncul di situs Web eksternal. Sebagai orang yang tertarik melamar pekerjaan, Anda dapat melamar posisi ini dan mengirimkan resume Anda.

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

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

Pemecahan Masalah

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

  2. Jika solusi gagal dibuat, verifikasi berikut ini:

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

    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 instalan

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

  2. Hapus kode sumber dari hard drive Anda.