在自定义Workflow中,经常需要自定义Workflow的状态,如Approved、Rejected等。
定义方法如下:
1.在feature.xml中的ElementManifests段内,指定一个资源文件的路径。如:
自定义Workflow中,如何自定义Workflow的状态  <ElementManifests>
自定义Workflow中,如何自定义Workflow的状态    
<ElementManifest Location="workflow.xml" />
自定义Workflow中,如何自定义Workflow的状态    
<ElementFile Location="Resources\Resources.resx"/>
自定义Workflow中,如何自定义Workflow的状态  
</ElementManifests>
自定义Workflow中,如何自定义Workflow的状态
  其中的Resources为feature.xml所在文件夹下的子文件夹。

2.在Resources.resx文件中,定义Workflow状态、Workflow的标题等各种资源的资源。如:
自定义Workflow中,如何自定义Workflow的状态<?xml version="1.0" encoding="utf-8"?>
自定义Workflow中,如何自定义Workflow的状态
<!-- _lc>>

3.在Workflow.xml的MetaData段中,增加状态的值。如:
自定义Workflow中,如何自定义Workflow的状态      <ExtendedStatusColumnValues>
自定义Workflow中,如何自定义Workflow的状态 
       <StatusColumnValue>$Resources:ReviewFeedback_ApprovedStatus</StatusColumnValue>
自定义Workflow中,如何自定义Workflow的状态        
<StatusColumnValue>$Resources:ReviewFeedback_RejectedStatus</StatusColumnValue>
自定义Workflow中,如何自定义Workflow的状态      
</ExtendedStatusColumnValues>

4.在Workflow.cs(Workflow主程序)中加入SetState活动,对应其SetState方法,定义一个处理函数。如:
自定义Workflow中,如何自定义Workflow的状态        private void SetWorkflowState(object sender, EventArgs e)
自定义Workflow中,如何自定义Workflow的状态        {
自定义Workflow中,如何自定义Workflow的状态            //The workflow is approved.
自定义Workflow中,如何自定义Workflow的状态            if (isTaskComplete)
自定义Workflow中,如何自定义Workflow的状态            {
自定义Workflow中,如何自定义Workflow的状态                this.workflowState = (int)SPWorkflowStatus.Max;
自定义Workflow中,如何自定义Workflow的状态            }
自定义Workflow中,如何自定义Workflow的状态            else
自定义Workflow中,如何自定义Workflow的状态            {
自定义Workflow中,如何自定义Workflow的状态                this.workflowState = (int)SPWorkflowStatus.Max + 1;
自定义Workflow中,如何自定义Workflow的状态            }
自定义Workflow中,如何自定义Workflow的状态        }
  其State对应一个自定义的Field,如上面例子中的workflowState。 
  SPWorkflowStatus.Max是已定义的Workflow状态的最大值,为15。它以及后面的值就是自定义的状态值。

6.部署时将Resources文件夹与Workflow.xml一样。拷贝到FEATURES\XXXX下。

这样,就可以完成自定义状态了。

相关文章: