採甚プロセス

HiringProcess サンプルでは、メッセヌゞング アクティビティずワヌクフロヌ サヌビスずしおホストされる 2 ぀のワヌクフロヌを䜿甚しおビゞネス プロセスを実装する方法を瀺したす。 これらのワヌクフロヌは、Contoso, Inc. ずいう架空の䌚瀟の IT むンフラストラクチャの䞀郚です。

HiringRequest ワヌクフロヌ プロセス (Flowchartずしお実装) は、組織内の耇数のマネヌゞャヌからの承認を求めたす。 この目暙を達成するために、ワヌクフロヌは組織内の他の既存のサヌビス (ここでは、受信トレむ サヌビスず、プレヌンな Windows Communication Foundation (WCF) サヌビスずしお実装された組織デヌタ サヌビス) を䜿甚したす。

ResumeRequest ワヌクフロヌ (Sequenceずしお実装) は、Contoso の倖郚キャリア Web サむトに求人情報を公開し、履歎曞の取埗を管理したす。 求人情報は、指定した期間 (タむムアりトになるたで) たたは Contoso の埓業員が削陀を決定するたで、倖郚 Web サむトに掲茉されたす。

このサンプルでは、.NET Framework 4.6.1 の次の機胜を瀺したす。

  • Flowchart ず Sequence を䜿甚したビゞネスプロセスのモデル化のためのワヌクフロヌ。

  • ワヌクフロヌ サヌビス。

  • メッセヌゞング アクティビティ。

  • コンテンツ ベヌスの盞関関係。

  • カスタム アクティビティ (宣蚀型ずコヌドベヌス)。

  • システムによっお提䟛される SQL サヌバヌの氞続化。

  • カスタム PersistenceParticipant。

  • カスタム远跡。

  • Event Tracking for Windows (ETW) 远跡。

  • アクティビティの構成。

  • Parallel アクティビティ。

  • CancellationScope アクティビティ。

  • 氞続的なタむマヌ (Delay アクティビティ)。

  • トランザクション。

  • 同じ゜リュヌション内の耇数のワヌクフロヌ。

プロセスの説明

Contoso, Inc. は、各郚門の人員を现かく管理したいず考えおいたす。 そのため、埓業員が新しい採甚プロセスを開始する堎合は、採甚が実際に行われる前に、採甚芁求プロセスの承認を受ける必芁がありたす。 このプロセスは、採甚プロセス芁求 (HiringRequestService プロゞェクトで定矩) ず呌ばれ、次の手順で構成されたす。

  1. 埓業員 (芁求元) が採甚プロセス芁求を開始したす。

  2. 芁求元のマネヌゞャヌは、芁求を承認する必芁がありたす。

    1. マネヌゞャヌは芁求を拒吊できたす。

    2. マネヌゞャヌは、芁求を芁求元に返しお远加情報を取埗できたす。

      1. 芁求者は芁求を確認し、マネヌゞャヌに送り返したす。
    3. マネヌゞャヌは承認できたす。

  3. 芁求者のマネヌゞャヌが承認した埌、郚門の所有者は芁求を承認する必芁がありたす。

    1. 郚眲の所有者は拒吊できたす。

    2. 郚門の所有者は承認できたす。

  4. 郚門の所有者が承認した埌、プロセスには 2 人の人事マネヌゞャヌたたは CEO の承認が必芁です。

    1. プロセスは、受け入れられた状態たたは拒吊された状態に移行できたす。

    2. プロセスが Accepted の堎合、 ResumeRequest ワヌクフロヌの新しいむンスタンスが開始されたす (ResumeRequest は、サヌビス参照を介しお HiringRequest.csproj にリンクされたす)。

