Window Workflow Foundation Runtime Services: The Persistence Service

Introduction

This is the first of a series of brief articles intended to illustrate the functionality and customizability of the Windows Workflow Foundation (WF) Runtime Services. This first article is focused on describing WF’s persistence service and ways to customize it. Upcoming articles will cover other WF services such as tracking, communication, timer, and transactions to name a few. The article assumes that you are familiar with WF fundamentals. For an introduction to the WF basics, you can read this interesting article from David Chappell.

WF Runtime Services Overview

The Windows Workflow Foundation runtime engine provides the base set of functionalities required to execute and manage the workflow lifetime. The runtime engine architecture is highly extensible. For example, rather than imposing a specific type of host, the runtime engine can be hosted in almost any kind of Windows process. Furthermore, much of the functionality of the runtime engine, implemented in the individual runtime services, can be easily customized. In fact, developers can easily add/remove services to the runtime engine; and using the WF libraries, developers can actually create their own runtime services.

The following are the default WF services:

Service

Function

Persistence

Save and restore the state of the workflow at certain points to-from a durable medium

Tracking

Tracking services are designed to monitor workflow execution through the exchange of data that can then be persisted to a storage medium or output on a specified stream, the System.Console for instance

Timer

The Timer service within the Windows Workflow Foundation (WF) runtime engine is responsible for managing time-outs such as those required by the Delay activity

Transactions

Provides the transaction support needed for data integrity.

Threading

Dispense physical threads used to execute workflow instances

 

Persistence Service Overview.

By default the workflow hosting application executes the workflow instances in memory without any kind of state maintenance. However there are many scenarios, such as long-running processes for example, that require a mechanism for persisting the state of the workflow during some points of its execution. Using WF terminology, the process of persisting a workflow to a durable medium is known as dehydration while restoring is rehydration.

In WF, persistence is implemented using a runtime service whose main function is to save and restore the state of the workflow at certain points to-from a durable medium. WF provides a default persistence service named SQLStatePersistanceService, however due to the extensible model of the runtime services, developers have a broad set of options in order to deal with state persistence including the ability to create their own persistence service. The following sections explore some of these options. . .

Sample Workflow Overview.

 

This sample WF workflow helps to illustrate the functionality of the persistence service. The workflow consists of a sequence of three activities defined in Table 2.

Activity

Activity Type

Function

Before Serialize

Code

Prints the phrase “Before Serialize” to the console

Delay1

Delay

Suspends the workflow execution for a period of 50 seconds

After Serialize

Code

Prints the phrase “After Serialize” to the console

This figure illustrates a graphical representation of the workflow.

Configuring the Sample Workflow to the Persistence Service

The WF runtime engine uses the SQLStatePersistanceService service to allow the hosting application to save/restore the workflow state to/from a SQL Server database. Microsoft SQL Server is a very common and robust medium to maintain the state of the workflow instances, however you can also use other mediums such as any other relational database, XML files, binary files or just about any mechanism available for storing data. The following are the steps required to configure the sample workflow to use the persistence service:

1.      Create and Configure the Persistence Database

2.      Add the SQLStatePersistanceService Instance to the WorkFlow Runtime

3.      Save the Workflow Instance State

 

1. Create and Configure the Persistence Database

 

One interesting thing to note about the WF installation is that it does not require an existing installation of SQL Server, hence the databases required to use this runtime service are not installed by default. Developers who choose to implement the default persistence service, SQLStatePersistenceService, must first run a series of scripts in order to create and configure the persistence database. The following steps describe how to create the databases for the SQLStatePersistenceService:

a.      Use Microsoft SQL Server Query Analyzer to connect to the database server.

b.      Create a new database by creating a new query with the command: "create database <databasename>".

c.      Execute the query by choosing Query-Execute or by pressing F5.

d.      Choose the database created in step 2 above by selecting it from the database drop down list.

e.      Use File-Open to open the SqlPersistenceService_Schema.sql file located in the SQL script directory described above.

f.        Execute the query by choosing Query-Execute or by pressing F5. This will create the tables for the SqlStatePersistenceService service.

g.       Use File-Open to open the SqlPersistenceService_Logic.sql file located in the SQL script directory described above.

