Bulk Editing Workflow Tasks in Office SharePoint Services 2007

OK, we're back. Since it's now officially 2007, it seemed appropriate to focus my first entry of the New Year on Office SharePoint Server 2007, and Office InfoPath 2007.

Shortly before the holidays, someone asked me if I had any guidance for customers who wanted to set up workflow tasks to be bulk editable. To which I promptly replied:

You can do what?

I swear, there's so much functionality crammed in this product that sometimes I think it's going to take me the next two product cycles just to cover it all properly. I had no idea you even could edit workflow tasks as a group.

So, without further ado, here's the scoop:

In Office SharePoint Server 2007, you can define workflow tasks as bulk editable, and provide a custom InfoPath form view to enable users to edit workflow tasks as a group.

Bulk editable tasks are workflow tasks that can be edited as a group. All the tasks must be of the same task type, and from the same workflow association. For example, a user might want to mark all tasks of a certain type as 'complete' for a given workflow association.

In addition, by using an InfoPath form as the workflow task edit form, you can include logic in the InfoPath form to switch form views depending on whether the user is editing an individual task or bulk editing tasks.

Editing Workflow Tasks

Workflow tasks are displayed in task lists, just as any other tasks. When the user navigates to the task list, the tasks are displayed based on the View selected, and the access control list rights (ACLs) of the user. A workflow may have several different types of tasks, but all the tasks from a given workflow association are contained on the same task list. However, a given task list can contain the tasks for multiple workflow template and associations.

Developers can include elements in the workflow template definition that define task types as bulk editable.

For workflow tasks, users can select to process workflow tasks in bulk. Office SharePoint Server then displays a list of the workflow tasks types on that list that are bulk editable, sorted by workflow template. When the user selects a task type from a given workflow template, Office SharePoint Server displays the task edit form for that type. Developers can include logic in their InfoPath task edit forms that changes the form view based on whether the user is editing tasks individually, or in bulk.

The user can then edit the tasks as a group. The workflow task edit form need not contain any special logic to bulk edit the tasks; this is completely handled by Office SharePoint Server. When the user submits the task edit form, Office SharePoint Server writes the submitted data to each task of that task type for that workflow template for all associations of that template, as a timer job.

For information on specifying InfoPath workflow task forms, see Specifying InfoPath 2007 Forms for Workflows.

So, here's how it looks in the user interface, from the user's perspective:

1. Navigate to the task list that contains the workflow tasks you want to bulk edit.

The workflow tasks are displayed based on the View selected, and the your ACLs.

2. From the Actions menu, select Process all tasks.

Office SharePoint Server displays the Bulk Task Selection page. This page lists each task type on the list that is bulk editable. Task types are sorted by workflow template. Workflow associations are listed in parenthesis after the task type name.

3. Select the task type for the workflow template you want to bulk edit, and click OK.

Office SharePoint Server displays the task edit form. If you've included the proper logic in your form, MOSS displays the bulk edit view of the task edit form.

4. Enter your edits, and click Submit.

Office SharePoint Server writes the submitted data to each task of that task type for that workflow template, as a timer job.

Note Because the timer job updates each task, any custom code you have included in an OnTaskChanged event for that task type while run on each task as well.

Defining a Workflow Task as Bulk Editable

To define a task type in a given workflow as bulk editable, you add two elements to the workflow template definition.

How to Define a Workflow Task Type as Bulk Editable

Add the following two elements to the MetaData element in the workflow template definition, where N represents the task type number:

· TaskN_IsBulkActionable Optional Boolean. TRUE to define the task type as a task type that can be edited in bulk.

This element is optional. Office SharePoint Server treats task types that are not explicitly defined as bulk actionable as not bulk actionable.

This element defines the task type as bulk editable for this specific workflow template only. Therefore, can use the same task type in multiple workflows, and decide on a per workflow basis whether the task type is bulk editable.

All tasks of a given type are either bulk actionable or not, within a given workflow template.

· TaskN_BulkActionableFormName Optional Text. The task name to display for this task type in the Office SharePoint Server 2007 user interface. Users click this name to display the workflow bulk edit form.

For more information on workflow template definitions, see Workflow Definition Schema.

The following example has been edited for clarity.

<?xml version="1.0" encoding="utf-8" ?>

<!-- Copyright (c) Microsoft Corporation. All rights reserved. -->

<Elements xmlns="https://schemas.microsoft.com/sharepoint/">

  <Workflow

    Name="Expiration"

    …

    TaskListContentTypeId="0x01080100C9C9515DE4E24001905074F980F93160"

  >

    <Categories/>

    <MetaData>

      <Task0_FormURN>urn:schemas-microsoft-com:office:infopath:workflow:Expiration-Complete</Task0_FormURN>

      <Task0_IsBulkActionable>true</Task0_IsBulkActionable>

      <Task0_BulkActionableFormName>Expiration</Task0_BulkActionableFormName>

    </MetaData>

  </Workflow>

</Elements>

Displaying a Custom Bulk Edit Task Form View

Using InfoPath forms, you can provide a custom form view to enable users to edit workflow tasks as a group. When the user selects the task type they want to bulk edit, Office SharePoint Server displays the task edit form for that workflow task type, passing context data to the form. This context data includes an attribute, isBulkMode, which designates whether the task form is being called for bulk edit operations. Developers can include logic in their forms to specify different views based on whether the isBulkMode attribute is set to TRUE or FALSE.

We recommend that the task edit form for each workflow task type you define as bulk editable contain two views:

· One for individual task editing.

· One for bulk editing of tasks.

The bulk edit view should not load data from any particular task upon load, since Office SharePoint Server applies the data the user submits to every task of that type for the selected workflow association.

How to Display a Custom Bulk Edit View of the Workflow Task Form

· Include logic in the form that parses the context data passed to the form on load. This logic should include having the form display the bulk edit view if the isBulkMode attribute of the context data is set to TRUE.

Note To add the workflow context data to the form, you must first create an XML file that represents the context schema, and then import that file into the form as a secondary data source. For more information, see the Adding Workflow Context Data as a Secondary Data Source section of How to: Configure a Contact Selector Control on Your InfoPath Workflow Form.

For more information on using InfoPath forms with Office SharePoint Server workflows in general, see InfoPath Forms for Workflows.