module 9 - workflow

Post on 13-Nov-2014

464 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Module 9: Workflow

Overview

Workflows in Microsoft SharePoint Products and Technologies

Workflow Life Cycle

Building Custom Activities

Building Custom Workflow Templates by Using Microsoft Visual Studio

What Is a Workflow?

Long Running : Days, Weeks, Months, Years

Serializable: Doesn’t have to be running the whole time

Resumable: Can be restarted when necessary

SharePoint and Workflow

SharePoint is a:

Persistence Engine – You don’t have to worry about where the workflow is stored

User Interface – Interact via the Web or through Microsoft Office system integration

Workflow brings process to SharePoint data

Differentiating Event Handlers and Workflow

Event Receiver

Lightweight

Short Running

Automatic Initiation

No User Interface

Workflow

Robust

Long Running

Automatic or User Initiation

Optional User Interface

Non-Developer Workflow Options

Out-of-the-Box Templates

Three Templates: Three State, Approval, Collect Feedback

Easy to use but flexibility is limited

SharePoint Designer

Easier to build than workflows with Visual Studio

Limited rules-based engine

Can not be moved between sites or between environments (not reusable)

Workflow Life Cycle

Developer develops a workflow template

Developer wraps workflow template in

Feature and Solution

Farm administrator deploys the workflow

solution

A Site Collection administrator activates the

workflow feature

Administrator creates a workflow

association with a list or content type

User or event starts a workflow

instance

Workflow executes activities and

optionally creates tasks and history

items

Optionally, the workflow owner

modifies the running workflow instance

Workflow completes

Workflow Forms

Association – When the workflow template is associated with a list

Instantiation – When a workflow instance is started

Workflow Modification Form – When the user wants to modify the flow of a running workflow

Workflow Status Form – The form displayed to the user to indicate the status of a workflow

Content Types and Workflows

Workflows can be associated with a content type

Workflow Tasks are a special content type (0x010801)

Content Types can have special new, display, and edit forms

Therefore, the task edit page for a workflow task can be customized

Development Environment

Microsoft Visual Studio 2005

Windows Workflow Foundation Extensions for the design experience

SharePoint Workflow Project templates

Microsoft Visual Studio 2008

Microsoft Visual Studio Tools for Microsoft Office

2008 delivers a workflow project template

Automates deployment and activation

Components of a Workflow

Simple Activities – Does something

Composite Activities – Coordinates other things

Custom Code (via Simple Activities) – Does everything else

Simple Workflow Activities

An activity is:

An atomic set of instructions used to complete a unit of work

A reusable component used to compose workflows

Activities are like controls in forms development

You drag and drop them onto a design surface

You modify their properties with property sheets

You generate event handlers and write code inside

Common Composite Activities

If Else

While

Sequence

Parallel

Writing Code in the Workflow

Code Activity

Contains one method to execute—thus providing a way to plug code directly into a workflow

Custom Developed Activity

Derive from the Activity class, override the Execute method, and deploy to the Global Assembly Cache (GAC)

The Workflow Project

Sequential Workflow

Predictable and fixed path for the workflow

Move from one activity to the other, possibly branch but flow is predefined

State Machine Workflow

Event-driven workflow

Events control theexecution of the activities

Model the Workflow

Drag and drop activities on the design surface

Service activities

Event activities

Code activities

Activities to branchthe workflow

SPWorkflowActivationProperties

Delivers SharePoint context information to your workflow code

Property bound to WorkflowProperties property of OnWorkflowActivated event activity

Access item information

Process association and initiation data

public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();

public double TotalAmount = 0;private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e){

TotalAmount = Convert.ToDouble(workflowProperties.Item["Total"]);}

Branch the Workflow

Define Rules

Code condition

Declarative condition

Code Activity

Basically empty activity

Connect your event handler executing custom code

private void SetApproved_ExecuteCode(object sender, EventArgs e){

workflowProperties.Item["ReportStatus"] = "Approved";}

Model of the Workflow

CreateTask activity

WhileActivity

OnTaskChanged activity

CompleteTask activity

Preparing a Task

Item based on Workflow Task content type

Inherits from Item content type

Additional fields to store workflow information

Event handlers

Hook up your own code with the event handlers and

Assign an ID

Set the properties of the task item

private void createTask1_MethodInvoking(object sender, EventArgs e){

Task1Id = Guid.NewGuid();Task1_Properties.Title = string.Format("Expenses of {0} to Approve",

workflowProperties.Item["Name"].ToString());string managerEmail = workflowProperties.Item["ManagerEmail"].ToString();string manager =

workflowProperties.Web.AllUsers.GetByEmail(managerEmail).LoginName;Task1_Properties.AssignedTo = manager;

}

While Loop

Code condition

Class-level variable in code is set to true if manager completes the task (setting percentage complete to 100%)

Exit the loop when condition is false

private void IsWaiting(object sender, ConditionalEventArgs e){

e.Result = !taskCompleted;}

Workflow Forms

Forms are used for configuring, initiating, and modifying workflows and completing tasks

Association Form, Initiation Form, Modification Form, and Task Edit Forms

ASPX Forms

Can be used by Windows SharePoint Services and Microsoft Office servers

Server-side only

InfoPath Forms (SharePoint Server or Microsoft Office Forms Server)

Server rendered by Microsoft Office Forms Server

Microsoft Office client integration

Write once, run server and client (same form)

ASPX Pages

Replace Windows SharePoint Services ASPX pages with custom ASPX pages in workflow feature

<Workflow Id="4797A6A6-4F31-40ca-9814-746402C2DB56" Name="Litware Approval"Description="Sample workflow template demonstrating workflow input forms"CodeBesideClass="LitwareWorkflows.LitwareApproval"CodeBesideAssembly="LitwareWorkflows, Version=1.0.0.0, Culture=neutral,

PublicKeyToken=74bad7277fe0d19e"AssociationUrl="_layouts/Litware/LitwareApprovalAssociation.aspx"InstantiationUrl="_layouts/Litware/LitwareApprovalInitiation.aspx"ModificationUrl="_layouts/Litware/LitwareApprovalModificationForm.aspx"TaskListContentTypeId="0x0108010084565D92BEFE4a75A28C2F658B7BECCA" ><MetaData><Modification_c7a53c4e-ab25-450f-a595-ae2b380d7c3e_Name>Modify workflow instance with a custom Litware form

</Modification_c7a53c4e-ab25-450f-a595-ae2b380d7c3e_Name></MetaData><Categories/>

</Workflow>

Typical Flow of Creating ASPX

Create ASPX with code-behind

Note that you have to manage all of the interaction between your page, Windows SharePoint Services, and the workflow engine

E.g., Creating the association, starting the workflow, serializing the data

Deploy ASPX in 12\Template\Layouts folder

Review

Workflows in Microsoft SharePoint Products and Technologies

Workflow Life Cycle

Building Custom Activities

Building Custom Workflow Templates by Using Microsoft Visual Studio

top related