h.      Execute the query by choosing Query-Execute or by pressing F5. This will create the stored procedures for the SqlStatePersistenceService service.

2. Add the SQLStatePersistanceService Instance to the WorkFlow Runtime

The next step is to add an instance of the SQLStatePersistenceService service to the workflow runtime. You can add an instance by either embedding code in the host application itself or in its App.Config file.

Adding a Service Instance by Embedding Code in the Host Application

The following code snippet is used inside a host application in order to illustrates how to add an instance of the SQLStatePersistenceService service to the workflow runtime

WorkflowRuntime workflowRuntime = new WorkflowRuntime();

SqlStatePersistenceService stateservice = new SqlStatePersistenceService("Data Source=localhost;Initial Catalog=WFState;Integrated Security=True");

workflowRuntime.AddService(stateservice);

Adding the Service by Writing Code in the Host Application’s App.Config file

Alternatively we can use the App.Config file in order to add an instance of the SQLStatePersistenceService service:

<WorkflowRuntime Name="SampleApplication" UnloadOnIdle="true">

<Services>

<add type="System.Workflow.Runtime.Hosting.SqlStatePersistenceService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ConnectionString="Data Source=localhost;Initial Catalog=WFState;Integrated Security=True;" />

</Services>

</WorkflowRuntime>

3. Persisting the Workflow Instance State to a Durable Medium

Once the persistence service is added to the Workflow Runtime Engine it is ready to persist the state of the workflow instance to a durable medium. One way, to force the workflow instance to persist its state is by calling the Unload method of the workflow instance. Be default, this method uses the persistence service associated with it to remove the workflow instance from memory and save its state.

 

Another way of persisting the workflow state, which is implemented in our sample workflow, is to instruct the Workflow Runtime to persist the state of the instance when entering an idle state. However, this event happens only if the UnLoadOnIdle property is set to true. This property must be set in your code prior to calling the StartRuntime method. The code for configuring this property appears below.

workflowRuntime.UnloadOnIdle = true;

workflowRuntime.StartRuntime();

How it does it

The Workflow Runtime engine persists the workflow state by calling the SaveWorkflowInstanceState method of the persistence service associated with the runtime engine. SaveWorkflowInstanceState is a virtual method of the StatePersistenceService class which is the base class of all persistence services in Windows Workflow Foundation.

 

4. Restoring Workflow Instance from a Durable Medium

The WF runtime engine can restore the workflow instance into memory allowing the instance to be scheduled for execution. One way to restore a workflow instance is by calling the Load method of the workflow instance. The runtime engine will also restore a workflow instance to memory upon reaching the end an idle period.

One other way of restoring the Workflow instance to memory is by interacting explicitly with the persistence service. To do this you have to call the GetWorkflow and Loads methods of the WorkflowRuntime class.

Suppose that in our example we instruct the workflow runtime to persist the instance state upon entering an idle state and then we subsequently suspend the workflow execution just when it reaches the After_Serialize code Activity. At this point, we can query the InstanceState table in the database associated with the SqlStatePersistenceService to get the serialized state.

SELECT uidInstanceID, state

FROM InstanceState

If we then restore the instance using the code below we will ge the following output, “After Serialize…”.

workflowRuntime = new WorkflowRuntime();

