(流程样例应用程序终于整理上传好可供下载了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. Ibatis学习记录

    几大要素:1.jdbc.properties //数据库连接配置2.SqlMapContext.xml //主配置文件3.user_SqlMap.xml //映射文件4.三层框架 创建Ibatis工程 ...

  2. 用crontab、crond在嵌入式系统中添加定时任务

    在嵌入式系统中,定时任务通过crond和cronttab两个系统命令来联合执行. 其中crond是定时任务的守护进程,系统开始时是没有开启的.crontab主要作用是管理用户的crontab file ...

  3. 专题二、ArrayList序列化技术细节详解

    一.绪论 所谓的JAVA序列化与反序列化,序列化就是将JAVA 对象以一种的形式保持,比如存放到硬盘,或是用于传输.反序列化是序列化的一个逆过程. JAVA规定被序列化的对象必须实现java.io.S ...

  4. ASP.NET设计模式(一)、适配器模式、依赖注入依赖倒置、空对象模式

    鸟随凤鸾,人伴贤良,得以共之,我之幸也.说的是鸟随着鸾凤可以飞的更高远,人和比自己境界高的相处,自己也会得到熏染进步. 一.概述 分享出来简单的心得,望探讨 依赖倒置 依赖注入 Adapter模式 N ...

  5. AOP学习过程中遇到的问题汇总

    jdk版本问题:     在spring较低的版本中,仅支持jdk1.5到1.7版本,由于我本机安装的是jdk1.8,所以在调试的时候就会提示jdk版本要高于1.5.于是换成spring4.0,在co ...

  6. (jQuery 插件)封装容器的表单为json对象

    下面代码可以把一个页面容器中的表单元素封装成一个json对象. (function($){ $.fn.serializeObject=function(){ var inputs=$(this).fi ...

  7. php类的属性

    属性声明是由关键字 public,protected 或者 private 开头,后面跟一个普通的变量声明来组成.属性的变量可以设置初始化的默认值,默认值必须是常量. class Car { //定义 ...

  8. PHP构造函数的用法分析

    PHP构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( ).这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人 ...

  9. Lucene4.9学习笔记——Lucene建立索引

    基本上创建索引需要三个步骤: 1.创建索引库IndexWriter对象 2.根据文件创建文档Document 3.向索引库中写入文档内容 这其中主要涉及到了IndexWriter(索引的核心组件,用于 ...

  10. leetcode第七题Reverse Integer (java)

    Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, retu ...