Aracılığıyla paylaş


.NET Framework 4.5'teki Windows Workflow Foundation'daki Yenilikler

.NET Framework 4.5 sürümündeki Windows Workflow Foundation (WF), yeni etkinlikler, tasarımcı özellikleri ve iş akışı geliştirme modelleri gibi birçok yeni özelliği kullanıma sunar. .NET Framework 4.5'te kullanıma sunulan yeni iş akışı özelliklerinin çoğu ancak tümü değil, yeniden barındırılan iş akışı tasarımcısında desteklenir. Desteklenen yeni özellikler hakkında daha fazla bilgi için bkz . Yeniden Barındırılan İş Akışı Tasarımcısı'nda Yeni Workflow Foundation 4.5 Özellikleri desteği. .NET Framework 3.0 ve .NET Framework 3.5 iş akışı uygulamalarını en son sürümü kullanacak şekilde geçirme hakkında daha fazla bilgi için bkz. Geçiş Kılavuzu. Bu makalede, .NET Framework 4.5'te kullanıma sunulan yeni iş akışı özelliklerine genel bir bakış sağlanır.

Uyarı

.NET Framework 4.5 sürümünde sunulan yeni Windows Workflow Foundation özellikleri, çerçevenin önceki sürümlerini hedefleyen projeler için kullanılamaz. .NET Framework 4.5'i hedefleyen bir proje çerçevenin önceki bir sürümüne yeniden hedeflenirse, çeşitli sorunlar oluşabilir.

  • C# ifadeleri tasarımcıda XAML'de Değer ayarlandı iletisiyle değiştirilecektir.
  • Aşağıdaki hata da dahil olmak üzere birçok derleme hatası oluşur.

Dosya biçimi geçerli hedefleme çerçevesiyle uyumlu değil. Dosya biçimini dönüştürmek için lütfen dosyayı açıkça kaydedin. Dosyayı kaydedip tasarımcıyı yeniden açtığınızda bu hata iletisi kaybolur.

İş Akışı Sürümü Oluşturma

.NET Framework 4.5, yeni sınıfı temel alan birkaç yeni WorkflowIdentity sürüm oluşturma özelliği kullanıma sunulmuştur. WorkflowIdentity , iş akışı uygulaması yazarlarına kalıcı bir iş akışı örneğini tanımıyla eşlemek için bir mekanizma sağlar.

Etkinlikler

Yerleşik etkinlik kitaplığı, mevcut etkinlikler için yeni etkinlikler ve yeni özellikler içerir.

NoPersist Kapsamı

NoPersistScope , NoPersistScope'un alt etkinlikleri yürütülürken iş akışının kalıcı olmasını engelleyen yeni bir kapsayıcı etkinliğidir. Bu, iş akışının kalıcı hale getirmek için uygun olmadığı senaryolarda (örneğin, iş akışının dosya tanıtıcıları gibi makineye özgü kaynakları kullandığında veya veritabanı işlemleri sırasında) yararlıdır. Daha önce, bir etkinliğin yürütülmesi sırasında kalıcılığın oluşmasını önlemek için, öğesini kullanan NoPersistHandle bir özel NativeActivity ayar gerekiyordu.

Yeni Akış Çizelgesi Özellikleri

Akış çizelgeleri .NET Framework 4.5 için güncelleştirilir ve aşağıdaki yeni özelliklere sahiptir:

  • DisplayName veya FlowSwitch<T>FlowDecision etkinliğinin özelliği düzenlenebilir. Bu, etkinlik tasarımcısının etkinliğin amacı hakkında daha fazla bilgi göstermesine olanak sağlar.

  • Akış çizelgeleri adlı ValidateUnconnectedNodesyeni bir özelliğe sahiptir; bu özelliğin varsayılanı şeklindedir False. Bu özellik olarak ayarlanırsa True, bağlantısız akış çizelgesi düğümleri doğrulama hataları üretir.

Kısmi Güven Desteği