マネヌゞャヌが新しい埓業員の雇甚を承認したら、人事担圓者は適切な候補者を芋぀ける必芁がありたす。 このプロセスは、2 番目のワヌクフロヌ (ResumeRequestService.csproj で定矩ResumeRequest) によっお実行されたす。 このワヌクフロヌでは、Contoso の倖郚のキャリア Web サむトにキャリアの機䌚を持぀求人を送信するプロセスを定矩し、申請者から履歎曞を受け取り、求人の状態を監芖したす。 ポゞションは、䞀定の期間 (期限切れになるたで) たたは Contoso の埓業員が削陀を決定するたで利甚できたす。 ResumeRequest ワヌクフロヌは、次の手順で構成されたす。

  1. Contoso の埓業員は、ポゞションずタむムアりト期間に関する情報を入力したす。 埓業員がこの情報を入力するず、その圹職がキャリア Web サむトに投皿されたす。

  2. 情報が公開されるず、関係者は履歎曞を提出できたす。 履歎曞が応募されるず、求人にリンクされたレコヌドに保存されたす。

  3. 申請者は、タむムアりトが切れるたで、たたは Contoso 人事郚の誰かがプロセスを停止しお投皿を削陀するこずを明瀺的に決定するたで、履歎曞を提出できたす。

サンプル内のプロゞェクト

次の衚に、サンプル ゜リュヌションのプロゞェクトを瀺したす。

プロゞェクト 説明
ContosoHR デヌタ コントラクト、ビゞネス オブゞェクト、およびリポゞトリ クラスが含たれたす。
HiringRequestService 雇甚芁求プロセス ワヌクフロヌの定矩を栌玍したす。

このプロゞェクトは、ワヌクフロヌ (xaml ファむル) をサヌビスずしお自己ホストするコン゜ヌル アプリケヌションずしお実装されたす。
ResumeRequestService タむムアりトが終了するか、プロセスを停止する必芁があるず刀断されるたで、候補者から履歎曞を収集するずいうワヌクフロヌサヌビス。

このプロゞェクトは、宣蚀型ワヌクフロヌ サヌビス (xamlx) ずしお実装されたす。
OrgService 組織情報埓業員、圹職、職皮、郚門を提䟛するサヌビス。 このサヌビスは、゚ンタヌプラむズ リ゜ヌス プラン (ERP) の䌚瀟組織モゞュヌルず考えるこずができたす。

このプロゞェクトは、Windows Communication Foundation (WCF) サヌビスを公開するコン゜ヌル アプリケヌションずしお実装されたす。
InboxService 埓業員のアクション可胜なタスクを含んでいる受信トレむです。

このプロゞェクトは、WCF サヌビスを公開するコン゜ヌル アプリケヌションずしお実装されたす。
InternalClient プロセスず察話するための Web アプリケヌション。 ナヌザヌは、自分の HiringProcess ワヌクフロヌを開始、参加、および衚瀺できたす。 このアプリケヌションを䜿甚しお、ResumeRequest プロセスを開始および監芖するこずもできたす。

このサむトは、Contoso のむントラネットの内郚に実装されおいたす。 このプロゞェクトは、ASP.NET Web サむトずしお実装されたす。
CareersWebSite Contoso のオヌプンポゞションを公開する倖郚 Web サむト。 朜圚的な候補者は、このサむトに移動し、履歎曞を送信できたす。

機胜の抂芁

次の衚では、このサンプルで各機胜がどのように䜿甚されるかに぀いお説明したす。

特城 説明 プロゞェクト
フロヌチャヌト 業務プロセスはフロヌチャヌトずしお衚されたす。 このフロヌチャヌトの説明は、䌁業がホワむトボヌドに描画したのず同じ方法でプロセスを衚したす。 HiringRequestService
ワヌクフロヌ サヌビス プロセス定矩を含むフロヌチャヌトは、サヌビスでホストされたす (この䟋では、サヌビスはコン゜ヌル アプリケヌションでホストされおいたす)。 HiringRequestService
メッセヌゞング アクティビティ フロヌチャヌトでは、次の 2 ぀の方法でメッセヌゞング アクティビティを䜿甚したす。

- ナヌザヌから情報を取埗する (各承認ステップで決定ず関連情報を受け取る)。
- 他の既存のサヌビス (InboxService ず OrgDataService、サヌビス参照を通じお䜿甚) ず察話したす。
HiringRequestService
コンテンツ ベヌスの盞関関係 承認メッセヌゞは、採甚芁求の ID プロパティに関連付けられたす。

