基于Noootes/Dooomino的文档工作流系统(转)

时间:2022-09-14 10:35:05

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

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

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

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

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

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

基于Noootes/Dooomino的文档工作流系统(转)

新建一个流程:

基于Noootes/Dooomino的文档工作流系统(转)

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

基于Noootes/Dooomino的文档工作流系统(转)

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

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

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

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

基于Noootes/Dooomino的文档工作流系统(转)

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

基于Noootes/Dooomino的文档工作流系统(转)

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

基于Noootes/Dooomino的文档工作流系统(转)

操作名称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标签页内:

基于Noootes/Dooomino的文档工作流系统(转)

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

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

基于Noootes/Dooomino的文档工作流系统(转)

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

基于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. 获取当前应用的系统路径工具类和java的System.getProperty()方法介绍

    java的System.getProperty()方法可以获取的值,如下: 对于Java程序,无论是未打包的还是打包的JAR或WAR文件,有时候都需要获取它运行所在目录信息,如何做到这一点呢? /** ...

  2. linux有关信号的FAQ

    1.为什么会出现系统调用被中断的情况? 进程在执行一个低速系统调用而阻塞期间捕捉到一个信号时,该系统调用就被中断不再继续执行.该系统调用返回出错,其errno被设置为EINTR.这样处理的理由是:因为 ...

  3. vs2013怎么打开vs2010的解决方案

    1.直接用vs2013打开解决方案的sln文件,vs会自动进行转换的2.或者你用记事本的方式打开sln文件 将版本号改一下Microsoft Visual Studio Solution File, ...

  4. Spring中加载多个Properties配置文件

    单个配置: <bean id="propertyConfigurer" class="org.springframework.beans.factory.confi ...

  5. Oracle实例和Oracle数据库&lpar;Oracle体系结构&rpar;

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

  6. javascript高级知识分析——定义函数

    代码信息来自于http://ejohn.org/apps/learn/. 可以使用哪些方式来声明函数? function isNimble(){ return true; } var canFly = ...

  7. 49-Group Anagrams-&lpar;Medium&rpar; 题解

    1.题目 Given an array of strings, group anagrams together. For example, given: ["eat", &quot ...

  8. 狙杀ES6之开光篇

    前言 最近有很多小伙伴在后台留言说,闰土哥,是时候来一波干货了!(机智的你们似乎已经猜到我接下来要说什么了,哈哈-).没错,今天闰土为大家带来了久违的干货文章,而且是一个系列的哦!(文章系列较长,请自 ...

  9. 共享Visio和project的下载链接

    好东西就应该共享  下面的是最新版的Visio和project的百度云链接 Visio的链接:http://pan.baidu.com/s/1o8UJq4M 密码:sltu project的链接:ht ...

  10. centos&sol;redhat&sol;ubuntu不同之处

    前言:最近用久了ubuntu,发现这个和centos还是有很大差别的,以下是我的个人总结: centos/redhat/ubuntu不同之处: 1.关系理解:centos和redhat,你可以理解为是 ...