为之则易 不为则难

如果不能改变环境,那么就去适应环境

导航

【MOSS2010系列】无代码工作流(1)

Posted on 2010-07-10 13:42  为之则易  阅读(1853)  评论(3编辑  收藏  举报

MOSS2010在工作流方面做了较多的改进,提供了可重用的工作流、无需与列表绑定的网站工作流、Visio流程导入;设计工具方面,SharePoint Designer2010对工作流设计的支持也更加友好,Visual Studio2010直接支持创建Aspx工作流表单;工作流系列将分SharePoint Designer设计无代码流程和VisualStudio开发代码流程两个系列进行探讨。

新建一“请假信息”列表,结构如下图所示:

image

其中“请假天数”为计算列,以方便流程中使用,打表Sharepoint Designer,为该列表新建工作流

image

工作流设计界面:

image

点“启动窗体参数”,设计初始窗体,使流程启动者可自己选择审批人

image

初始化界面设计完成后,设计第一步“经理审批”流程

image

image

点击“此用户”选择任务审批用户

 image

双击“工作流查找用户”

image

在步骤一中点击“数据”为当前审批任务设置收集数据的窗体项

image

添加两个字段“审批意见”和“是否同意”分别为多行文本和复选框类型

image

点击变量"collect” 新建一变量"TaskId1”

image 

添加一步骤,添加一条件判断

image

image

点击“值”

image

点击确定,然后将条件判断改为“大或等于”,值改为3

注:这一条件判断也可以使用“如果当前项目域等于值”条件来设计,更为方便

 

然后再插入一条件“如果任何值等于值”,用于判断经理审批是否通过

image

两个条件关系为“并且”的关系,在两个条件都满足的情况,插入操作“从用户收集数据”

与经理审批步骤相同,建一行政审批步骤界面,列名最好不要相同,避免引用时不容易区分

image 

行政审批步骤结束,新建一步骤用于审批结果汇总

 image

 

这一步骤看起来很繁琐,因为这里用的是最基本的判断与汇总,其实可以进行简化,可加一些局部变量在前续步骤中根据不同的情况为这些变量赋些标记值,最终汇总时就会简洁的多,另外还可以插入一些记录历史记录的操作,为流程记录日志信息,便于流程信息跟踪。

下面测试一下该工作流,点击工作流名称,启动流程:

image

任务已经分配给moss_tes1

image

点击经理审批,出现自定义的审批界面

image

完成审批,由于请假3天,可以看到已经为行政分配了审批任务

image

行政审批通过后,回到请假信息列表,可以看到流程审批状态已经由“进行中”变成“已批准”

image

至此,流程部分结束

备注:

1、无代码工作流表单在2010中改用InfoPath表单,系统生成的表单可以自定义

image

双击文件可打开InfoPath,改变后重新发布到站点上,下面的表单标题栏是改变过的

image

2、流程过程中每一个“从用户处收集数据”都要求创建一个新的内容类型和一个新的表单结构,而无法直接共用,比如审批表单,按照默认的设计方式,我们只能创建两个审批内容类型,且内容类型的字段也要重复定义,这样流程一旦很多,对于后期站点管理与流程的维护会带来很大的麻烦。

如果两个环节共用同一内容类型,可以先创建该步骤,先不为该步骤创建内容类型,保存工作流;然后到文件中,以XML方式打开该流程的xoml文件

image 

例如本例中的经理审批环节代码为:

<ns1:CollectDataTask x:Name="ID380" __Context="{ActivityBind ROOT,Path=__context}" Title="经理审批" TaskId="{ActivityBind ROOT,Path=TaskId1}" AssignedTo="{ActivityBind ID381,Path=ReturnValue}" InProperties="{x:Null}" OutProperties="{x:Null}" ContentTypeId="0x01080100C9C9515DE4E24001905074F980F931600009303A56E51DE04CAFEB2CC447D0CF6700361201B713CB5744A61948B3A98E6B81" />

而未绑定内容类型的审批步骤生成代码为:

<ns1:CollectDataTask x:Name="ID416" __Context="{ActivityBind ROOT,Path=__context}" Title="{x:Null}" TaskId="{ActivityBind ROOT,Path=collect}" AssignedTo="JASPER-PC\moss" InProperties="{x:Null}" OutProperties="{x:Null}" ContentTypeId="{x:Null}" />

注意:ContentTypeId="{x:Null}" 和 Title="{x:Null}"

修改内容类型ID为上一步骤的内容类型ID,标题根据步骤填写相应的任务标题,保存文件,就可以实现多步骤共用同一内容类型的需求。

SharePoint Designer一般有缓存,工作流文件保存后,刷新工作流设计器界面有时候无法看到修改的结果,解决方法:把Designer关掉,重新打开网站就可以看到。