|
|
Browse by Tags
All Tags » WF (RSS)
-
If you are coming to the SOA/BPI conference in October - consider coming two days early and hearing Aaron, Matt, and I do a deep technical presentation on all the cool new stuff coming out from the Connected Systems Division at MS. Details are here - http://www.pluralsight.com/courses/WhatsNewInCSD.aspx Check out my BizTalk R2 Training . Read More...
|
-
I've had alot of people ask when I am teaching WF next - if you are interested in sitting through me talking about WF for four intense days - come to laid-back Australia. Pluralsight is teaming up with Readify to offer the course. I'm super excited since this will be my first trip to Australia. I can't wait. If you are in the area - or just want an excuse to come to Australia - sign up ;-) Applied Windows Workflow Foundation in Australia Nov 13-17th Check out my BizTalk R2 Training . Read More...
|
-
OK guys (and girls), this something I have been thinking about for a while, and I was very interested in your feedback. I would like to create a ".NET 3.0 Blackjack game". The idea is as follows: There are a number of components to the game: The Dealer One or more Players From a technology point of view, both the Dealer and the Player could be implemented as WCF services. I want folks to be able to play the game on remote computers, so we should probably use the wsdualHttpBinding in Internet scenarios and the netTcpBinding when we are within the firewall. The "core logic" or both the Deal and the Player could be controlled by a workflow (probably a State-Machine workflow, because of the event-driven nature of the game). Note that the workflow would not make ALL decisions for you, but it would know when you are busted, when you must take another card etc. When multiple choices are open, it would let make the final decision. Same for the dealer, we could develop a workflow for him also. The User Interface of the app would be displayed on all screens, and would be controlled by the WCF services, and of course, would be written in WPF. So, clearly this is just rambling on my part, but I am very interested in your feedback. We could make this a real cool, showcase application, maybe even have it on CodePlex later. This application would easily lend itself to be "farmed out" to different contributors once the core architecture and interfaces have been defined. This game would nicely Read More...
|
-
Workflow Services Primer What are WF Runtime Services? WF is a foundation framework which provides a number of components that together provide the necessary infrastructure to execute a workflow instance. When you take a look at the overall architecture of WF, you notice that it has been designed to be very extensible and configurable. A high level WF architecture diagram is provided below: In this article, we want to talk about the box in blue, which represents the Workflow runtime services. Runtime Services are class instances that you create and register with the Workflow Runtime during application startup (typically in the host startup code). Each service has a particular purpose within the Workflow system. Workflow Services come in two varieties: Core Services. Local Services. WF Core Services The behavior and functionality of the WF core services has been pre-defined by Microsoft. In some cases, the Workflow Runtime will register its own default implementation of a core service if you don't provide your own (a typical example is the default Scheduler Service). In other cases, the Workflow Core Service is optional and a default instance is not automatically registered for you, such as is the case for the Workflow Persistence Service. WF Local Services WF Local Services are developed by you to serve any of your current needs. One common use of local services are Local Communication Services which serve a communications conduit to and from your workflow instances. Once you Read More...
|
-
Back in November I delivered a presentation to the Twin Cities BizTalk User Group titled 'Rule Engines: Workflow Rules vs. BizTalk Rules'. Since then I have been working with the Rules Team in Redmond and with their input I have updated and added content to that presentation. Hopefully the presentation will help you when you get questions about how the Workflow Rules compare and relate to the BizTalk Rules Engine. Read More...
|
-
Paul Andrew announced recently a coming CTP [1] that will provide BPEL 1.1 support to Windows Workflow Foundation. This will provide a set of custom WF activities that map to BPEL 1.1 constructs as well as tooling to import BPEL processes into WF XAML workflows and export the other way around. I think overall this is very good news and, as Paul says, highlights the power and flexibility offered by the domain-neutrality of the WF runtime. Paul also mentions that this will, in the end, be supported in a future release of BizTalk Server, once the orchestration engine is built on top of WF, and by that time the toolkit support should have already been expanded to provide BPEL 2.0 compatibility in both WF and BizTalk. Pretty exciting stuff which I'm sure will provide some good selling points for both products (even if many people don't use it eventually). One important aspect of this that is interesting to consider: the WF approach to writing workflows means that, if BPEL compatibility is an aspect you care about, you'll need to restrict yourself to a subset of the power of WF in order to remain compatible (and meaning being able to later export your WF workflows into BPEL). This is something I completely expected and understand (and even welcome, to a point), but it's something some people might not realize right away. [1] Am I the only one getting lost along the miriads of CTPs coming out of Redmond lately? Seems pretty imposible to keep up if you actually have a day job! Windows Read More...
|
-
I got a review copy of K. Scott Allen 's " Programming Windows Workflow Foundation: Practical WF Techniques and Examples using XAML and C# " book and I just finished reading it recently, and wanted to take a moment to mention my opinion about it. First of all, I'm probably not quite Scott's target audience, seeing how I was already familiar with WF before getting into the book. From my point of view, the book aims to provide a quick introduction to what WF is and how to get started programming it. In that aspect, I think it does a pretty good job. The book starts by quickly introducing what WF and what it is composed of (the runtime, activities, designer, XAML and so on). Chapter 2 then talks in a bit more detail about how to create and design workflows, covering both the principal aspects of how the VS designer works, as well as writing workflows in code and XAML. But this chapter also goes a bit further and covers using the workflow compiler both from the command line (wfc.exe) as well as programmatically and XAML workflow activation. Chapter 3 is dedicated to writing sequential workflows, though it also covers basic host <-> workflow communication using the workflow runtime events, workflow parameters and external data services. The latter are taken up in more detail in chapter 4, which covers most of the basic activities in the base activity library. Chapter 5 introduces how to write custom activities. While the cover here is somewhat light (as expected given the breath Read More...
|
-
Harry Pierson posted a story about Windows Communication Foundation and his "epiphany" (my words) on the usefulnes of WS-ReliableMessaging in Web Services. I found several comments here that made me think. Sam Gentile recently commented as well on the importance of WS-RM, and I did a few quick posts there. Let me first start this discussion that I believe that the basic concept behind reliable messaging (and WS-RM) is indeed very important and very needed in the Web Services World to make it easier to implement reliable services and integrate disparate applications. That said, I've been frank in the past and say that I believe that the WS-RM spec, as it exists right now, is remarkably lacking. Harry mentioned the core point: It does not demand persistence of the message and conversation state from the endpoints involved in the communication. Thus, as WS-RM currently exists, and how platforms such as WCF implement it, it means you don't really have the guarantee of reliablity. At best, all you have is the illussion of reliability. The only thing you can be sure of is that one of your endpoints is gonna fail, sooner or later. If there is one thing that I have learned from my work on Application Integration (with and without BizTalk), is that ensuring reliable communication across a distributed application infrastructure is a tough nut to crack. There's a lot of very significant issues that can arise here, depending on the type of problem domain you're solving: Message delivery, Read More...
|
-
Two new articles just got published to MSDN covering the Tracking facilities in Windows Workflow Foundation in great detail. The first one is " Windows Workflow Foundation: Tracking Services Introduction ", by David Gristwood, and provides a high-level introduction to what Tracking is and how it works in WF. It also shows how to instrument (add tracking) to a workflow and a brief example of how to use SqlTrackingQuery on your app to read the information written by the workflow tracking service. Towards the end, the article discusses Tracking Profiles and what they do. The second article is " Windows Workflow Foundation: Tracking Services Deep Dive " by Ranjesh Jaganathan, and this one focuses on the underpinings of the tracking facilities. One thing I liked here was the whole discussion about how profiles, trackpoints and locations are related to one another, as they provide a clear overview of how it works for anyone wanting to create custom tracking profiles, as well as how to use Extracts in your trackpoints to extract the data you want tracked from your workflow and activity instances. Windows Workflow Foundation , WF , Tracking Read More...
|
-
Harry Pierson talked a bit about the stuff he's learning on BizTalk Server in Morning Coffee 12 entry (btw, loving them, keep it up!). Looks like he's attending a great class with Matt Milner . A few comments that sparked my interest: Harry says that conceptually BizTalk hasn't changed all that much since the 2000/2002 days. I'm not sure I'd agree, but that would depend on what he means by "conceptually" I'd say that from an architecture point of view, the the change between 2002 and 2004 was a very significant one, requiring you to adapt to a lot of new stuff. Here's why I feel this way: The orchestration engine was pretty much rewritten. The designer by itself is a great improvement, but it's far more than that: There's no more interpreted XLANG, now we have XLANG/s Orchestrations (*.odx) are compiled down to C# and then to MSIL. Now we have a pretty powerful correlation mechanism as well as convoys. Native .NET support (it is .NET after all!) The messaging model changed significantly: Most of the terminology changed. Remember channels, AICs and Receive Functions? The messaging model is now mostly symmetrical, unlike in 2000/2002 where the send and receive sides were very different. The pipeline model is far nicer (have I mentioned I love pipelines? they're fantastic!). The adapter framework. Sure beats down anything we had in 2000/2002! Writing adapters is still hard, but writing them in .NET is far easier. Application Integration Components (AIC) were a kludge, anyway. New Read More...
|
-
Here are some articles I found interesting that I've read recently: Workflow in Application Integration : Kevin Francis talks a bit about application integration architecture in the enterprise on the Architecture Journal 9. Despite the title, it doesn't really talk much about Workflow, but rather about the whole architectural perspective on integration. Commonwealth Bank of Australia CommSee Solution: An interesting look at a case study, in this case the CommSee application at the CBA. Part 1 focuses on the overall backend architecture for the application; Part 2 focuses on the front end: a Smart client Windows Forms application and Part 3 focuses on the infrastructure and development/test process. A few other architecture case studies can be found here . Building Interoperable Insurance Systems with .NET 3.0 Technologies : An interesting case study on building an insurance system based on insurance standards ( ACORD ), WCF and Web Services, Windows Workflow Foundation, a smart client and BizTalk Server 2006. It also appears to use "SQL Server 2006" . Some really interesting bits here... Architecture , WCF , BizTalk Server , WF Read More...
|
-
We just uploaded to our corporate site a small sample we created for the Windows Vista Launch in Colombia, showing some features in Windows Communication Foundation, Windows Workflow Foundation and BizTalk Server 2006. The sample showcases a simple business scenario that uses features like WCF self-hosted services, multiple bindings (HTTP and TCP) and callback contracts. The service is consumed by a simple WinForms client, as well as a simple State-Machine Workflow that uses the HandleExternalEvent activity to receive events fired by the WCF service, as well as my own custom MSMQ activities to fire messages off to BizTalk for further processing. (Notice we focused on the core features and keeping the code simple to showcase them, so the sample lacks quite a bit of error handling). WCF , WF , BizTalk , Vista Read More...
|
-
I thought I understood how the WF Rules iterated over a collection. Isn't that always how it goes - you really prove it to yourself when you can explain it to someone else. Well, I started to explain how I thought it worked and this person started asking questions and I soon realized that I was no longer sure I understood it. After a bit of research and with my newly obtained understanding I tried to explain it again and it actually made sense. So, I have decided to blog about this since I am sure that others will most likely need to do this and may even need to explain it to someone else. During my research I found the MSDN article titled Introduction to the Windows Workflow Foundation Rules Engine which had a little blurb towards the bottom titled Collection Processing which I found to be a good start. I also found Matt Winkle's blog entry which had an example that he put on the Workflow Community Site. It was this example that really solidified it for me. he had created 4 rules Rule 1 : Initialize with a priority of 2 IF 1==1 THEN this.enumerator = this.OrderItems.GetEnumerator() Rule 2 : IterateOverItems with a priority of 1 IF this.enumerator.MoveNext() THEN this.currentItem = (RulesWithCollectionSample.OrderItem)this.enumerator.Current System.Console.WriteLine("Assignednumerator" + this.currentItem.Price) ELSE System.Cosole.WriteLine("we are all done") Rule 3: IndividualItem with a priority of 0 IF this.CurrentItem != null THEN this.Total = this.Total + this.CurrentItem.Price Read More...
|
-
Someone asked an interesting question on the Windows Workflow Foundation forums regarding how to prevent a custom composite activity from being a direct/indirect child of itself, similar to how the TransactionScopeActivity does. However, he wanted to be able to control this in the WF designer, and not just using a custom activity validator like the TransactionScopeActivity does. After looking a bit, I came to the conclusion that there's no 100% sure way of doing this using the current WF designer bits. The problem is that basically you get pretty good notifications in a composite activity designer when something happens to your children, but very little in the way of what happens further down the activity tree. That said, you can control some of the most common scenarios directly, and leave some corner cases to an ActivityValidator. In particular, one can fairly easily cover the following scenarios: You can prevent the user from adding a direct child of the same type You can prevent the user from copy-pasting/dragging a direct composite activity child that contains an activity of the same as a direct/indirect child (i.e. you can prevent the user from dragging a sequence activity containing one of your activities into your activity). You can prevent an instance of your activity being added anywhere there's an activity of the same type as a parent/grandparent. Here's a sample ActivityDesigner that covers these three scenarios tied to a sample activity called ParentActivity: public Read More...
|
-
In my previous blog entry on Tracking and the TrackingExtract functionality I talked about the ability to track the rules that fired. As part of this functionality I needed to capture the rules that fired as well as to capture an XML representation of the object state (this is where the TrackingExtract functionality came in) to the database so that reporting systems could look at the data. When I first started researching to find out if this functionality existed I came across a great tracking sample on Moustafa Ahmed's blog. This sample shows how you can use the standard tracking infrastructure to track the rules. Unfortunately, the standard tracking functionality didn't do exactly what I was looking for. First, the data is written to the UserEvent table in the UserData_Blob field and shows up as 0x0001000000FFFFFFFF01000000000000000C020000005D53797374656D2E576F726B66......., which, represented the serialized object, but was somewhat unreadable. Next, I would need to deserialize this data and cast it to a RuleActionTrackingEvent type in order to work with it for reporting. And lastly, I wanted to store additional data that was not part of the UserEvent table. So, I needed to augment the standard functionality with my functionality. I started by creating two new tables that would live in the tracking database. The first was the RulesTrackingData table and the second was the UserTrackingData table. They were defined as CREATE TABLE [dbo].[RulesTrackingData]( [id] [bigint] IDENTITY Read More...
|
|
|
|