Şirket Satın Alma İşlemi
PurchaseProcess örneği, otomatik en iyi teklif seçimiyle çok temel Teklif İsteği (RFP) tabanlı satın alma işleminin nasıl oluşturulacağını gösterir. süreci temsil eden bir iş akışı oluşturmak için , ParallelForEach<T>ve ForEach<T> özel etkinliğini birleştirirParallel.
Bu örnek, işlemle farklı katılımcılar (özgün istek sahibi veya belirli bir satıcı olarak) olarak etkileşime izin veren bir ASP.NET istemci uygulaması içerir.
Gösteriler
Özel etkinlikler.
Etkinliklerin bileşimi.
Yer im -leri.
Kalıcılık.
Şemalı kalıcılık.
Izleme.
Izleme.
WF'yi farklı istemcilerde barındırma (Web uygulamaları ve WinForms uygulamaları ASP.NET).
İşlemin Açıklaması
Bu örnek, genel bir şirket için satıcılardan teklif toplamaya yönelik bir Windows Workflow Foundation (WF) programının uygulamasını gösterir.
X Şirketi çalışanı teklif isteği (RFP) oluşturur.
Çalışan, RFP başlığına ve açıklamasına tür ekler.
Çalışan, teklif göndermek için davet etmek istediği satıcıları seçer.
Çalışan teklifi gönderir.
İş akışının bir örneği oluşturulur.
İş akışı tüm satıcıların tekliflerini göndermesini bekliyor.
Tüm teklifler alındıktan sonra iş akışı, alınan tüm teklifleri yineler ve en iyisini seçer.
Her satıcının bir itibarı vardır (bu örnek, saygınlık listesini VendorRepository.cs' de depolar).
Teklifin toplam değeri (Satıcı tarafından yazılan değer) * (Satıcının kayıtlı itibarı) / 100 ile belirlenir.
Özgün istekte bulunan, gönderilen tüm teklifleri görebilir. En iyi teklif, raporun özel bir bölümünde sunulur.
İşlem Tanımı
Örneğin temel mantığı, her satıcıdan ParallelForEach<T> gelen teklifleri (yer işareti oluşturan özel bir etkinlik kullanarak) bekleyen ve satıcı teklifini RFP (etkinlik kullanarak) olarak kaydeden bir InvokeMethod etkinlik kullanır.
Örnek daha sonra içinde RfpRepository
depolanan tüm alınan teklifleri yineler ve ayarlanmış değeri hesaplar (bir Assign etkinlik ve System.Activities.Expressions etkinlikler kullanarak) ve ayarlanan değer önceki en iyi tekliften daha iyiyse, yeni değeri en iyi teklif (ve Assign etkinlikleri kullanarakIf) olarak atar.
Bu Örnekteki Projeler
Bu örnek aşağıdaki projeleri içerir.
Proje | Açıklama |
---|---|
Yaygın | İşlem içinde kullanılan varlık nesneleri (Teklif İsteği, Satıcı ve Satıcı Teklifi). |
WfDefinition | satın alma işlemi iş akışının örneklerini oluşturmak ve kullanmak için istemci uygulamaları tarafından kullanılan işlemin tanımı (WF programı olarak) ve konak (PurchaseProcessHost ). |
Webclient | Kullanıcıların satın alma işleminin örneklerini oluşturmasına ve bu örneklere katılmasına olanak tanıyan bir ASP.NET istemci uygulaması. İş akışı altyapısıyla etkileşime geçmek için özel olarak oluşturulmuş bir konak kullanır. |
WinFormsClient | Kullanıcıların satın alma işleminin örneklerini oluşturmasına ve bu örneklere katılmasına olanak tanıyan bir Windows Forms istemci uygulaması. İş akışı altyapısıyla etkileşime geçmek için özel olarak oluşturulmuş bir konak kullanır. |
WfDefinition
Aşağıdaki tabloda WfDefinition projesindeki en önemli dosyaların açıklaması yer alır.
Dosya | Açıklama |
---|---|
IPurchaseProcessHost.cs | İş akışının konağı için arabirim. |
PurchaseProcessHost.cs | İş akışı için bir konağın uygulanması. Konak, iş akışı çalışma zamanının ayrıntılarını soyutlar ve iş akışı örneklerini yüklemek, çalıştırmak ve bunlarla PurchaseProcess etkileşime geçmek için tüm istemci uygulamalarında kullanılır. |
PurchaseProcessWorkflow.cs | Satın Alma İşlemi iş akışının tanımını içeren bir etkinlik (öğesinden Activitytüretilir). .NET Framework 4.6.1 etkinlik kitaplığındaki mevcut özel etkinlikleri ve etkinlikleri bir araya getirerek oluşturma işlevinden Activity türetilen etkinlikler. Bu etkinlikleri derlemek, özel işlevsellik oluşturmanın en temel yoludur. |
WaitForVendorProposal.cs | Bu özel etkinlik, NativeActivity teklifi gönderirken satıcı tarafından daha sonra sürdürülecek adlandırılmış bir yer işaretinden türetilir ve oluşturulur. öğesinden NativeActivitytüretilen etkinlikler, örneğin öğesinden CodeActivitytüretilenler, geçersiz kılarak Executekesinlik temelli işlevler oluşturur, ancak yöntemine Execute geçirilen aracılığıyla iş akışı çalışma zamanının tüm işlevlerine ActivityContext de erişebilir. Bu bağlam, alt etkinlikleri zamanlamayı ve iptal etme, kalıcı olmayan bölgeleri ayarlama (çalışma zamanının atomik işlemler gibi iş akışının verilerini kalıcı tutmadığı yürütme blokları) ve Bookmark nesneleri (duraklatılmış iş akışlarını devam ettiren tanıtıcılar) için destek içerir. |
TrackingParticipant.cs | TrackingParticipant Tüm izleme olaylarını alan ve bunları bir metin dosyasına kaydeden bir. İzleme katılımcıları iş akışı örneğine Uzantılar olarak eklenir. |
XmlWorkflowInstanceStore.cs | İş akışı uygulamalarını XML dosyalarına kaydeden bir özel InstanceStore öğe. |
XmlPersistenceParticipant.cs | Teklif isteğinin bir örneğini XML dosyasına kaydeden bir özel PersistenceParticipant öğe. |
AsyncResult.cs / CompletedAsyncResult.cs | Kalıcılık bileşenlerinde zaman uyumsuz deseni uygulamak için yardımcı sınıflar. |
Yaygın
Aşağıdaki tabloda Ortak projedeki en önemli sınıfların açıklaması yer almaktadır.
Sınıf | Açıklama |
---|---|
Vendor | Teklif İsteği'nde teklif gönderen satıcı. |
RequestForProposal | Teklif isteği (RFP), satıcıların belirli bir emtia veya hizmetle ilgili teklif gönderme davetidir. |
VendorProposal | Satıcı tarafından somut bir RFP'ye gönderilen teklif. |
VendorRepository | Satıcıların deposu. Bu uygulama, Vendor örneklerinin ve bu örneklerin kullanıma alınmasına yönelik yöntemlerin bellek içi bir koleksiyonunu içerir. |
RfpRepository | Teklif İstekleri deposu. Bu uygulama, şemalı kalıcılık tarafından oluşturulan Teklif İstekleri XML dosyasını sorgulamak için Linq to XML kullanır. |
IOHelper | Bu sınıf G/Ç ile ilgili tüm sorunları (klasörler, yollar vb.) işler. |
Web İstemcisi
Aşağıdaki tablo, Web İstemcisi projesindeki en önemli Web sayfalarının açıklamasını içerir.
Dosya | Açıklama |
---|---|
CreateRfp.aspx | Yeni bir Teklif İsteği oluşturur ve gönderir. |
Default.aspx | Tüm etkin ve tamamlanmış Teklif İsteklerini gösterir. |
GetVendorProposal.aspx | Somut teklif isteğinde satıcıdan bir teklif alır. Bu sayfa yalnızca satıcılar tarafından kullanılır. |
ShowRfp.aspx | Teklif İsteği hakkındaki tüm bilgileri (alınan teklifler, tarihler, değerler ve diğer bilgiler) gösterin. Bu sayfa yalnızca Teklif İsteği'nin oluşturucusu tarafından kullanılır. |
WinForms İstemcisi
Aşağıdaki tabloda Win Forms projesindeki en önemli formların açıklaması yer alır.
Şekil | Açıklama |
---|---|
NewRfp | Yeni bir Teklif İsteği oluşturur ve gönderir. |
ShowProposals | Tüm etkin ve tamamlanmış Teklif İsteklerini göster. Not: Teklif İsteği oluşturduktan veya değiştirdikten sonra bu ekranda yapılan değişiklikleri görmek için kullanıcı arabirimindeki Yenile düğmesine tıklamanız gerekebilir. |
SubmitProposal | Somut teklif isteğinde bir satıcıdan teklif alın. Bu pencere yalnızca satıcılar tarafından kullanılır. |
ViewRfp | Teklif İsteği hakkındaki tüm bilgileri (alınan teklifler, tarihler, değerler ve diğer bilgiler) gösterin. Bu pencere yalnızca Teklif İsteği'nin oluşturucusu tarafından kullanılır. |
Kalıcılık Dosyaları
Aşağıdaki tabloda, kalıcılık sağlayıcısı (XmlPersistenceProvider
) tarafından oluşturulan dosyalar geçerli sistemin geçici klasörünün yolunda (kullanılarak GetTempPath) bulunur. İzleme dosyası geçerli yürütme yolunda oluşturulur.
Dosya Adı | Açıklama | Yol |
---|---|---|
rfps.xml | Tüm etkin ve tamamlanmış Teklif İsteklerinin bulunduğu XML dosyası. | GetTempPath |
[instanceid] | Bu dosya bir iş akışı örneği hakkındaki tüm bilgileri içerir. Bu dosya şemalı kalıcılık uygulaması (XmlPersistenceProvider'da PersistenceParticipant) tarafından oluşturulur. |
GetTempPath |
[instanceId].tracking | Somut bir örnekte gerçekleşen tüm olayları içeren bir metin dosyası. Bu dosya TrackingParticipant tarafından oluşturulur. |
GetTempPath |
PurchaseProcess.Tracing.TraceLog.txt | App.config veya Web.config dosyalarındaki yapılandırma parametrelerine göre iş akışı tarafından oluşturulan izleme dosyası. | Geçerli yürütme yolu |
Bu örneği kullanmak için
Visual Studio'yu kullanarak PurchaseProcess.sln çözüm dosyasını açın.
Web İstemcisi projesini yürütmek için Çözüm Gezgini açın ve Web İstemcisi projesine sağ tıklayın. Başlangıç Projesi Olarak Ayarla'yı seçin.
WinForms İstemcisi projesini yürütmek için Çözüm Gezgini açın ve WinForms İstemcisi projesine sağ tıklayın. Başlangıç Projesi Olarak Ayarla'yı seçin.
Çözümü oluşturmak için CTRL+SHIFT+B tuşlarına basın.
Çözümü çalıştırmak için CTRL+F5 tuşlarına basın.
Web İstemcisi Seçenekleri
Yeni bir RFP oluşturma: Yeni bir Teklif İsteği (RFP) oluşturur ve bir Satın Alma İşlemi iş akışı başlatır.
Yenile: Ana pencerede Etkin ve Tamamlanmış RFP'lerin listesini yeniler.
Görünüm: Mevcut bir RFP'nin içeriğini gösterir. Satıcılar tekliflerini gönderebilir (davet edilirse veya RFP tamamlanmazsa).
Farklı Görüntüle: Kullanıcı, etkin RFP'ler kılavuzundaki Birleşik giriş olarak görüntüle kutusunda istenen katılımcıyı seçerek rfp'ye farklı kimlikler kullanarak erişebilir.
WinForms İstemci Seçenekleri
RFP Oluşturma: Yeni bir Teklif İsteği (RFP) oluşturur ve bir Satın Alma İşlemi iş akışı başlatır.
Yenile: Ana pencerede Etkin ve Tamamlanmış RFP'lerin listesini yeniler.
RFP'yi görüntüle: Mevcut bir RFP'nin içeriğini gösterir. Satıcılar tekliflerini gönderebilir (davet edildiyse veya RFP tamamlanmadıysa)
Bağlan Farklı: Kullanıcı, etkin RFP'ler kılavuzundaki Birleşik giriş olarak görüntüle kutusunda istenen katılımcıyı seçerek rfp'ye farklı kimlikler kullanarak erişebilir.