When I first started looking into Windows Workflow one of the first things that I liked about it was how it separated responsibilities. The workflow was responsible for handling the procedural logic with all its conditional statements, etc. Whilst individual code activities could be written to handle the business logic processing; created in small easily re-usable components. To try and realise my original perception this series of blog posts will cover the unit testing of . . .
As part of my day job I’ve been experimenting with Windows Workflow in both modifying the existing TFS2010 build templates and as a way of controlling the process flow in our new suite of applications. On the most part I’ve been really impressed; when you sit in a process workshop watching the business users mapping the existing steps out on a whiteboard (or even a wall) it is quickly apparent that showing them a similar . . .
When looking to automate a TFS2010 build one of the first issues that most people seem to encounter is that all the binaries of each project in a solution end up in the same “bin” directory. The forum post TFS 2010 BUILD SERVER: Can not keep folder tree in the drop location ? details the solution; which is changes to both the CSPROJ file and the workflow template that is called by your build. Note: . . .
In this post, we will extend the query functionality to handle stored procedures with parameters. To do this we need to create a new query type interface with an example implementation: Now that we have the ability to create stored procedure queries we need something to handle them. To do this we need a concrete implementation of the interface “IHandleAQuery”: Finally, we update our factory to handle the new query interface and return the correct . . .
In part 3 we created a SQL repository object that took a populated instance of IQuery to select/return an enumerable list of objects. A limitation of the repository was that the query had to be text-based, it couldn’t handle stored procedures and/or parameters. By incorporating an abstract factory pattern we can extend the functionality to handle different types of query. The original code inside “SqlRepository.Get(…)” needs to be changed from: To: The static factory class . . .
In Part 1 of this series, we started with a basic Data-Reader / SQL Connection/Command pattern and illustrated how it is possible to abstract the parsing of the Data Reader into a standalone object that can be fully unit tested in isolation of the calling code. In Part 2 of the series we made a very simple optimisation to the “DataReader” convertor and updated the tests to capture/verify the changes. In part 3 of the . . .
When creating NuGet packages, how do you define your dependencies? If you’re using the default setting of ‘x’ version or newer are you sure that all future versions of the dependency will work with the current version of your code? I’m not sure many people would be happy saying yes to that question but most NuGet packages are deployed with the default setting for their dependencies. Using a typical dependency, Log4Net, you might deploy a . . .
Just as I start getting up to speed with WF4.0 MSDN magazine publishes an article detailing what’s new in WF4.5. It looks like there’s a lot of good stuff coming but the main thing that I noticed was that v4.0 requires full-trust to run. That shouldn’t be a problem for the project we’re intending to run the workflow in, but if it will run in partial trust in the next release that will open up . . .
I’ve been trying to find workflow resources on Twitter but unlike some other technologies, there doesn’t seem to be much regular traffic. The hashtag #WF4 does seem to be used and I’ve started a twitter list of people I find regularly talking about WF4.0 on-line.
Today I’ve started learning about Windows Workflow v4.0, I’m hoping that it will help out with a current project. The original requirement was for mapping real-world business processes to what would normally be complex long-running computer tasks. Whilst investigating what it could do I’m beginning to think there could be real value using it for any task that requires process flow logic, even extremely short-lived ones. This could be controlling page flow through a web . . .