.NET Framework 4'teki iş akışları tam olarak güvenilen bir uygulama etki alanı gerektiriyor. .NET Framework 4.5'te iş akışları kısmi bir güven ortamında çalışabilir. Kısmi güven ortamında, üçüncü taraf bileşenler konağın kaynaklarına tam erişim verilmeden kullanılabilir. kısmi güven içinde iş akışlarını çalıştırmayla ilgili bazı endişeler şunlardır:

  1. Etkinlikte Interop yer alan eski bileşenlerin (Kurallar dahil) kullanılması kısmi güven altında desteklenmez.

  2. içinde kısmi güven WorkflowServiceHost içinde iş akışlarının çalıştırılması desteklenmez.

  3. Kısmi güven senaryosunda kalıcı özel durumlar olası bir güvenlik tehdididir. Özel durumların kalıcı olmasını devre dışı bırakmak için, kalıcı özel durumları geri çevirmek için projeye tür ExceptionPersistenceExtension uzantısı eklenmelidir. Aşağıdaki kod örneğinde bu türün nasıl uygulandığı gösterilmektedir.

    public class ExceptionPersistenceExtension
    {
        public ExceptionPersistenceExtension()
        {
            this.PersistExceptions = false;
        }
        public bool PersistExceptions { get; set; }
    }
    

    Özel durumlar serileştirilmeyecekse, içinde özel durumların kullanıldığından NoPersistScopeemin olun.

  4. Etkinlik yazarları, iş akışı çalışma zamanının türe karşı yansımayı otomatik olarak yürütmesini önlemek için geçersiz kılmalıdır CacheMetadata . Bağımsız değişkenler ve alt etkinlikler null olmamalıdır ve Bind açıkça çağrılmalıdır. geçersiz kılma CacheMetadatahakkında daha fazla bilgi için bkz. CacheMetadata ile verileri kullanıma çıkarma. Ayrıca, yansıma tarafından oluşturulmasını önlemek için içinde veya özel türünde bağımsız değişkenlerin internal örnekleri açıkça oluşturulmalıdır.CacheMetadata

  5. Türler veya SerializableAttribute serileştirme için kullanmazISerializable; seri hale getirilecek türlerin desteklemesi DataContractSerializergerekir.

  6. kullanan LambdaValue<TResult> ifadeler gerektirir RestrictedMemberAccessve bu nedenle kısmi güven altında çalışmaz. kullanan LambdaValue<TResult> iş akışları, bu ifadeleri öğesinden CodeActivity<TResult>türetilen etkinliklerle değiştirmelidir. .

  7. İfadeler, kısmi güven içinde veya Visual Basic barındırılan derleyicisi kullanılarak TextExpressionCompiler derlenemez, ancak önceden derlenmiş ifadeler çalıştırılabilir.

  8. Düzey 2 Saydamlığı kullanan tek bir derleme, tam güvende .NET Framework 4, .NET Framework 4.6.1 ve kısmi güvende 4.6.1 .NET Framework kullanılamaz.

Yeni Tasarımcı Özellikleri

Tasarımcı Arama

Daha büyük iş akışlarını daha yönetilebilir hale getirmek için iş akışları artık anahtar sözcükle aranabilir. Bu özellik yalnızca Visual Studio'da kullanılabilir; bu özellik yeniden barındırılan bir tasarımcıda kullanılamaz. kullanılabilir iki tür arama vardır:

  • Ctrl+F veya Düzenle, Bul ve Değiştir, Hızlı Bul ile başlatılan Hızlı Bul.

  • Ctrl+Shift+F veya Düzenle, Bul ve Değiştir, Dosyalarda Bul ile başlatılan Dosyalar'da bul.

Değiştir'in desteklenmediğini unutmayın.

Hızlı Bul

İş akışlarında arama yapılan anahtar sözcükler aşağıdaki tasarımcı öğeleriyle eşleşecektir:

  • Activity Nesnelerin, nesnelerin, FlowNodeState nesnelerin, Transition nesnelerin ve diğer özel akış denetimi öğelerinin özellikleri.

  • Değişkenler

  • Bağımsız değişkenler

  • İfadeler

Hızlı Bul, tasarımcının ModelItem ağacında gerçekleştirilir. Hızlı Bul, iş akışı tanımında içeri aktarılan ad alanlarını bulmaz.

Dosyalarda Bul

İş akışlarında arama yapılan anahtar sözcükler, iş akışı dosyalarının gerçek içeriğiyle eşleşecektir. Arama sonuçları Visual Studio Sonuçları Bul görünüm bölmesinde gösterilir. Sonuç öğesine çift tıklanması, iş akışı tasarımcısında eşleşmeyi içeren etkinliğe gider.

Değişken ve bağımsız değişken tasarımcısında bağlam menüsü öğesini silme

.NET Framework 4'te değişkenler ve bağımsız değişkenler yalnızca klavye kullanılarak tasarımcıda silinebilir. .NET Framework 4.5'den başlayarak değişkenler ve bağımsız değişkenler bağlam menüsü kullanılarak silinebilir.

Aşağıdaki ekran görüntüsünde değişken ve bağımsız değişken tasarımcısı bağlam menüsü gösterilmektedir.

Değişken ve Bağımsız Değişken Tasarımcısı Bağlam Menüsü

Sıralı Otomatik Çevrele

bir iş akışı veya belirli kapsayıcı etkinlikleri (gibi NoPersistScope) yalnızca tek bir gövde etkinliği içerebileceğinden, ikinci bir etkinlik eklemek için geliştiricinin ilk etkinliği silmesi, etkinlik Sequence eklemesi ve ardından her iki etkinliği de sıra etkinliğine eklemesi gerekir. .NET Framework 4.5'den başlayarak tasarımcı yüzeyine ikinci bir etkinlik eklerken, her iki etkinliği de sarmalayacak bir Sequence etkinlik otomatik olarak oluşturulur.

Aşağıdaki ekran görüntüsünde, içindeki Body bir WriteLineNoPersistScopeetkinlik gösterilmektedir.

NoPersistScope etkinliğinin Gövdesinde bir WriteLine etkinliği.

Aşağıdaki ekran görüntüsünde, saniye birincinin altına bırakıldığında WriteLine otomatik Body olarak oluşturulan Sequence etkinliği gösterilmektedir.

NoPersistScope Gövdesinde otomatik olarak oluşturulan bir Sıra.

Kaydırma Modu

Tasarımcıda büyük bir iş akışında daha kolay gezinmek için kaydırma modu etkinleştirilebilir ve geliştiricinin kaydırma çubuklarını kullanmak yerine iş akışının görünür bölümünü taşımak için tıklayıp sürüklemesine olanak tanır. Kaydırma modunu etkinleştirme düğmesi tasarımcının sağ alt köşesindedir.

Aşağıdaki ekran görüntüsünde, iş akışı tasarımcısının sağ alt köşesinde bulunan kaydırma düğmesi gösterilmektedir.

İş akışı tasarımcısında vurgulanan kaydırma düğmesi.

Ortadaki fare düğmesi veya boşluk çubuğu, iş akışı tasarımcısını kaydırmak için de kullanılabilir.

Çoklu seçim

Bir kerede, çevresinde bir dikdörtgen sürükleyerek (kaydırma modu etkin olmadığında) veya Ctrl tuşunu basılı tutup istediğiniz etkinliklere birer birer tıklayarak birden çok etkinlik seçilebilir.

Birden çok etkinlik seçimi tasarımcının içine sürüklenip bırakılabilir ve bağlam menüsü kullanılarak da etkileşim kurulabilir.

İş akışı öğelerinin ana hat görünümü

Hiyerarşik iş akışlarında gezinmeyi kolaylaştırmak için, bir iş akışının bileşenleri ağaç stili ana hat görünümünde gösterilir. Ana hat görünümü Belge Ana Hattı görünümünde görüntülenir. Bu görünümü açmak için üstteki menüden Görünüm, Diğer Pencereler, Belge Ana Hattı'nı seçin veya Ctrl W,U tuşlarına basın. Ana hat görünümünde bir düğüme tıklandığında iş akışı tasarımcısında ilgili etkinliğe gider ve ana hat görünümü tasarımcıda seçilen etkinlikleri gösterecek şekilde güncelleştirilir.

Başlarken Öğreticisi'nde tamamlanan iş akışının aşağıdaki ekran görüntüsü, sıralı bir iş akışıyla ana hat görünümünü gösterir.

Visual Studio'da sıralı iş akışı içeren ana hat görünümünün ekran görüntüsü.

C# İfadeleri

.NET Framework 4.5'e başlamadan önce, iş akışlarındaki tüm ifadeler yalnızca Visual Basic'te yazılabilirdi. .NET Framework 4.5'te Visual Basic ifadeleri yalnızca Visual Basic kullanılarak oluşturulan projeler için kullanılır. Visual C# projeleri artık ifadeler için C# kullanıyor. Dil bilgisi vurgulama ve intellisense gibi özelliklere sahip tam işlevsel bir C# ifade düzenleyicisi sağlanır. Visual Basic ifadelerini kullanan önceki sürümlerde oluşturulan C# iş akışı projeleri çalışmaya devam edecektir.

C# ifadeleri tasarım zamanında doğrulanır. C# ifadelerindeki hatalar kırmızı dalgalı alt çizgiyle işaretlenir.

C# ifadeleri hakkında daha fazla bilgi için bkz. C# İfadeleri.

Kabuk çubuğu ve üst bilgi öğelerinin görünürlüğü hakkında daha fazla denetim