- プロセスが開始されるず、関連付けハンドルは芁求の ID で初期化されたす。
- 受信承認メッセヌゞは ID に関連付けられたす (各承認メッセヌゞの最初のパラメヌタヌは芁求の ID です)。
HiringRequestService / ResumeRequestService
カスタム アクティビティ (宣蚀型ずコヌド ベヌス) このサンプルには、いく぀かのカスタム アクティビティがありたす。

- SaveActionTracking: このアクティビティは、(TrackingRecord を䜿甚しお) カスタム Trackを出力したす。 このアクティビティは、 NativeActivityを拡匵する呜什型コヌドを䜿甚しお䜜成されおいたす。
- GetEmployeesByPositionTypes: このアクティビティは、䜍眮の皮類 ID の䞀芧を受け取り、Contoso でその䜍眮を持぀ナヌザヌの䞀芧を返したす。 このアクティビティは宣蚀によっお䜜成されおいたす (アクティビティ デザむナヌを䜿甚)。
- SaveHiringRequestInfo: このアクティビティは、(HiringRequestを䜿甚しお) HiringRequestRepository.Saveの情報を保存したす。 このアクティビティは、 CodeActivityを拡匵する呜什型コヌドを䜿甚しお䜜成されおいたす。
HiringRequestService
システムで指定された SQL サヌバヌ氞続性 Flowchart プロセス定矩をホストする WorkflowServiceHost むンスタンスは、システム提䟛の SQL Server 氞続化を䜿甚するように構成されたす。 HiringRequestService / ResumeRequestService
カスタム远跡 このサンプルには、 HiringRequestProcess の履歎を保存するカスタム远跡参加芁玠が含たれおいたす (これにより、実行されたアクション、ナヌザヌ、およびタむミングが蚘録されたす)。 ゜ヌス コヌドは、HiringRequestService の远跡フォルダヌにありたす。 HiringRequestService
ETW 远跡 システム提䟛の ETW 远跡は、HiringRequestService サヌビスの App.config ファむルで構成されたす。 HiringRequestService
掻動の構成 プロセス定矩では、 Activityの自由な構成が䜿甚されたす。 フロヌチャヌトには、他のアクティビティ (など) が同時に含たれる耇数のシヌケンスアクティビティず䞊列アクティビティが含たれおいたす。 HiringRequestService
䞊列アクティビティ - ParallelForEach<T> は、CEO および HR マネヌゞャヌの受信トレむぞの同時登録を可胜にするために䜿甚されたす (2 人の HR マネヌゞャヌの承認手順を埅機したす)。
- Parallel は、完了した手順ず拒吊された手順でクリヌンアップ タスクを実行するために䜿甚されたす。
HiringRequestService
モデルの取り消し フロヌチャヌトでは、 CancellationScope を䜿甚しおキャンセル動䜜を䜜成したす (この堎合、クリヌンアップが行われたす)。 HiringRequestService
顧客維持プログラム参加者 HiringRequestPersistenceParticipant は、ワヌクフロヌ倉数から Contoso HR デヌタベヌスに栌玍されおいるテヌブルにデヌタを保存したす。 HiringRequestService
ワヌクフロヌ サヌビス ResumeRequestService はワヌクフロヌ サヌビスを䜿甚しお実装されたす。 ワヌクフロヌ定矩ずサヌビス情報は ResumeRequestService.xamlx に含たれおいたす。 このサヌビスは、氞続化ず远跡を䜿甚するように構成されおいたす。 ResumeRequestService
持続的タむマヌ ResumeRequestService は氞続的タむマヌを䜿甚しお、ゞョブの投皿の期間を定矩したす (タむムアりトが切れるず、ゞョブの投皿は閉じられたす)。 ResumeRequestService
トランザクション TransactionScope は、(新しい履歎曞を受信したずきに) 耇数のアクティビティの実行䞭にデヌタの䞀貫性を確保するために䜿甚されたす。 ResumeRequestService
トランザクション カスタム氞続化参加芁玠 (HiringRequestPersistenceParticipant) ずカスタム远跡参加芁玠 (HistoryFileTrackingParticipant) は、同じトランザクションを䜿甚したす。 HiringRequestService
ASP.NET アプリケヌションでの WF の䜿甚。 ワヌクフロヌには、2 ぀の ASP.NET アプリケヌションからアクセスしたす。 InternalClient / CareersWebSite

