自定义Workflow中,如何自定义Workflow的状态

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

2.在Resources.resx文件中,定义Workflow状态、Workflow的标题等各种资源的资源。如:
<?xml version="1.0" encoding="utf-8"?>
<!-- _lcid="1033" _version="12.0.4518.1007" _dal="1" -->
<!-- _LocalBinding -->
<root>
  
<Data Name="Feature_Title">
    
<Value>Sample: Approval Workflow</Value>
  
</Data>
  
<Data Name="Feature_Description">
    
<Value>A sample workflow that sends a document for approval.</Value>
  
</Data>
  <Data Name="ReviewFeedback_ApprovedStatus">
    
<Value>Approved</Value>
  
</Data>
  
<Data Name="ReviewFeedback_RejectedStatus">
    
<Value>Rejected</Value>
  
</Data>
</root>

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

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

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

这样,就可以完成自定义状态了。
posted @ 2007-12-11 16:18  Gu-dong  阅读(884)  评论(4)    收藏  举报