Yeniden barındırılan bir tasarımcıda, bazı standart kullanıcı arabirimi denetimlerinin belirli bir iş akışı için anlamı olmayabilir ve kapatılabilir. .NET Framework 4'te bu özelleştirme yalnızca tasarımcının altındaki kabuk çubuğu tarafından desteklenir. .NET Framework 4.5'te, tasarımcının üst kısmındaki kabuk üst bilgisi öğelerinin görünürlüğü uygun ShellHeaderItemsVisibility değerle ayarlanarak WorkflowShellHeaderItemsVisibility ayarlanabilir.

Akış Çizelgesi ve Durum Makinesi iş akışlarında otomatik bağlanma ve otomatik ekleme

.NET Framework 4'te, akış çizelgesi iş akışındaki düğümler arasındaki bağlantıların el ile eklenmesi gerekiyordu. .NET Framework 4.5'te Akış Çizelgesi ve Durum Makinesi düğümleri, araç kutusundan tasarımcı yüzeyine bir etkinlik sürüklendiğinde görünür hale gelen otomatik bağlantı noktalarına sahiptir. Bir etkinliğin bu noktalardan birine bırakılması, gerekli bağlantıyla birlikte etkinliği otomatik olarak ekler.

Aşağıdaki ekran görüntüsünde, araç kutusundan bir etkinlik sürüklendiğinde görünen ek noktaları gösterilmektedir.

Otomatik bağlanma noktalarını gösteren akış çizelgesi başlangıç düğümü

Etkinlikler, düğümü diğer iki düğüm arasına otomatik olarak eklemek için akış çizelgesi düğümleri ve durumlar arasındaki bağlantılara da sürüklenebilir. Aşağıdaki ekran görüntüsünde etkinliklerin araç kutusundan sürüklenip bırakılabildiği vurgulanan bağlantı çizgisi gösterilmektedir.

Bırakma etkinlikleri için otomatik ekleme tutamacı

Tasarımcı Ek Açıklamaları

Tasarımcı, daha büyük iş akışları geliştirmeyi kolaylaştırmak için artık tasarım sürecini izlemeye yardımcı olacak ek açıklamalar eklemeyi destekliyor. Ek açıklama etkinliklere, durumlara, akış çizelgesi düğümlerine, değişkenlere ve bağımsız değişkenlere eklenebilir. Aşağıdaki ekran görüntüsünde tasarımcıya ek açıklamalar eklemek için kullanılan bağlam menüsü gösterilmektedir.

Ek açıklama ekleme menüsünü gösteren ekran görüntüsü.

Hata ayıklama durumları

.NET Framework 4'te, etkinlik dışı öğeler yürütme birimleri olmadığından hata ayıklama kesme noktalarını destekleyemedi. Bu sürüm, nesnelere kesme noktaları State eklemek için bir mekanizma sağlar. üzerinde bir kesme noktası ayarlandığında State, giriş etkinlikleri veya tetikleyicileri zamanlanana kadar durum öğesine geçirildiğinde yürütme bozulacaktır.

Tasarımcıda ActivityDelegate nesnelerini tanımlama ve kullanma

.NET Framework 4'teki etkinlikler, iş akışının diğer bölümlerinin bir iş akışının yürütmesiyle etkileşime geçtiği yürütme noktalarını kullanıma sunma amacıyla nesneleri kullandıActivityDelegate, ancak bu yürütme noktalarının kullanılması genellikle makul miktarda kod gerektiriyor. Bu sürümde geliştiriciler, iş akışı tasarımcısını kullanarak etkinlik temsilcileri tanımlayabilir ve kullanabilir. Daha fazla bilgi için bkz . Nasıl yapılır: İş Akışı Tasarımcısı'nda etkinlik temsilcilerini tanımlama ve kullanma.

Derleme zamanı doğrulaması

.NET Framework 4'te iş akışı doğrulama hataları, iş akışı projesinin derlemesi sırasında derleme hataları olarak sayılmazdı. Bu, iş akışı doğrulama hataları olduğunda bile iş akışı projesi oluşturmanın başarılı olabileceği anlamına geliyordu. .NET Framework 4.5'te iş akışı doğrulama hataları derlemenin başarısız olmasına neden olur.

Tasarım zamanı arka plan doğrulaması

.NET Framework 4'te iş akışları ön plan işlemi olarak doğrulanmıştır ve bu işlem karmaşık veya zaman alan doğrulama işlemleri sırasında kullanıcı arabirimini engelleyebilir. İş akışı doğrulaması artık bir arka plan iş parçacığında gerçekleşir, böylece kullanıcı arabirimi engellenmez.