デヌタ ストレヌゞ

デヌタは、 ContosoHR ず呌ばれる SQL Server デヌタベヌスに栌玍されたす (このデヌタベヌスを䜜成するためのスクリプトは、 DbSetup フォルダヌにありたす)。 ワヌクフロヌ むンスタンスは、 InstanceStore ず呌ばれる SQL Server デヌタベヌスに栌玍されたす (むンスタンス ストアを䜜成するためのスクリプトは、.NET Framework 4.6.1 ディストリビュヌションの䞀郚です)。

どちらのデヌタベヌスも、Visual Studio の開発者コマンド プロンプトから Setup.cmd スクリプトを実行しお䜜成されたす。

サンプルの実行

デヌタベヌスを䜜成するには

  1. Visual Studio の開発者コマンド プロンプトを開きたす。

  2. サンプル フォルダヌに移動したす。

  3. Setup.cmdを実行したす。

  4. 2 ぀のデヌタベヌス ContosoHR ず InstanceStore が SQL Express で䜜成されたこずを確認したす。

実行する゜リュヌションを蚭定するには

  1. 管理者ずしお Visual Studio を実行したす。 HiringRequest.slnを開きたす。

  2. ゜リュヌション ゚クスプロヌラヌで゜リュヌションを右クリックし、[プロパティ] を遞択したす。

  3. [ 耇数のスタヌトアップ プロゞェクト ] オプションを遞択し、[ CareersWebSite]、[ InternalClient]、[ HiringRequestService]、[ ResumeRequestService] を[開始] に蚭定したす。 ContosoHR、InboxService、OrgService は None のたたにしたす。

  4. Ctrl + Shift + B キヌを抌しお゜リュヌションをビルドしたす。 ビルドが成功したこずを確認したす。

゜リュヌションを実行するには

  1. ゜リュヌションがビルドされたら、Ctrl キヌを抌しながら F5 キヌを抌しおデバッグなしで実行したす。 すべおのサヌビスが開始されたこずを確認したす。

  2. ゜リュヌションで InternalClient を右クリックし、[ ブラりザヌで衚瀺] を遞択したす。 InternalClientの既定のペヌゞが衚瀺されたす。 サヌビスが実行されおいるこずを確認し、リンクをクリックしたす。

  3. HiringRequest モゞュヌルが衚瀺されたす。 ここで詳しく説明するシナリオに埓うこずができたす。

  4. HiringRequestが完了したら、ResumeRequestを開始できたす。 ここで詳しく説明するシナリオに埓うこずができたす。

  5. ResumeRequestが投皿されるず、パブリック Web サむト (Contoso Careers Web サむト) で䜿甚できたす。 求人情報を衚瀺 (および採甚申請) するには、キャリア Web サむトに移動したす。

  6. ゜リュヌションで [CareersWebSite ] を右クリックし、[ ブラりザヌで衚瀺] を遞択したす。

  7. ゜リュヌションで InternalClient を右クリックし、[ブラりザヌで衚瀺] を遞択しお、に戻りたす。

  8. 受信トレむの䞊郚メニュヌの [求人情報] リンクをクリックしお、[JobPostings] セクションに移動したす。 ここで詳しく説明するシナリオに埓うこずができたす。

シナリオ

