Aracılığıyla paylaş


İşe Alma İşlemi

HiringProcess örneği, mesajlaşma etkinliklerini ve iş akışı hizmetleri olarak barındırılan iki iş akışını kullanarak bir iş süreci uygulamayı gösterir. Bu iş akışları Contoso, Inc. adlı kurgusal bir şirketin BT altyapısının bir parçasıdır.

İş HiringRequest akışı işlemi (bir Flowchartolarak uygulanır) kuruluştaki birkaç yöneticiden yetkilendirme ister. Bu hedefe ulaşmak için iş akışı, kuruluştaki diğer mevcut hizmetleri (bizim örneğimizde, bir gelen kutusu hizmeti ve düz Windows Communication Foundation (WCF) hizmetleri olarak uygulanan bir kuruluş veri hizmeti) kullanır.

İş ResumeRequest akışı (olarak Sequenceuygulanır), Contoso'nun dış kariyer Web sitesinde bir iş gönderisi yayımlar ve özgeçmişlerin edinilmesini yönetir. İş deftere nakil işlemi, dış Web sitesinde sabit bir süre (zaman aşımı süresi dolana kadar) veya Contoso'dan bir çalışan kaldırmaya karar verinceye kadar kullanılabilir.

Bu örnek, .NET Framework 4.6.1'in aşağıdaki özelliklerini gösterir:

  • Flowchart ve Sequence iş süreçlerini modellemeye yönelik iş akışları.

  • İş Akışı Hizmetleri.

  • Mesajlaşma Etkinlikleri.

  • İçerik tabanlı bağıntı.

  • Özel etkinlikler (bildirim temelli ve kod tabanlı).

  • Sistem tarafından sağlanan SQL server kalıcılığı.

  • Özel PersistenceParticipant.

  • Özel izleme.

  • Windows için Olay İzleme (ETW) İzleme.

  • Etkinliklerin bileşimi.

  • Parallel Faaliyetleri.

  • CancellationScope Etkinlik.

  • Dayanıklı zamanlayıcılar (Delay etkinlik).

  • Hareket.

  • Aynı çözümde birden fazla iş akışı.

İşlemin Açıklaması

Contoso, Inc. departmanlarının her birinde sayının yakın denetimine sahip olmak istiyor. Bu nedenle, herhangi bir çalışan yeni bir işe alma süreci başlatmak istediğinde, işe alma işleminin gerçekten gerçekleşebilmesi için önce işe alma isteği süreci onayından geçmesi gerekir. Bu işleme işe alma işlemi isteği (HiringRequestService projesinde tanımlanır) denir ve aşağıdaki adımlardan oluşur:

  1. Bir çalışan (istekte bulunan), işe alma işlemi isteğini başlatır.

  2. İstek sahibinin yöneticisinin isteği onaylaması gerekir:

    1. Yönetici isteği reddedebilir.

    2. Yönetici, ek bilgi için isteği istekte bulunana döndürebilir:

      1. İstek sahibi isteği inceler ve yöneticiye geri gönderir.
    3. Yönetici onaylayabilir.

  3. İstek sahibinin yöneticisi onayladıktan sonra, bölüm sahibinin isteği onaylaması gerekir:

    1. Bölüm sahibi reddedebilir.

    2. Bölüm sahibi onaylayabilir.

  4. Bölüm sahibi onayladıktan sonra işlem için 2 İk yöneticisinin veya CEO'nun onayı gerekir:

    1. İşlem kabul edilen veya reddedilen duruma geçebilir.

    2. İşlem Kabul Edildi ise, iş akışının ResumeRequest yeni bir örneği başlatılır (ResumeRequest bir hizmet başvurusu aracılığıyla HiringRequest.csproj dosyasına bağlanır.)

Yöneticiler yeni bir çalışanın işe alınmasına onay verdikten sonra İk'nın uygun adayı bulması gerekir. Bu işlem ikinci iş akışıResumeRequest (ResumeRequestService.csproj içinde tanımlanır) tarafından gerçekleştirilir. Bu iş akışı, Contoso'nun dış Kariyer Web sitesine kariyer fırsatı içeren bir iş ilanı gönderme sürecini tanımlar, başvuru sahiplerinden özgeçmişler alır ve iş gönderme durumunu izler. Pozisyonlar, sabit bir süre (süre dolana kadar) veya Contoso'dan bir çalışan kaldırmaya karar verinceye kadar kullanılabilir. İş ResumeRequest akışı aşağıdaki adımlardan oluşur:

  1. Contoso'dan bir çalışan, konum ve zaman aşımı süresi hakkındaki bilgileri ekler. Çalışan bu bilgileri girdikten sonra pozisyon Kariyer Web sitesine nakledilir.

  2. Bilgiler yayımlandıktan sonra ilgili taraflar özgeçmişlerini gönderebilir. Özgeçmiş gönderildiğinde, iş açılışına bağlı bir kayıtta depolanır.

  3. Başvuru sahipleri, zaman aşımı süresi dolana kadar özgeçmiş gönderebilir veya Contoso İk departmanından biri işlemi durdurarak gönderimi kaldırmaya açıkça karar verebilir.

Örnekteki projeler

Aşağıdaki tabloda örnek çözümdeki projeler gösterilmektedir.

Proje Açıklama
ContosoHR Veri sözleşmelerini, iş nesnelerini ve depo sınıflarını içerir.
HiringRequestService İşe Alma İsteği İşlemi iş akışının tanımını içerir.

Bu proje, iş akışını (xaml dosyası) hizmet olarak kendi kendine barındıran bir konsol uygulaması olarak uygulanır.
ResumeRequestService Zaman aşımı süresi dolana veya birisi işlemin durdurulmasına karar verene kadar adaylardan özgeçmiş toplayan bir iş akışı hizmeti.

