自定义Workflow状态列值--ExtendedStatusColumnValue

    在利用MicrosoftWWF开发工作流后,部署到Sharepoint平台中,在运行自定义的流程进行审批的时候,在审批完每个任务后,只要工作流没有最后的完成工作流的状态都是显示“进行中”,不管在这个任务审批是同意要流到下一个任务,还是拒绝返回到本任务中都显示这个状态值,但在现实的项目中这样情况并不能满足用户的需求,用户希望可以自定义工作流在审批过程中显示的状态值;

 

         接下就介绍下如何进行自定义工作流状态列的值,新建一个工作流项目如顺序工作流项目,具体如何进行创建工作流项目在此就不“唠叨”了,主要介绍自定义工作流状态值,假设现在已创建好基本的工作流项目,那么自定义工作流状态值的步骤,具体如下:

 

1、在工作流设计器中,将“SetState”活动拖曳进来到某onTaskChange活动下,并修改CorrelationToken属性的值为当前工作流开始活动(onWorkflowActivated)对应的属性值一样即可。

 

     说明:SetState活动是对当前工作流进行设置的,而不是对应工作流中的某个任务

 

2、修改“SetState”活动里的State属性值,创建一个名如setWorkflowStateField

 

3、修改Workflow.xml文件,打开此文件并在<MetaData>节点中添加如下节点元素:

<ExtendedStatusColumnValues>

<StatusColumnValue>已取消(可自定义)</StatusColumnValue>

<StatusColumnValue>已批准(可自定义)</StatusColumnValue>

<StatusColumnValue>被拒绝(可自定义)</StatusColumnValue>

</ExtendedStatusColumnValues>

 

     上面此段节点就是扩展工作流中现有状态值的信息,由于工作流中状态值都是用基于0开始的一个整型数来表示的即是014之间的数,且01415个数值是保留给系统内部使用的,所以自定义扩展的状态值将在原先的数上进行累加即从编号15开始于此类推。如上面自定义的扩展的三个状态值对应的编号:已取消为15、已批准为16、被拒绝为17

 

保存Workflow.xml文件;

 

4、双击SetState活动创建关联的事件处理程序,并在此事件中设置当前运行的工作流的状态值,代码如下:

setWorkflowState = (int)SPWorkflowStatus.Max + 1;

 

说明:SPWorkflowStatus.Max表示为获取当前工作流状态值的最大值即15

 

5、按“F5”进行编译并部署工作流到Sharepoint网站中;

posted @ 2010-03-03 23:01  netcai  阅读(1207)  评论(2编辑  收藏  举报