XAML dosyalarında ayrı bir konumda bulunan durumu görüntüleme

.NET Framework 4'te, bir iş akışının görünüm durumu bilgileri XAML dosyasında birçok farklı konumda depolanır. Bu, XAML'yi doğrudan okumak veya görünüm durumu bilgilerini kaldırmak için kod yazmak isteyen geliştiriciler için uygun değildir. .NET Framework 4.5'te, XAML dosyasındaki görünüm durumu bilgileri XAML dosyasında ayrı bir öğe olarak serileştirilir. Geliştiriciler bir etkinliğin görünüm durumu bilgilerini kolayca bulabilir ve düzenleyebilir veya görünüm durumunu tamamen kaldırabilir.

İfade genişletilebilirliği

.NET Framework 4.5'te, geliştiricilerin iş akışı tasarımcısına bağlanabilecek kendi ifade ve ifade yazma deneyimlerini oluşturmaları için bir yol sunuyoruz.

Yeniden barındırılan tasarımcıda İş Akışı 4.5 özelliklerini kabul etme

Geriye dönük uyumluluğu korumak için, .NET Framework 4.5'te bulunan bazı yeni özellikler yeniden barındırılan tasarımcıda varsayılan olarak etkinleştirilmez. Bu, yeniden barındırılan tasarımcıyı kullanan mevcut uygulamaların en son sürüme güncelleştirilerek bozulmamasını sağlamaktır. Yeniden barındırılan tasarımcıda yeni özellikleri etkinleştirmek için ".NET Framework 4.5" olarak ayarlayın TargetFrameworkName veya tek tek özelliklerini etkinleştirmek için tek tek üyelerini DesignerConfigurationService ayarlayın.

Yeni İş Akışı Geliştirme Modelleri

Bu sürüm, akış çizelgesine ve sıralı iş akışı geliştirme modellerine ek olarak State Machine iş akışlarını ve sözleşme öncelikli iş akışı hizmetlerini içerir.

Durum makinesi iş akışları

Durum makinesi iş akışları, Microsoft .NET Framework 4 Platform Güncelleştirmesi 1'deki .NET Framework 4. sürüm 4.0.1'in bir parçası olarak sunulmuştur. Bu güncelleştirme, geliştiricilerin durum makinesi iş akışları oluşturmasına izin veren birkaç yeni sınıf ve etkinlik içeriyor. Bu sınıflar ve etkinlikler .NET Framework 4.5 için güncelleştirildi. Güncelleştirmeler şunları içerir:

  1. Durumlarda kesme noktaları ayarlama özelliği

  2. İş akışı tasarımcısında geçişleri kopyalayıp yapıştırma özelliği

  3. Paylaşılan tetikleyici geçişi oluşturma için tasarımcı desteği

  4. State Machine iş akışları oluşturmak için kullanılan etkinlikler: StateMachine, Stateve Transition

Aşağıdaki ekran görüntüsünde , Başlarken Öğreticisi adımındaki tamamlanmış durum makinesi iş akışı nasıl yapılır: Durum Makinesi İş Akışı Oluşturma gösterilmektedir.

Tamamlanmış durum makinesi iş akışını gösteren çizim.

Durum makinesi iş akışları oluşturma hakkında daha fazla bilgi için bkz. Durum Makinesi İş Akışları.

Sözleşme öncelikli iş akışı geliştirme

Sözleşme öncelikli iş akışı geliştirme aracı, geliştiricinin önce kodda bir sözleşme tasarlamasına olanak tanır, ardından Visual Studio'da birkaç tıklamayla araç kutusunda her işlemi temsil eden bir etkinlik şablonunu otomatik olarak oluşturur. Bu etkinlikler daha sonra sözleşme tarafından tanımlanan işlemleri uygulayan bir iş akışı oluşturmak için kullanılır. İş akışı tasarımcısı, bu işlemlerin uygulandığından ve iş akışının imzasının sözleşme imzası ile eşleştiğinden emin olmak için iş akışı hizmetini doğrular. Geliştirici ayrıca bir iş akışı hizmetini uygulanan sözleşme koleksiyonuyla ilişkilendirebilir. Sözleşme öncelikli iş akışı hizmeti geliştirme hakkında daha fazla bilgi için bkz . Nasıl yapılır: Mevcut hizmet sözleşmesini kullanan bir iş akışı hizmeti oluşturma.