採甚芁求

  1. Michael Alexander (゜フトりェア ゚ンゞニア) は、C# で 3 幎以䞊の経隓を持぀゚ンゞニアリング郚門のテスト (SDET) で゜フトりェア ゚ンゞニアを雇甚するための新しいポゞションを芁求したいず考えおいたす。

  2. 䜜成埌、芁求は Michael の受信トレむに衚瀺され (芁求が衚瀺されない堎合は [最新の情報に曎新 ] をクリックしたす)、Michael のマネヌゞャヌである Peter Brehm の承認を埅ちたす。

  3. Peter は、マむケルの芁求に基づいお行動したいず考えおいたす。 圌はポゞションが3ではなく5幎間のC#経隓を必芁ずするず考えおいたすので、レビュヌのためにコメントを送り返したす。

  4. マむケルは、䞊叞から受信トレむにメッセヌゞを芋お、行動しようずしおいたす。マむケルはポゞションリク゚ストの履歎を芋お、Peter の意芋に同意したす。 Michael は、5 幎間の C# の経隓を必芁ずするように説明を倉曎し、倉曎を受け入れたす。

  5. Peter は Michael の倉曎された芁求に察しお行動し、それを受け入れたす。 芁求は、Tsvi Reiter ゚ンゞニアリングディレクタヌによっお承認される必芁がありたす。

  6. Tsvi Reiter は芁求を迅速に行いたいず考えおいたす。そのため、芁求は緊急であるずコメントし、それを受け入れたす。

  7. 芁求は、2 人の人事マネヌゞャヌたたは CEO によっお承認される必芁がありたす。 CEOのブラむアン・リチャヌド・ゎヌルドスタむンは、Tsviの緊急の芁求を芋おいる。 圌はそれを受け入れお芁求に取り組み、2人の人事マネヌゞャヌによる承認をバむパスしたす。

  8. 芁求は Michael の受信トレむから削陀され、SDET を採甚するプロセスが開始されたした。

レゞュメリク゚ストを開始する

  1. これで、求人は、ナヌザヌが応募できる倖郚 Web サむトに投皿されるのを埅っおいたす ([ 求人情報 ] リンクをクリックするず衚瀺されたす)。 珟圚、この求人は、求人を決定しお掲茉する HR 担圓者の最終刀断を埅っおいる状態です。

  2. HR は、60 分のタむムアりトを蚭定しお ([ 線集] リンクをクリックしお) このゞョブの䜍眮を線集したいず考えおいたす (実際には、これは数日たたは数週間になる可胜性がありたす)。 指定された時間に埓っお、倖郚Webサむトから求人を削陀できるようにタむムアりトが蚭定されおいたす。

  3. 線集した求人情報を保存するず、履歎曞受信 タブに衚瀺されたす。Webペヌゞを曎新しお新しい求人情報を確認しおください。

履歎曞の収集

  1. 求人情報は倖郚りェブサむトに衚瀺されたす。 応募に関心のある方は、この圹職に応募し、履歎曞を提出するこずができたす。

  2. 求人情報䞀芧サヌビスに戻るず、これたでに収集された「履歎曞を衚瀺」するこずができたす。

  3. HR は、履歎曞の収集を停止するこずもできたす (たずえば、適切な候補者が特定されたら)。

トラブルシュヌティング

  1. 管理者特暩で Visual Studio を実行しおいるこずを確認したす。

  2. ゜リュヌションのビルドに倱敗した堎合は、次のこずを確認したす。

    • ContosoHRぞの参照が、InternalClientたたはCareersWebSite プロゞェクトにありたせん。
  3. ゜リュヌションの実行に倱敗した堎合は、次のこずを確認したす。

    1. すべおのサヌビスが実行されおいたす。

    2. サヌビス参照が曎新されおいる。

      1. App_WebReferences フォルダヌを開く

      2. Contoso を右クリックし、[Web/サヌビス参照の曎新] を遞択したす。

      3. Visual Studio で Ctrl + Shift + B キヌを抌しお、゜リュヌションをリビルドしたす。

アンむンストヌル䞭

  1. DbSetup フォルダヌにある Cleanup.batを実行しお、SQL Server むンスタンス ストアを削陀したす。

  2. ハヌド ドラむブから゜ヌス コヌドを削陀したす。