Introduction
In this article we will see how to create a sequential work flow in SharePoint 2010 using VS 2010.
Objective
Let's make the scenario simple. We want to create a simple work flow and if the work flow status is not completed, we need to prevent the user from deleting the document.
Steps
First we need to create a "Status" column with a Choice field type with various status options in our Document library.
![Sequenceworkflow1.jpg]()
Once the "Status" column was created, the document library will be as shown below:
![Sequenceworkflow2.jpg]()
Open the VS2010 -> Select SharePoint 2010 -> Select the Sequential work flow project type and complete the wizard as shown below.
![Sequenceworkflow3.jpg]()
![Sequenceworkflow4.jpg]()
By default we have the following simple start page:
![Sequenceworkflow5.jpg]()
Just click the OnWorkFlowActivated step and create an event called OnWorkFlowActivated_Invoked:
![Sequenceworkflow6.jpg]()
Just double-click the onWorkflowActivated step. It will redirect to the code behind file.
![Sequenceworkflow7.jpg]()
Drag a while loop step from the Tool Box, below the onWorkflowActivated step:
![Sequenceworkflow8.jpg]()
![Sequenceworkflow9.jpg]()
Select the while loop step and in the property window configure the "Condition" as "Code Condition" and create an event called "IsWorkFlowPending".
![Sequenceworkflow10.jpg]()
![Sequenceworkflow11.jpg]()
![Sequenceworkflow12.jpg]()
![Sequenceworkflow13.jpg]()
![Sequenceworkflow14.jpg]()
![Sequenceworkflow15.jpg]()
Place the following in the our workflow:
![Sequenceworkflow16.jpg]()
Invoke the "IsWorkFlowPending" method in both the "onWorkflowActivated_Invoked" and the "onWorkflowItemChanged1_Invoked" methods.
![Sequenceworkflow17.jpg]()
Let's deploy the solution and we will check whether or not the workflow is deployed in our document library.
![Sequenceworkflow18.jpg]()
Upload a document and start the workflow:
![Sequenceworkflow19.jpg]()
We will see the workflow status as "InProgress" in the document library.
![Sequenceworkflow20.jpg]()
Edit the task and change the status to Approved. Our workflow status will change to "Completed".
![Sequenceworkflow21.jpg]()
We can prevent the user from "Deleting" the document, if the "Status" is not completed. Just add an Event Receiver in the same work flow project.
![Sequenceworkflow22.jpg]()
![Sequenceworkflow23.jpg]()
In the code behind file, we will prevent the user from deleting a document if the status is "Pending".
![Sequenceworkflow24.jpg]()
Let's check the code in the UI using a document which is in the InProgress Status and try to delete the document.
![Sequenceworkflow25.jpg]()
If we click ok also the document is still in our repository.
![Sequenceworkflow26.jpg]()
Let's make some changes in the code to display a user friendly message:
![Sequenceworkflow27.jpg]()
Now when we try to delete the document we will see the following message.
![Sequenceworkflow28.jpg]()
Summary
We created a simple work flow in VS 2010 and prevent the users from deleting a document, if its not approved.