(流程样例应用程序终于整理上传好可供下载了http://download.csdn.net/download/starrow/8422299

上文分析了我们的流程配置使用三类对象,分别对应三类文档:工作流配置文档、节点配置文档和操作配置文档。本文介绍三类配置文档的内容,也可以看作本流程系统的设置教程。

这些配置文档的共同点包括:

处于编辑状态时,必填字段的右边会显示红色星号(这实际也是整个系统的共同设计),保存文档时会对这些字段进行校验。

许多字段既能输入静态值,也可输入公式以计算动态值。输入公式时用大括号包围所写的公式,即{formulas}。在配置文档中公式计算用到的文档就是流程文档,也就是采购单。

流程配置文档显示在FlowSettings视图里:

新建一个流程:

输入流程名称,保存。接下来的工作就是创建该流程的节点和操作配置文档。

节点的名称Nodes可输入多值。这是因为流程中常常有节点(通常为从其他节点驳回)除了名称外其他配置都与另一基本节点完全相同,此时就可以这些节点的名称附在基本节点的名称后面。在上图的例子中,流程被IT或财务校验等驳回后分别处于RejectedBy IT、Rejected After Finance Verification等状态,以便与其他状态区分开,但是处于这些状态的流程文档在当前处理人、可行操作和权限等方面与Draft状态完全一致,所以将它们都列在Draft之后。

节点的当前处理人Users可以直接输入Notes用户名,也可以使用Notes公式计算。这里计算采购单中的CreatedBy字段,即它的创建者。

可编辑区段Editablesections设置的是当前用户能编辑的存取控制区段(参看91. 基于Notes的文档工作流系统(三)里介绍的主表单设计)。

在本样例中共设置了以下节点:

接下来设置每个节点可用的操作。

当前节点Current Node可选择多值,这是为那些适用于多个节点的操作准备的,例如本样例中的取消Cancel操作:

操作名称Action Name为当前用户看到的显示在操作选择对话框中的文本。下一节点Next Node可从所有节点中选择。

操作记录Action Record会和操作时间和当前用户一并显示在流程记录里,用户语言若是中文,该配置可直接使用操作名称,样例因为是英文,所以有区分大小写和动词时态屈折的需要,如这里的cancelled。

操作的处理人ActionHandlers可选当前处理人Currenthandlers或其他处理人Otherhandlers。一般情况下选择前者,流程使用节点配置文档里设置的当前用户。特殊操作只对流程文档的FlowHandlers字段里保存的特别用户或角色可用。例如采购单在提交时会将创建者、Forrest Zhou和Same Sun三个人名写入FlowHandlers字段,Cancel操作即只有这些用户可用。

操作表达式ActionExpression可进一步控制某个操作对当前用户是否可见。例如Cancel操作就通过公式设置为当流程状态为Draft和第一次提交后的WaitingFor IT Approval时,创建者可取销,其他状态时用户ForrestZhou、Same Sun以及特殊权限的IT角色可取消。

审批模式Approve Mode较少用,设为与And模式时,某个状态如果有多名当前用户,则须都审批方能通过;设为或Or模式时,则只要有一位用户审批即可通过。因为多名用户审批可能导致保存冲突,所以真正应用时,还需配合其它设计尽量减少保存冲突。

邮件信息MailInformation小节在流程配置文档和操作配置文档中都有,前者有一个按钮“应用到所有节点”Apply to all nodes方便进行一次性配置。是否需要邮件通知Need Mail Notice决定流程跳转到新节点时是否向该节点的当前用户发送邮件通知。抄送人Copy To可配置通知邮件的抄送收件人。主题Subject和正文Body都可使用字符串或公式。

在字段校验和修改FieldValidation And Modification标签页内:

可设置必填字段的名称和标题,并且每行也可用公式控制应用的条件。字段修改配置包括替换Replace和附加Append(实际应用很少),每行配置包括决定是否应用的条件公式,无条件应用可写入@True,字段名称和要写入的值(同样也可以运用公式)。

操作配置完后的全貌如下:

后文将介绍应用流程系统的采购单的表单设计、通用流程类的代码以及实际流程类的扩展。

基于Noootes/Dooomino的文档工作流系统(转)的更多相关文章

  1. 几个方便的基于es 的开源文档索引系统

    Apache Tika 比较有名的内容提取工具 FsCrawler 使用java 开发,内部使用了Tika Ambar nodejs,python应用开发,轻量,支持基于docker 的快速部署,同时 ...

  2. mindoc 在线文档接口系统的 docker 制作过程

    说明: mindoc 是一款在线接口文档编辑系统,百度一下就知道了.github地址:https://github.com/lifei6671/mindoc 本机:ubuntu16.04 + dock ...

  3. 2.Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)-

    转自:https://blog.csdn.net/a214919447/article/details/55260411 SOAP(Simple Object Access Protocol,简单对象 ...

  4. Atitit 基于图片图像 与文档混合文件夹的分类

    Atitit 基于图片图像 与文档混合文件夹的分类 太小的文档(txt doc csv exl ppt pptx)单独分类 Mov10KminiDoc 但是可能会有一些书法图片迁移,因为他们很微小,需 ...

  5. MFC中 给基于CFormView的单文档添加背景图片

    关于基于CFormView的单文档应用程序,添加一个图片背景的方法之一如下: 下面是利用LoadImage实现.(先在程序目录中添加背景图片back.bmp) 1.在view类中添加类成员变量:(为C ...

  6. groff - groff 文档排版系统前端

    总览 (SYNOPSIS) groff [ -abehilpstvzCENRSUVXZ ] [ -wname ] [ -Wname ] [ -mname ] [ -Fdir ] [ -Idir ] [ ...

  7. troff - groff 文档排版系统的 troff 处理器

    总览 SYNOPSIS troff [ -abcivzCERU ] [ -d cs ] [ -f fam ] [ -F dir ] [ -m name ] [ -M dir ] [ -n num ] ...

  8. ABP文档 - 通知系统

    文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发 ...

  9. 基于 Markdown 编写接口文档

    最近公司开发项目需要前后端分离,这样话就设计到后端接口设计.复杂功能需要提供各种各样的接口供前端调用,因此编写API文档非常有必要了 网上查了很多资料,发现基于Markdown编写文档是一种比较流行而 ...

随机推荐

  1. addLoadEvent函数

    首先是addLoadEvent函数的代码清单: function addLoadEvent(func){    var oldonload=window.onload;    if(typeof wi ...

  2. 查看编译后的calss文件编译jdk版本

    使用UtralEdit或者sublime text打开编译后的.class文件, 其中cafe babe为magic number(魔数),标识这个文件是java的class文件. 0033转换成10 ...

  3. 02_Jquery_03_类选择器

    [简述] 类选择器就是通过类名(css类名)来查询元素! $(".myClass")就可以把所有包含了class="myClass"的元素查询出来 [index ...

  4. ECMA中关于if与else的关系的一句英文,感觉比较经典

    Each else for which the choice of assocated if is ambiguous shall be associated with the nearest pos ...

  5. tomcat内存溢出问题

    内存泄露java.lang.OutOfMemoryError: PermGen space解决办法 今天访问web服务器,tomcat服务就瘫痪了,通过查看日志,发现java.lang.OutOfMe ...

  6. centOS 6 python MySQLdb 提示 no module

    http://www.cnblogs.com/czh-liyu/archive/2012/11/30/2796028.html(转) 用python连接本地数据库时,提示no module MySQL ...

  7. Log4j 密码屏蔽

    Log4j filter to mask Payment Card numbers (PCI DSS) According to PCI DSS (Payment Card Industry Data ...

  8. 犯这个错误的肯定不止我一个 关于File

    File.Create(string filePath)这种用法所有人都知道,这两天用到的时候却发现一个问题. 需要先判断文件是否存在,如果不存在则创建文件,然后向该文件写入数据,后续定时Append ...

  9. 数据添加到DataTable

    DataTable tblDatas = new DataTable("Datas");            DataColumn dc = null;              ...

  10. C语言实现的顺序表

    顺序表是用一段地址连续的存储单元依次存储数据元素的线性结构.顺序表可分为静态存储和动态存储,静态顺序表比较简单,数据空间固定,而动态顺序表可以动态增容,便于存放大量数据,现主要把动态的基本实现一下~此 ...