Bu proje bildirim temelli bir iş akışı hizmeti (xamlx) olarak uygulanır.
OrgService Kuruluş bilgilerini (Çalışanlar, Pozisyonlar, PositionType'lar ve Departmanlar) kullanıma sunan bir hizmet. Bu hizmeti bir Kurumsal Kaynak Planı'nın (ERP) Şirket Kuruluşu modülü olarak düşünebilirsiniz.

Bu proje, Windows Communication Foundation (WCF) hizmetini kullanıma sunan bir konsol uygulaması olarak uygulanır.
Gelen KutusuHizme hizmeti Çalışanlar için eyleme dönüştürülebilir görevler içeren bir gelen kutusu.

Bu proje, WCF hizmetini kullanıma sunan bir konsol uygulaması olarak uygulanır.
InternalClient İşlemle etkileşime yönelik bir Web uygulaması. Kullanıcılar HiringProcess iş akışlarını başlatabilir, katılabilir ve görüntüleyebilir. Bu uygulamayı kullanarak ResumeRequest işlemlerini başlatıp izleyebilirler.

Bu site Contoso'nun intraneti için dahili olarak uygulanır. Bu proje bir ASP.NET Web sitesi olarak uygulanır.
KariyerWeb Sitesi Contoso'daki açık konumları kullanıma sunan bir dış Web sitesi. Olası tüm adaylar bu siteye gidebilir ve özgeçmiş gönderebilir.

Özellik özeti

Aşağıdaki tabloda her özelliğin bu örnekte nasıl kullanıldığı açıklanmaktadır.

Özellik Açıklama Project
Akış Çizelgesi İş süreci bir akış çizelgesi olarak temsil edilir. Bu akış çizelgesi açıklaması, bir işletmenin beyaz tahtaya çizdiği süreci temsil eder. HiringRequestService
İş akışı hizmetleri İşlem tanımına sahip Akış Çizelgesi bir hizmette barındırılır (bu örnekte, hizmet bir konsol uygulamasında barındırılır). HiringRequestService
Mesajlaşma etkinlikleri Akış çizelgesi, mesajlaşma etkinliklerini iki şekilde kullanır:

- Kullanıcıdan bilgi almak (her onay adımında kararları ve ilgili bilgileri almak için).
- Diğer mevcut hizmetlerle etkileşime geçmek için (Hizmet başvuruları aracılığıyla kullanılan InboxService ve OrgDataService).
HiringRequestService
İçerik tabanlı bağıntı Onay iletileri, işe alma isteğinin ID özelliğiyle ilişkilidir:

- Bir işlem başlatıldığında, bağıntı tanıtıcısı isteğin kimliğiyle başlatılır.
- Gelen onay iletileri kimlikleriyle ilişkilendirilir (her onay iletisinin ilk parametresi isteğin kimliğidir).
HiringRequestService / ResumeRequestService
Özel etkinlikler (bildirim temelli ve kod tabanlı) Bu örnekte birkaç özel etkinlik vardır:

- SaveActionTracking: Bu etkinlik özel TrackingRecord bir (kullanarak Track) yayar. Bu etkinlik, genişleten NativeActivitykesinlik temelli kod kullanılarak yazılmıştır.
- GetEmployeesByPositionTypes: Bu etkinlik konum türü kimliklerinin listesini alır ve Contoso'da bu konuma sahip kişilerin listesini döndürür. Bu etkinlik bildirim temelli olarak yazılmıştır (etkinlik tasarımcısı kullanılarak).
- SaveHiringRequestInfo: Bu etkinlik bir HiringRequest 'in (kullanarak HiringRequestRepository.Save) bilgilerini kaydeder. Bu etkinlik, genişleten CodeActivitykesinlik temelli kod kullanılarak yazılmıştır.
HiringRequestService
Sistem tarafından sağlanan SQL Server Kalıcılığı WorkflowServiceHost Akış Çizelgesi işlem tanımını barındıran örnek, sistem tarafından sağlanan SQL Server kalıcılığını kullanacak şekilde yapılandırılır. HiringRequestService / ResumeRequestService
Özel İzleme Örnek, bir öğesinin geçmişini kaydeden özel bir izleme katılımcısı HiringRequestProcess içerir (bu işlem hangi eylemin, kim tarafından ve ne zaman yapıldığını kaydeder). Kaynak kod, HiringRequestService'in İzleme klasöründedir. HiringRequestService
ETW İzleme Sistem tarafından sağlanan ETW İzleme, HiringRequestService hizmetindeki App.config dosyasında yapılandırılır. HiringRequestService
Etkinliklerin Bileşimi İşlem tanımı, serbest bileşimini Activitykullanır. Akış Çizelgesi, aynı anda başka etkinlikler (vb.) içeren çeşitli Sıralı ve Paralel etkinlikler içerir. HiringRequestService
Paralel Etkinlikler - ParallelForEach<T> , CEO ve İk Yöneticilerinin Gelen Kutusuna paralel olarak kaydolmak için kullanılır (İki İk Yöneticisinin Onay adımı bekleniyor).
- Parallel Tamamlandı ve Reddedildi adımlarında bazı temizleme görevlerini gerçekleştirmek için kullanılır
HiringRequestService
Model İptali Akış Çizelgesi, iptal davranışı oluşturmak için kullanır CancellationScope (bu durumda bazı temizlemeler yapar.) HiringRequestService
Müşteri Kalıcılığı Katılımcısı HiringRequestPersistenceParticipant bir iş akışı değişkenindeki verileri Contoso İk veritabanında depolanan bir tabloya kaydeder. HiringRequestService
İş Akışı Hizmetleri ResumeRequestService iş akışı hizmetleri kullanılarak uygulanır. İş akışı tanımı ve hizmet bilgileri ResumeRequestService.xamlx içinde yer alır. Hizmet, kalıcılık ve izleme kullanacak şekilde yapılandırılmıştır. ResumeRequestService
Dayanıklı Zamanlayıcılar ResumeRequestService , bir İş Deftere Nakil süresini tanımlamak için dayanıklı zamanlayıcılar kullanır (zaman aşımı sona erdiğinde, Proje Deftere Nakil kapatılır). ResumeRequestService
Hareketler TransactionScope çeşitli etkinliklerin yürütülmesinde (yeni bir özgeçmiş alındığında) verilerin tutarlılığını sağlamak için kullanılır. ResumeRequestService
Hareketler Özel kalıcılık katılımcısı (HiringRequestPersistenceParticipant) ve özel izleme katılımcısı (HistoryFileTrackingParticipant) aynı işlemi kullanır. HiringRequestService
ASP.NET uygulamalarında WF kullanma. İş akışlarına iki ASP.NET uygulamasından erişilir. InternalClient / CareersWebSite

Veri Depolama

Veriler adlı ContosoHR bir SQL Server veritabanında depolanır (bu veritabanını oluşturmaya yönelik betik klasörde bulunur DbSetup ). İş akışı örnekleri adlı InstanceStore bir SQL Server veritabanında depolanır (örnek deposu oluşturmaya yönelik betikler .NET Framework 4.6.1 dağıtımının parçasıdır).

Her iki veritabanı da Visual Studio için Geliştirici Komut İsteminden Setup.cmd betiği çalıştırılarak oluşturulur.

Örneği çalıştırma

Veritabanlarını oluşturmak için

  1. Visual Studio için bir Geliştirici Komut İstemi açın.

  2. Örnek klasörüne gidin.

  3. Setup.cmd çalıştırın.

  4. İki veritabanının ContosoHR ve InstanceStore SQL Express'te oluşturulduğunu doğrulayın.

Çözümü yürütme için ayarlamak için

  1. Visual Studio'yu yönetici olarak çalıştırın. HiringRequest.sln'i açın.

  2. Çözüm Gezgini'da çözüme sağ tıklayın ve Özellikler'i seçin.

  3. Birden Çok Başlangıç Projesi seçeneğini belirleyin ve CareersWebSite, InternalClient, HiringRequestService ve ResumeRequestService değerlerini Başlangıç olarak ayarlayın. ContosoHR, InboxService ve OrgService'i Yok olarak bırakın.

  4. CTRL+SHIFT+B tuşlarına basarak çözümü oluşturun. Derlemenin başarılı olduğunu doğrulayın.

Çözümü çalıştırmak için

  1. Çözüm derledikten sonra hata ayıklama olmadan çalıştırmak için CTRL+F5 tuşlarına basın. Tüm hizmetlerin başlatıldığını doğrulayın.

  2. Çözümde InternalClient'a sağ tıklayıp Tarayıcıda Görüntüle'yi seçin. için InternalClient varsayılan sayfa görüntülenir. Hizmetlerin çalıştığından emin olun ve bağlantıya tıklayın.

  3. HiringRequest modülü görüntülenir. Burada ayrıntılı olarak yer alan senaryoyu izleyebilirsiniz.

  4. HiringRequest tamamlandıktan sonra öğesini başlatabilirsinizResumeRequest. Burada ayrıntılı olarak yer alan senaryoyu izleyebilirsiniz.

  5. ResumeRequest gönderildiğinde, genel Web sitesinde (Contoso Kariyer Web Sitesi) kullanılabilir. İş Deftere Nakil'i görmek (ve pozisyona başvurmak) için Kariyer Web Sitesine gidin.

  6. Çözümde KariyerWeb Sitesi'ne sağ tıklayın ve Tarayıcıda Görüntüle'yi seçin.

  7. Çözümde InternalClient InternalClient'a sağ tıklayıp Tarayıcıda Görüntüle'yi seçerek öğesine geri dönün.

  8. Gelen kutusu üst menüsündeki İş Deftere Nakilleri bağlantısına tıklayarak JobPostings bölümüne gidin. Burada ayrıntılı olarak yer alan senaryoyu izleyebilirsiniz.

Senaryolar

İşe alma isteği

  1. Michael Alexander (Yazılım Mühendisi), C# dilinde en az 3 yıllık deneyime sahip Mühendislik departmanında Test (SDET) kapsamında bir Yazılım Mühendisi işe almak için yeni bir pozisyon talep etmek istiyor.

  2. Oluşturulduktan sonra istek, Michael'ın yöneticisi olan Peter Brehm'in onayını bekleyen Michael'ın gelen kutusunda görünür (isteği görmüyorsanız Yenile'ye tıklayın).

  3. Peter, Michael'ın isteği üzerine harekete geçmek istiyor. Pozisyonun 3 yerine 5 yıl C# deneyimi istediğini düşünüyor ve yorumlarını gözden geçirmek üzere geri gönderiyor.

  4. Michael, gelen kutusunda yöneticisinden bir mesaj görür ve harekete geçmek ister. Michael, pozisyon isteğinin geçmişini görür ve Peter ile aynı fikirdedir. Michael, açıklamayı 5 yıllık C# deneyimi gerektirecek şekilde değiştirir ve değişikliği kabul eder.

  5. Peter, Michael'ın değiştirilmiş isteğine göre hareket eder ve kabul eder. İstek şimdi Mühendislik Müdürü Tsvi Reiter tarafından onaylanmalıdır.

  6. Tsvi Reiter isteği hızlandırmak istiyor, bu nedenle isteğin acil olduğunu ve kabul ettiğini belirten bir yorum yapıyor.

  7. İsteğin iki İk yöneticisi veya CEO tarafından onaylanması gerekiyor. CEO, Brian Richard Goldstein, Tsvi'nin acil isteğini görür. İsteği kabul ederek hareket eder, böylece iki İk yöneticisinin onayını atlar.

  8. İstek, Michael'ın gelen kutusundan kaldırılır ve SDET'yi işe alma işlemi artık başladı.

