什么是工作流?

根据SPS2007的定义,工作流就是“组织和运行对应于工作流程的一系列操作的自然方式”;而对应到我们的实际工作,可以这样理解:工作流就是为了完成某项任务而必须经历的一系列操作,例如下图所示的一个审核文档的过程:

 

当然,这样的流程在我们实际工作中可以说是比较多的,而以前我们主要是通过人工方式(尽管借助了SPS的功能)进行管理,例如人工下达任务,邮件通报,上传文档等;

而SPS2007的出现,使我们使用自动化方式处理这些流程成为了可能。

工作流由哪些要素构成?

构成工作流的要素可分为四类:事件、操作、条件和步骤,在SPS2007中分别定义如下:

以“审核和处理合同”这个工作流为例:

  • 事件:启动工作流的原因,例如:新签订了合同(需要审核),SPS中可以根据特定的事件自动或手动启动相应的工作流
  • 操作:工作流中最基本的工作单位,例如发送邮件要求相关人员进行审核,这就是一个操作
  • 条件:通过SPS中的相关工具,我们可以建立一个条件或多个条件:仅条件为真时,工作流才执行相关的操作;多个条件组合起来,实际上就形成了工作的规则;例如:必须当相关人员审核并通过合同之后,才可以进行下一步操作:盖章
  • 步骤:工作流由一个或多个步骤组成,每个步骤都可以包含任何数目的操作和关联条件,因此可以把步骤当作一种“容器”或者“分类”(类似HIS中的分类概念)

    步骤:

    我们来用一用审批工作流(我们想这么来用:创建一个文档,然后手动设置把这个文档给谁去审批)
    1)创建一个文档库
    2)到文档库设置-工作流设置-给文档库关联一个工作流模板
    3)创建一个文档,保存文档
    4)到文档的标题菜单中,点“工作流”
    5)在工作流启动页面中,设置审批人
    6)点“确定”,启动工作流
    7)审批的人看到任务列表有东西了
    8)点进去,一个表单,有一个连接到待审批文档的链接,我可以看看文档,然后填写审批意见,点批准

    在Microsoft Office Sharepoint Server 2007也有了像审批,收集反馈,跟踪等out-of-box的工作流模板。

    我 们如果不满意这些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中 动态字符串就以是一段输入的文字,在这段文字中可以包括
    当前项目或指定列表的字段的值
    停止工作流 停止工作流和日志 此消息 此消息中的内容将在工作流查询中显示
    暂停到某个日期 暂停到此时间 试验未成功
     

posted on 2007-11-02 18:19    阅读(1189)  评论(0编辑  收藏  举报