自定义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下。
这样,就可以完成自定义状态了。
定义方法如下:
1.在feature.xml中的ElementManifests段内,指定一个资源文件的路径。如:
<ElementManifests>
<ElementManifest Location="workflow.xml" />
<ElementFile Location="Resources\Resources.resx"/>
</ElementManifests>
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;
}
}SPWorkflowStatus.Max是已定义的Workflow状态的最大值,为15。它以及后面的值就是自定义的状态值。
6.部署时将Resources文件夹与Workflow.xml一样。拷贝到FEATURES\XXXX下。
这样,就可以完成自定义状态了。

浙公网安备 33010602011771号