workflowRuntime.AddService(new SqlStatePersistenceService("Data Source=localhost;Initial Catalog=WFState;Integrated Security=True");

workflowRuntime.AddService(new SqlTimerService("Data Source=localhost;Initial Catalog=WFState;Integrated Security=True"));

workflowRuntime.StartRuntime();

CurrentInstance = workflowRuntime.GetWorkflow(new Guid("DC466C9E-5285-4D88-A9A2-FB79EAF81360"));

CurrentInstance.Load();

Developing a Custom Persistence Service.

WF provides bases classes that abstract the basic functionality of each of the default runtime services. The StatePersistenceService represents the abstract class that must be inherited by all persistence services. To develop a custom persistence service developers can inherit from this class and override the methods defined in the following table:

Method

Function

SaveWorkflowInstanceState

Saves the workflow instance state to a data store

SaveCompletedContextActivity

Saves the specified completed scope to a data store

LoadWorkflowInstanceState

Loads the specified state of the workflow instance back into memory

LoadCompletedContextActivity

Loads the specified completed scope back into memory

UnlockWorkflowInstanceState

Unlocks the specified workflow instance state

The following code shows a sample persistence service that serializes the workflow instance state to a file.

public class FilePersistenceProvider: StatePersistenceService

                {

                                public FilePersistenceProvider(string basedir)

                                {

                                                FBaseDir = basedir;

                                }

 

                                private string FBaseDir;

                               

                                public override void SaveWorkflowInstanceState(Activity rootActivity, bool unlock)

                                {

                                                ActivityExecutionContextInfo contextInfo = (ActivityExecutionContextInfo)rootActivity.GetValue(Activity.ActivityExecutionContextInfoProperty);

                                                SerializeActivity(rootActivity, contextInfo.ContextGuid);

                                }

 

                                // load workflow instance state

                                public override Activity LoadWorkflowInstanceState(Guid instanceId)

                                {

                                                object obj = DeserializeActivity(null, instanceId);

                                                return (Activity)obj ;

                                }

                               

                                // unlock workflow instance state.

                                // instance state locking is necessary when multiple runtimes share instance persistence store

                                public override void UnlockWorkflowInstanceState(Activity state)

                                {

                                                //not implemented...

                                }

 

                                // save completed scope activity state

                                public override void SaveCompletedContextActivity(Activity rootActivity)

                                {

                                                ActivityExecutionContextInfo contextInfo = (ActivityExecutionContextInfo)rootActivity.GetValue(Activity.ActivityExecutionContextInfoProperty);

                                                SerializeActivity(rootActivity, contextInfo.ContextGuid);

                                }

 

                                // Load completed scope activity state.

                                public override Activity LoadCompletedContextActivity(Guid activityId, Activity outerActivity)

                                {

                                                object obj = DeserializeActivity(outerActivity, activityId);

                                                return (Activity)obj ;

                                }

 

                                private void SerializeActivity(Activity RootActivity, Guid id)

                                {

                                                string filename = FBaseDir + "\\" + id.ToString() + ".bin";

                                                FileStream stream = new FileStream(filename, FileMode.OpenOrCreate);

                                                RootActivity.Save(stream);

                                                stream.Close();

                                }

 

                                private object DeserializeActivity(Activity RootActivity, Guid id)

                                {

                                                string filename = FBaseDir + "\\" + id.ToString() + ".bin";

                                                FileStream stream = new FileStream(filename, FileMode.Open);

                                                object Result = Activity.Load(stream, RootActivity);

                                                return Result;

                                }

                }

The steps to add this service to the workflow runtime are similar to what we did with the SqlStatePersistenceService. The following code shows how to add the FilePersistenceProvider to the workflow runtime.

WorkflowRuntime workflowRuntime= new WorkflowRuntime();

FilePersistenceProvider customservice = new FilePersistenceProvider("c:\\WF");

workflowRuntime.AddService(customservice);

What does it all Mean?

Persistence is one of the most important services required by workflow applications. Windows Workflow Foundation does not impose a specific persistence service. Instead it provides a highly extensible and flexible framework that allows developers to define and customize the persistence architecture for each specific runtime hosts or group of hosts.

 

 

 

Published Wednesday, October 05, 2005 5:00 PM by gsusx

Comments

Thursday, October 06, 2005 9:49 AM by David

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Would it be possible to distribute workflow instances via this method over a cluster of computers, ie use this to enable some sort of grid computing? If a workflow doesn't interact with the outside world but only does heavy calculations, there should be no real problem, right? I can't wait to read your article on the threading service!
Tuesday, October 25, 2005 1:42 AM by Mick Badran

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Nice one! Great to get low level access.....
Friday, June 02, 2006 10:53 AM by Bits & Notes » Jesus Rodriguez on WWF

# Bits &amp; Notes &raquo; Jesus Rodriguez on WWF

# Custom WorkflowPersistenceServices - manuelfoerster.net

Tuesday, October 17, 2006 12:56 PM by while(availableTime>0) {

# Windows Workflow Foundation Resources

Since I´ve been working with Windows Workflow Foundation (Project BHAL), I´ve gathered quite a list of...

Thursday, November 30, 2006 8:03 AM by Bobi

# Mikle

My life's been dull. I just don't have much to say right now, but it's not important. More or less nothing seems worth thinking about.

Friday, December 01, 2006 11:33 AM by Brytney

# Mikle

I just don't have much to say right now. Pretty much nothing seems worth doing. My mind is like an empty room. I haven't gotten anything done these days. What can I say?

Thursday, January 25, 2007 6:42 AM by moredotnet

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Really good article!

Wednesday, February 07, 2007 1:56 AM by moredotnet

# re: Window Workflow Foundation Runtime Services: The Persistence Service

The article is really good. Please tell more on how to persist on Oracle DB. If possible, with an example.

Thanks

Wednesday, February 07, 2007 3:46 AM by Satya Kollapudi

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This article is very nice, but I need information on how to persist on Oracle DB. Please look at in to this request.

Thursday, February 08, 2007 9:26 PM by Kyle San Diego

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This article is very helpful but do you have any sample codes in making Custom Persistence Service for databases?

Monday, March 05, 2007 1:58 PM by Daniel

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Agreed.  Great article.  Any chance of seeing an Oracle example of this?

Wednesday, March 28, 2007 11:56 AM by Yannick

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Most of professionnal users will require an ORACLE adapter to use it on Oracle DB...

If I understood quite right the whole thing, this is namely to create an Oracle Table to save the serialized workflow and its GUID as primary key in a relationnal table

Tell me if I am wrong !

Wednesday, April 11, 2007 1:25 PM by Joe Krueger

# re: Window Workflow Foundation Runtime Services: The Persistence Service

I am having a huge problem using the persistence service in a workflow project that consumes webservices. When I call the Unload method, I get an error telling me that my web service is not marked as serializable. What is going on????? Why does persistence have anything to do with the web reference??

Can you help me?

# buy paxil,Good Jack makes a good Jill <a href= http://minemed.blogcu.com/ >buy paxil</a> http://minemed.blogcu.com/ buy paxil

Good Jack makes a good Jill

<a href= http://minemed.blogcu.com/ >buy paxil</a>

http://minemed.blogcu.com/ buy paxil

# buy levitra,Appetite comes with eating <a href= http://erectmeds.blogs.ro/ >buy levitra online</a> http://erectmeds.blogs.ro/ buy cheap levitra

Appetite comes with eating

<a href= http://erectmeds.blogs.ro/ >buy levitra online</a>

http://erectmeds.blogs.ro/ buy cheap levitra

Wednesday, May 30, 2007 9:55 AM by mark

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Is it possible to seperate the persistate and the unload of the workflow?

Sunday, July 15, 2007 11:40 AM by newc_k

# windows workflow foundation相关资源

windows workflow foundation相关资源

Tuesday, August 07, 2007 8:31 AM by srinivas

# re: Window Workflow Foundation Runtime Services: The Persistence Service

I believe a help ful starter for a begginer

Thursday, April 17, 2008 6:51 PM by nils

# re: Window Workflow Foundation Runtime Services: The Persistence Service

I have a problem with a custom implementation of the Windows Workflow Persistence Service that writes to file. If the host application quits while there are workflow instances on idle states due to delay activity, when loads again I need to manually tell the runtime "WF_Runtime.GetWorkflow(InstanceId)" even when the workflow instance time of delay aren't finished yet. Doing so makes everything works, but if not the instances never load again even when the delay activity's time finish. Although if I use an ExternalCall activity the "GetWorkflow"'s call is not necessary. At the same time if I never close the host application both types of activities works fine without the call.

What do you thing I'm doing wrong?

The implementation of the file persistence service I'm testing is the one given on the Windows Vista and Framework 3 SDK.

Thanks in advance, Nils.

Tuesday, July 08, 2008 12:42 AM by Thanh

# re: Window Workflow Foundation Runtime Services: The Persistence Service

I don’t see NextTimer field in ur Table. I’m considering how the workflow runtime engine can “complete” the workflow instance when DelayActivity timeout?

I have problem with it.

Please give me some advice to solve this one.

Wednesday, September 10, 2008 8:52 PM by abc

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Friday, October 17, 2008 8:44 AM by fadikjan

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Thinking about a church wedding? Congratulations, we wish you well as you begin

your journey into married life. In this section you will find a number of ...

Wednesday, October 22, 2008 2:56 PM by onliniko

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Learn about online home refinance from world - your source for saving money.

<a href=http://qawaead.110mb.com> online home refinance</a>

Wednesday, November 12, 2008 1:15 PM by estimates

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Puppy weight estimates ...

<a href=http://estimate.100webspace.net>Puppy weight estimates</a>

Thursday, November 13, 2008 4:03 AM by Escamirror

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Esca mirror...

<a href=esca.101freehost.com/>Esca Mirror</a>

<a href=esca.101freehost.com/.../a>

Thursday, November 13, 2008 6:59 AM by jbhunter

# re: Window Workflow Foundation Runtime Services: The Persistence Service

JB hunt...

JB weld...

<a href=http://jbhunter.101freehost.com>JB hunt</a>

Thursday, November 13, 2008 11:47 AM by crazyfarmgirl

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Crazy farm girls...

<a href=http://crazyfarmgirl.101freehost.com>Crazy farm girls</a>

Friday, November 28, 2008 2:47 AM by Albina-tc

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href= aseeds.one.angelfire.com >transvestite rockstar</a>

Friday, November 28, 2008 2:43 PM by Albina-jd

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href= http://fairra.angelfire.com >landls end</a> <a href= http://vonucshka.angelfire.com >chancellor internal med</a>

Friday, November 28, 2008 7:42 PM by Albina-wr

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href= http://chkola.angelfire.com >avlastkey</a> <a href= http://bustersw.angelfire.com >how to start a strawberry patch in alabama</a>

Saturday, November 29, 2008 12:34 AM by Albina-rp

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href= http://kustur.angelfire.com >dad vail regatta</a> <a href= http://trututa.angelfire.com >ratings apartments eagle ridge alabama</a>

Wednesday, December 10, 2008 5:48 AM by deathshock

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Shocking Death Videos, Police Transcripts and Crime Scene Photography. ...

also offering the following Shocking Death-Videos available ONLY from FLATLINE ...

<a href=http://deathshock.001webs.com>Shocking Death Videos</a>

Thursday, December 11, 2008 9:59 AM by abercrombie

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Abercrombie Male Model is the new gold standard of male modeling.

The Abercrombie Male has transcended the four corners of product marketing and ...

<a href=http://abercrombie.net63.net>Abercrombie Male Model </a>

Wednesday, December 24, 2008 6:03 AM by plentyoffish

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Free dating site features chat, messaging, forums, ratings, and more.

<a href=plentyoffish.001webs.com/>plenty of fish</a>

Friday, December 26, 2008 6:15 AM by ellaelax-ap

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href= membres.lycos.fr/dertull >zx10r graphics</a>

Sunday, January 04, 2009 11:18 PM by ratemygirlfriend

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Find and share videos at Rate my cam dance. ...

Rate My Girlfriend. Rate My Rack. Rate My Body. Rate My Ass. Rate My Bikini. Join In. ...

<a href=ratemygirlfriend.onlinewebshop.net/index.html>Rate My Girlfriend</a>

Friday, January 09, 2009 10:21 PM by Elleonora

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Crazy college girls video blog, photos, video clips, friends from United States ...

Crazy college girls, college girls " 36 years old male living in United ...

<a href=crazygirls.101freehost.com/index.html>crazy college girls</a>

Saturday, January 10, 2009 11:26 AM by Helloween

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Beautiful free funeral program template designs in WORD format download

from direct from creative artist. Funeral thank you notes, funeral poems for mom, example of funeral ...

<a href=funeral.977mb.com/index.html>free funeral program template</a>

Wednesday, January 28, 2009 11:07 AM by miomiomio

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href=abcletter.101freehost.com/.../a>

English Picture Alphabet Activity For each letter,

write a word in English that starts with that letter, and draw a picture of it. ...

Wednesday, January 28, 2009 2:24 PM by miomiomio

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href=abcletter.101freehost.com/.../a>

English Picture Alphabet Activity For each letter,

write a word in English that starts with that letter, and draw a picture of it. ...

Wednesday, January 28, 2009 11:09 PM by cruelwolf

# re: Window Workflow Foundation Runtime Services: The Persistence Service

While the Russian defence ministry has not confirmed the latest Interfax report,

the BBC's James Rodgers in Moscow says the agency is often used by the Kremlin

to float proposals. Interfax quoted an unnamed military official as saying that

<a href=absolutecrush.steadywebs.com/index.html>absolute crush</a> parts of its missile defence shield in eastern Europe.

Thursday, January 29, 2009 3:28 AM by bugibugi

# re: Window Workflow Foundation Runtime Services: The Persistence Service

They are radar-guided by the Sampson phased-array radar system perched,

like the head of a snowman, atop the Type 45's mast. The radar suite on the Type 45 can track targets for

hundreds of miles around, on the sea and in the air <allday.hostaim.com/index.html>all days</a>

Saturday, February 14, 2009 2:16 AM by microman

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href=freechurcnwedding.steadywebs.com/.../a> Coordination Team is designed to assist the bride in her preparation for her wedding at Bethel.

Information is provided regarding the resources our

Thursday, February 19, 2009 7:08 AM by Bonasierra

# re: Window Workflow Foundation Runtime Services: The Persistence Service

look at me

<a href=firstsite.007sites.com/index.html>First site</a>

Saturday, February 28, 2009 11:02 PM by ellaelax-xi

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href= adultpersonalsfinder.com >singles</a>

Saturday, February 28, 2009 11:02 PM by ellaelax-xi

# re: Window Workflow Foundation Runtime Services: The Persistence Service

<a href= adultpersonalsfinder.com >singles</a>

Thursday, March 05, 2009 7:46 AM by robin

# re: Window Workflow Foundation Runtime Services: The Persistence Service

I have a different situation. I want to get a deep clone of a persisted workflow and move it to another state. the clone changes the state not the original one. I am fine if the GUID changes for the instance iD.

Is it anyway doable?

Thursday, March 26, 2009 3:35 PM by Eleonararoke

# re: Window Workflow Foundation Runtime Services: The Persistence Service

About 2,000 of the former president's supporters reportedly held a counter-rally at Antananarivo's Democracy Square.

The BBC's Christina Corbett in Antananarivo says widespread condemnation of Mr Rajoelina's military-backed rise to power has not deterred him from throwing a lavish inauguration ceremony.

Aides close to Mr Rajoelina say they are not concerned by the string of international denouncements that has followed the former president's removal.

Madagascar's highest <a href=allday.700megs.com/index.html>Wait for me</a> court this week approved the handover of power. On Friday, the US cut off non-humanitarian aid to Madagascar and the African Union suspended its membership.

Tens of thousands of his supporters attended the ceremony at a sports arena in the capital, Antananarivo, but it was boycotted by many diplomats.

Friday, March 27, 2009 4:53 AM by ladysonya

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Mini boden, cheap mini bodens, mini boden online

<a href=http://miniboden.100webspace.net>mini boden</a>

Monday, March 30, 2009 12:38 PM by Blackdanhil

# re: Window Workflow Foundation Runtime Services: The Persistence Service

The <a href=newcombination.110mb.com/index.html>New combination</a>

Room or NCR as it is known in College, was refurbished at the

start of 2008 with atmospheric lighting and beautifully restored wooden

floor boards. The NCR can seat up to 38 guests boardroom style or 50 guests in a

U-shape. It is a perfect room for pre dinner drinks and for numbers over 80 it can be

used in conjunction with the Old Combination Room, it leads guests easily into the Hall

afterwards for dinner.

Thursday, April 02, 2009 4:44 PM by Blackdanhil

# re: Window Workflow Foundation Runtime Services: The Persistence Service

The <a href=newcombination.110mb.com/index.html>New combination</a>

Room or NCR as it is known in College, was refurbished at the

start of 2008 with atmospheric lighting and beautifully restored wooden

floor boards. The NCR can seat up to 38 guests boardroom style or 50 guests in a

U-shape. It is a perfect room for pre dinner drinks and for numbers over 80 it can be

used in conjunction with the Old Combination Room, it leads guests easily into the Hall

afterwards for dinner.

Saturday, April 18, 2009 1:05 PM by michaelsanders

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Russian sks rifles for sale. The easiest place to look for Russian SKS rifles for

sale is at a gun show. Gun shows frequent large cities and have many different

models of guns available to purchase. Russian SKS rifles are just one of the many that can be purchased by enthusiasts. When attending a gun show, it is important to make offers on Russian SKS rifles near the end of the show. Dealers are more likely to give you a better deal if they are trying to liquidate any inventory or overstock. Russian sks rifles for sale. Russian sks rifles for sale <a href=toptravel10.110mb.com/index.php sks rifles for sale</a>

Wednesday, June 10, 2009 9:28 PM by gas powered scooters

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Best  cheap gas powered scooters

www.world66.com/.../gas_powered_scoote

Wednesday, June 10, 2009 9:29 PM by gas powered scooters

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Best  cheap gas powered scooters

www.world66.com/.../gas_powered_scoote

Wednesday, July 29, 2009 12:19 PM by name

# re: Window Workflow Foundation Runtime Services: The Persistence Service

So where it to find,

Thursday, July 30, 2009 1:59 AM by name

# re: Window Workflow Foundation Runtime Services: The Persistence Service

So where it to find?,

Tuesday, September 01, 2009 12:32 AM by AnjellaPrimes

# re: Window Workflow Foundation Runtime Services: The Persistence Service

A day of commemorations has begun in Poland to mark the 70th anniversary of the outbreak of World War II.

The first ceremony took place at dawn on Westerplatte peninsula near Gdansk, where a German battleship fired the first shots on a Polish fort in 1939.

Poland's president and prime minister led the ceremony at the fort.

<a href=telligent.com/.../AnjellaPrimes leaders</a> from 20 countries including Germany and Russia are expected in Gdansk later in the day as ceremonies continue.

At 0445 (0245 GMT) Polish President Lech Kaczynski and Prime Minister Donald Tusk joined war veterans beside a monument to the heroes of Westerplatte.

The ceremony marked the exact time on 1 September 1939 when the German battleship Schleswig-Holstein opened fire at point-blank range on the Polish fort there.

At the same time, the German Wehrmacht invaded Poland over three frontiers.

The attacks triggered Britain and France's declaration of war against Germany two days later.

Monday, September 14, 2009 1:30 AM by buyusedcars

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Hey very nice blog!! Man .. Beautiful .. Amazing .. I will bookmark your blog and take the feeds also...

Sunday, October 11, 2009 12:18 AM by shelpblethy

# re: Window Workflow Foundation Runtime Services: The Persistence Service

Nice post! GA is also my biggest earning. However, it’s not a much.

Wednesday, November 11, 2009 7:23 PM by Cynthia Roberts

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This brings to mind this thing my mom used to say...

Obviously it's surely inappropriate right this moment...

Wednesday, November 11, 2009 11:53 PM by James Anderson

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This brings to mind this thing my grandma always said...

However it is probably inappropriate right now...

Thursday, November 12, 2009 12:04 AM by Wayne West

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This brings to mind something funny that my uncle always said...

Obviously it's definitely not appropriate at this time...

Thursday, November 12, 2009 1:27 AM by Marilyn Hernandez

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This brings back to mind this thing my mom used to say...

But then it's most likely inappropriate just now...

Thursday, November 12, 2009 3:07 AM by Jeffrey Jordan

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This brings back to mind something that my grandmother would always say...

Then its totally not appropriate right this moment...

Thursday, November 12, 2009 5:45 AM by Nicole Harris

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This brings back to mind something that my sister always said...

But then it is so not appropriate just now...

Thursday, November 12, 2009 6:07 AM by Virginia Fisher

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This reminds me of something that my aunt always said...

However it's probably inappropriate just now...

Thursday, November 12, 2009 7:33 AM by Jeremy Ross

# re: Window Workflow Foundation Runtime Services: The Persistence Service

This brings back to mind something my grandfather always said...

However it is surely not appropriate right this moment...

Leave a Comment

(required) 
(required) 
(optional)
(required)