Sürdürme İsteğini Başlat

  1. Artık iş konumu, kişilerin başvurabileceği bir dış Web sitesine gönderilmeyi bekliyor (İş Deftere Nakilleri bağlantısına tıklandığında görebilirsiniz). Şu anda iş pozisyonu, iş pozisyonunun son haline gelip deftere nakledilmesini sağlayan bir İk temsilcisiyle birlikte yer alır.

  2. İk, 60 dakikalık bir zaman aşımı ayarlayarak (gerçek hayatta bu gün veya hafta olabilir) bu iş konumunu düzenlemek istiyor (Düzenle bağlantısına tıklayarak). Zaman aşımı, iş konumunun belirtilen zamana göre dış Web sitesinden alınmasına olanak tanır.

  3. Düzenlenen iş konumunu kaydettikten sonra, Alma Özgeçmişleri sekmesinde görünür (yeni iş konumunu görmek için Web sayfasını yenileyin).

Özgeçmişleri Toplama

  1. İş konumu dış Web sitesinde görünmelidir. İşe başvurmak isteyen bir kişi olarak bu pozisyona başvurabilir ve özgeçmişinizi gönderebilirsiniz.

  2. İş Deftere Nakilleri Listesi hizmetine geri dönerseniz, şimdiye kadar toplanan "özgeçmişleri" görüntüleyebilirsiniz.

  3. İk özgeçmişleri toplamayı da durdurabilir (örneğin, doğru aday belirlendikten sonra).

Sorun giderme

  1. Visual Studio'yu yönetici ayrıcalıklarıyla çalıştırdığınızdan emin olun.

  2. Çözüm derlenemezse aşağıdakileri doğrulayın:

    • başvurusu ContosoHR veya CareersWebSite projelerinden InternalClient eksik değil.
  3. Çözüm yürütülemezse aşağıdakileri doğrulayın:

    1. Tüm hizmetler çalışıyor.

    2. Hizmet başvuruları güncelleştirilir.

      1. App_WebReferences klasörünü açma

      2. Contoso'ya sağ tıklayın ve Web/Hizmet Başvurularını Güncelleştir'i seçin.

      3. Visual Studio'da CTRL+SHIFT+B tuşlarına basarak çözümü yeniden oluşturun.

Kaldırma

  1. DbSetup klasöründe bulunan Cleanup.bat çalıştırarak SQL Server örnek depoyu silin.

  2. Sabit sürücünüzdeki kaynak kodu silin.