ZCMS/工作流定义

来自站长百科
跳转至: 导航、​ 搜索

ZCMS | ZCMS安装 | ZCMS使用|ZCMS模板

工作流定义是创建,管理系统工作流的栏目,打开对应界面如下:

ZCMS WF1.png

例如工作流“录入---编辑---审核---复审”,当某栏目选择此工作流时,在此栏目下添加文章时,过程如下:

  1. 录入:录入编辑文章,把编辑好的文章提交给审核人员。
  2. 审核:审核人员可以对此文章进行修改,退回,如果文章通过,则把文章交给复审人员。
  3. 复审:复审人员对文章进行一系列操作,如果文章没有问题,则直接发布此文章。

建立工作流[ ]

工作流建立过程如下:

  • 点击ZCMS WF2.png打开界面:
ZCMS WF3.png

根据流程的需求填写工作流名称,说明,然后点击确定键即可。


  • 点击新建工作流名称,打开下面界面:
ZCMS WF4.png

工作流代码编写[ ]

下面做一个简单的文章录入—审核工作流,来了解工作流的编写过程及方法。

首先,要分析流程,过程如下:

  1. 用户登录,如果用户具有录入信息的权限,则就可以直接编写文章,否则退出系统。
  2. 文章编辑完并且保存后,提交给审核人员。
  3. 审核人员查看文章,如果文章通过审核,直接发布即可。否则文章被退回录入人员,回到第二步,进行重复操作。

具体操作如下面流程图:

ZCMS WF5.png


一个工作流包含多个步骤。每一个步骤都有一个当前状态(status)。每一个步骤中都有一个或者多个动作(action)可以被执行。每一个动作都可以设置执行条件(condition),也可以设置执行函数(pre-function or post-function)。动作产生结果(result),导致工作流的状态和当前步骤发生改变。

通过分析流程,总共分为三个步骤:录入,审核,审核完毕。分别对应:“录入状态”,“审核状态”,“审核完毕”三个状态。其中,“录入”步骤有“保存”,“提交给审核”两个动作可以被执行,“审核”步骤有“保存”,“置为已审”,“退回”三个工作可以被执行。

  • 首先要进行初始化,如下面代码:
<initial-actions> 
<action id="100" name="Start Workflow"> 
<pre-functions>   
<function type="class"> 
<arg name="class.name">com.zving.workflow.util.FunctionCaller</arg> 
</function> 
  </pre-functions> 
  <results> 
    <unconditional-result old-status="Finished" status="正在录入" step="1" 
owner="${caller}"/> 
  </results> 
</action> 
</initial-actions> 

其中,有两种类型的 functions: 步骤前和步骤后 pre-function and post-function。

pre-function 是在工作流执行某一特定的流转之前进行的。

args Map 是一个包含<function/>标签中所有<arg/>标签的 Map。这些参数都是String 类型的并且已经经过了变量替换。这意味着<arg name="foo">this is ${someVar}</arg>将会由配置中的"foo"转换成为"this is [contents of someVar]"。

对于一个类方法,类加载器必须知道方法所属的类的名字。这可以通过 class.name 参数来完成,例如:

<function type="class"> 
<arg name="class.name">com.zving.workflow.util.FunctionCaller</arg> 
</function> 

每一个动作必须有一个 unconditional result(默认)和零到多个条件结果。

Conditional Result是 Unconditional Result 的一个扩展。如:

<results> 
<unconditional-result old-status="Finished" status="正在录入" step="1" 
owner="${caller}"/> 
</results>   

其中,old-status 为进行此动作之前所对应的状态,status 为当前状态,如果状态不是Queued 的话,那么 owner=”${caller}”就是新步骤的所有者(owner)。

  • 下面添加步骤 1:
<step id="1" name="录入状态"> 
<external-permissions> 
  <permission name="permA"> 
    <restrict-to> 
      <conditions type="AND"> 
        <condition type="class"> 
           <arg name="class.name"> 
com.zving.workflow.util.ConditionStatus 
</arg> 
           <arg name="status">正在录入</arg> 
        </condition> 
        <condition type="class"> 
           <arg name="class.name"> 
com.zving.workflow.util.ConditionAllowOwnerOnly 
</arg> 
        </condition> 
</conditions> 
    </restrict-to> 
  </permission> 
</external-permissions> 

每个 condition 必须作为一个 conditions 的子标签被定义。这个元素有一个属性叫做type,它的值是 AND 或者 OR。当你使用"AND"类型,所有的 condition 元素的值必须都是"true",整个 conditions 才能是 true。

具体用法如上面代码:<conditions type="AND"></condition>表明,只有具有权限和处于“正在录入”状态才能执行。

许可和约束(Permissions and Restrictions):基于工作流实例的状态,Permissions 可被赋予到用户和/或群组。这些 Permission 和工作流引擎的功能无关,但是它们会对使用OSWorkflow 的应用相当有好处。如例子,一个录入管理系统可能需要一个"file-write-permission",只让具有权限的用户编辑文档。程序便可以使用 API 去判断是否文件应该被录入。如果在工作流中有好多状态都适用“file-write-permission”,这就很有用,不再需要去检查特定的步骤或者条件,检查是依照某个特定许可进行的。 Permission 和 action 都使用了约束(restriction)的概念。约束是定义在 restrict-to 元素内的一个或多个条件。

  • 下面为步骤添加动作:
<action id="11" name="保存"> 
  <restrict-to> 
    <conditions type="AND"> 
      <condition type="class"> 
        <arg name="class.name"> 
com.zving.workflow.util.ConditionStatus 
</arg> 
        <arg name="status">正在录入</arg> 
      </condition> 
      <condition type="class"> 
        <arg name="class.name"> 
com.zving.workflow.util.ConditionAllowOwnerOnly
</arg> 
      </condition> 
    </conditions> 
  </restrict-to> 
  <pre-functions> 
    <function type="class"> 
      <arg name="class.name">com.zving.workflow.util.FunctionCaller</arg> 
    </function> 
  </pre-functions> 
  <results> 
    <unconditional-result old-status=" 正 在 录 入 " status=" 正 在 录 入 " step="1" 
owner="${caller}"/> 
  </results> 
</action> 
<action id="12" name="提交给审核"> 
  <restrict-to> 
    <conditions type="AND"> 
      <condition type="class"> 
        <arg name="class.name"> 
com.zving.workflow.util.ConditionStatus 
</arg> 
        <arg name="status">正在录入</arg> 
      </condition> 
      <condition type="class"> 
        <arg name="class.name"> 
com.zving.workflow.util.ConditionAllowOwnerOnly 
</arg> 
      </condition> 
    </conditions> 
  </restrict-to> 
  <results> 
    <unconditional-result old-status=" 录 入 完 成 " status=" 正 在 审 核 " step="2" 
owner="audit1"/> 
  </results> 
</action> 

其中,步骤1 有两个动作可以被执行: "保存","提交给审核"。

步骤 2,3 创建如步骤 1。



参考来源[ ]

ZCMS使用手册导航

ZCMS安装

安装

ZCMS使用

文章编辑|文章设置|文章审核|文章调整|图片管理|视频管理|音频管理|文章媒体添加|图片播放器|友情链接|关键字|敏感词|调查与投票|广告管理|站点列表|栏目管理|媒体库管理|自定义数据|全文检索管理|Web采集|分发到目录|访问统计|发布统计|系统管理|工作流定义

ZCMS模板

站点对象|栏目对象|文档对象|分页对象|循环标签|其他标签|日期与数字格式