什么是工作流?
根据SPS2007的定义,工作流就是“组织和运行对应于工作流程的一系列操作的自然方式”;而对应到我们的实际工作,可以这样理解:工作流就是为了完成某项任务而必须经历的一系列操作,例如下图所示的一个审核文档的过程:
当然,这样的流程在我们实际工作中可以说是比较多的,而以前我们主要是通过人工方式(尽管借助了SPS的功能)进行管理,例如人工下达任务,邮件通报,上传文档等;
而SPS2007的出现,使我们使用自动化方式处理这些流程成为了可能。
工作流由哪些要素构成?
构成工作流的要素可分为四类:事件、操作、条件和步骤,在SPS2007中分别定义如下:
以“审核和处理合同”这个工作流为例:
- 事件:启动工作流的原因,例如:新签订了合同(需要审核),SPS中可以根据特定的事件自动或手动启动相应的工作流
- 操作:工作流中最基本的工作单位,例如发送邮件要求相关人员进行审核,这就是一个操作
- 条件:通过SPS中的相关工具,我们可以建立一个条件或多个条件:仅条件为真时,工作流才执行相关的操作;多个条件组合起来,实际上就形成了工作的规则;例如:必须当相关人员审核并通过合同之后,才可以进行下一步操作:盖章
- 步骤:工作流由一个或多个步骤组成,每个步骤都可以包含任何数目的操作和关联条件,因此可以把步骤当作一种“容器”或者“分类”(类似HIS中的分类概念)
步骤:
我们来用一用审批工作流(我们想这么来用:创建一个文档,然后手动设置把这个文档给谁去审批)
在Microsoft Office Sharepoint Server 2007也有了像审批,收集反馈,跟踪等out-of-box的工作流模板。
1)创建一个文档库
2)到文档库设置-工作流设置-给文档库关联一个工作流模板
3)创建一个文档,保存文档
4)到文档的标题菜单中,点“工作流”
5)在工作流启动页面中,设置审批人
6)点“确定”,启动工作流
7)审批的人看到任务列表有东西了
8)点进去,一个表单,有一个连接到待审批文档的链接,我可以看看文档,然后填写审批意见,点批准
我 们如果不满意这些out-of-box的工作流模板,我们可以用sharepoint designer来图形化设计工作流,可以用VS开发一些我们自己的动作来扩展designer的动作库。如果还有更复杂的工作流,我们可以用VS开发, 做成网站功能部署到sharepoint站点上去,不过这个就有一定的难度。
提供的几点事项(有待考证):1)SharePoint的工作流是基于文档的工作流,只能关联到列表,文档库和内容类型上
2)SharePoint的工作流模板是利用网站功能(Feature)来发布
3)SharePoint的工作流模板(Template)不能直接被列表,文档库和内容类型所用
4)工作流模板需要和列表,文档库和内容类型建立了关联才能被使用
5)所有的SharePoint工作流示例都是从关联(Association)创建出来的
6)一个列表,文档库和内容类型可以建立和一个工作流模板的多个关联,比如让A审批的关联,让B审批的关联都是源于审批工作流模板,只是审批人不同
7)SharePoint的工作流运行帐号是拥有管理员权限的
8)SharePoint的工作流中的表单可以使ASPX页面或者InfoPath表单(用Infopah几乎是No Coding的)
9)SharePoint中对于关联的修改不会影响已经创建的工作流实例
10)不要试图跳开Template,Association,Task,Modification,History的模式来使用SharePoint工作流工作流的操作:中文 表示方式(兰色代表需要用户设置) 主要内容 创建列表项 在 此列表中创建项目(输出到变量:create) □ 在指定的列表中创建项目,可以设置项目的字段值 □ 如果是文档库,还可以指定文件,以及重名后的处理规则:覆盖OR加上唯一标识符 □ 列表的必填字段必须设置。 □ 列表项目的字段值可以设置为通过查找取自另一个列表的字段。 创建时,可以输出变量,一般是"列表id",然后后续的操作或是条件中使用 从用户处收集数据 在 此用户处收集数据(输出到变量:collect) □ 将在任务列表中创建一个记录,分配给指定的用户 □ 定义一个自定义表单域 □ 该用户在修改这个任务项目时,就要求填写这个自定义表单域。 □ 这个域的每项数据存在于tasks列表中,可以用于更新另外的列表, □ 自定义的域就会成为tasks的列 可以把输出变量(tasks的ID)供后面的工作流使用,用tasks中的表单域的数据, 更新其它列表的值时,查找条件为tasks.id=输出的变量 等待当前项目中的域更改 等待 域 可以指定工作流的某一步骤,等待指定的字段值等于指定的值才继续 等于 指定的值可以为本列表或是其它列表的指定记录的值 值 发送电子邮件 然后电子邮件 此电子邮件地址 设置收件人、抄送、主题和邮件内容 邮件内容可以插入任意列表的值,邮件必须有主题 放弃签出的项目 放弃签出 此列表 的项目 此列表只能是文档库 必须同时指定查找条件,以指明放弃签出哪下文档的签出 分配待办事项 将 待办事项 分配给 这些用户 分配一个任务给指定用户 指定用户在tasks中就会增加一个新建菜单:菜单名称就是“待办事项”的名称。 这个“任务”在tasks中的“Content Type”中管理 复制列表项 将 此列表的项目复制到此列表 指定被复制列表的查找条件,这时可以包括多条记录 目标列表必须与被复制列表具不同结构也可以被复制,可能只复制tile 更新列表项 更新 此列表的项目 更新指定列表的指定记录的指定项目的值 根据任何可以访问的列表的指定的记录和字段来更新 过程中暂停 暂停 0天 0小时 5分钟 指定过程暂停的时间,天、小时或分钟,未试验成功 记录到历史记录列表 将此消息记录到工作流历史列表 此消息可以设置为任意列表的任意字段 将表单分配给组 将自定义表单分配给这些用户 分配给指定的用户组 表单的含义与收集用户数据中的数据相同 指定用户在tasks中就有填写这个表单的任务 将时间添加到日期 将0 对日期、时间字段进行运算,包括分钟、小时、天、月、年 分钟添加到日期(输出到变量:日期) 通过输入到变量中,供后面的工作流操作使用 进行计算 将 值 加 值 (输出到变量:calc1) 计算:加、减、乘、除以、求模 值可以指定任意列表的可以用于计算的字段 签出项目 签出 此列表 的项目 签入项目 签入 此列表 的项目 删除项目 删除 此列表的项目 设置当前项目中的域 将 域 设置为 值 设置工作流关联列表中的字段值 设置工作流变量 将工作流变量 设置为 值 生成一个工作流生命周期中存在的变量,供后续环节使用 这个变量可以是已经有的变量(前面步骤设置或输出的变量) 设置内容审批状态 使用 批注 的内容 将审批状态设置 此状态 批注可以来源于任意列表字段 此状态包括:已批准、已拒绝、待批 设置日期/时间域的时间部分 将时间设置为日期的00:00(输出到变量:日期1) 生成动态字符串 将动态字符串存储在变量:变量1中 动态字符串就以是一段输入的文字,在这段文字中可以包括 当前项目或指定列表的字段的值 停止工作流 停止工作流和日志 此消息 此消息中的内容将在工作流查询中显示 暂停到某个日期 暂停到此时间 试验未成功