基于Noootes/Dooomino的文档工作流系统(转)
(流程样例应用程序终于整理上传好可供下载了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的文档工作流系统(转)的更多相关文章
- 几个方便的基于es 的开源文档索引系统
Apache Tika 比较有名的内容提取工具 FsCrawler 使用java 开发,内部使用了Tika Ambar nodejs,python应用开发,轻量,支持基于docker 的快速部署,同时 ...
- mindoc 在线文档接口系统的 docker 制作过程
说明: mindoc 是一款在线接口文档编辑系统,百度一下就知道了.github地址:https://github.com/lifei6671/mindoc 本机:ubuntu16.04 + dock ...
- 2.Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)-
转自:https://blog.csdn.net/a214919447/article/details/55260411 SOAP(Simple Object Access Protocol,简单对象 ...
- Atitit 基于图片图像 与文档混合文件夹的分类
Atitit 基于图片图像 与文档混合文件夹的分类 太小的文档(txt doc csv exl ppt pptx)单独分类 Mov10KminiDoc 但是可能会有一些书法图片迁移,因为他们很微小,需 ...
- MFC中 给基于CFormView的单文档添加背景图片
关于基于CFormView的单文档应用程序,添加一个图片背景的方法之一如下: 下面是利用LoadImage实现.(先在程序目录中添加背景图片back.bmp) 1.在view类中添加类成员变量:(为C ...
- groff - groff 文档排版系统前端
总览 (SYNOPSIS) groff [ -abehilpstvzCENRSUVXZ ] [ -wname ] [ -Wname ] [ -mname ] [ -Fdir ] [ -Idir ] [ ...
- troff - groff 文档排版系统的 troff 处理器
总览 SYNOPSIS troff [ -abcivzCERU ] [ -d cs ] [ -f fam ] [ -F dir ] [ -m name ] [ -M dir ] [ -n num ] ...
- ABP文档 - 通知系统
文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发 ...
- 基于 Markdown 编写接口文档
最近公司开发项目需要前后端分离,这样话就设计到后端接口设计.复杂功能需要提供各种各样的接口供前端调用,因此编写API文档非常有必要了 网上查了很多资料,发现基于Markdown编写文档是一种比较流行而 ...
随机推荐
- Cogs 1298.通讯问题
1298.通讯问题 ★ 输入文件:jdltt.in 输出文件:jdltt.out 简单对比 时间限制:1 s 内存限制:128 MB [题目描述] 一个篮球队有n个篮球队员,每个队员都有联系方式(如电 ...
- 深度优化LNMP之PHP (转)
深度优化LNMP之PHP PHP缓存加速介绍 1.操作码介绍及缓存原理 当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate ...
- 解决DataGridView.DataSource重复赋值而不显示问题
List<Person> list=new List<Person>(); ;i<;i++) { list.Add(new Person(){........}) } d ...
- python【第二十一篇】Django模板继承、分页、cookie验证
1.模板继承 母版master.html {% block title %}{% endblock %}2 {% block table-cont %}{% endblock %} 子板 {% ext ...
- 面试题:实现LRUCache::Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...
- 在Django中使用Mako模板
用了一个月后,终于忍受不了Django的模板了.主要原因是模板内不能运行原生的python语句,所以用起来总感觉被人绑住手脚,遍历个字典都要搞半天. 所以决定用第三方的模板.查了一下,django用的 ...
- 移动web HTML5使用photoswipe模仿微信朋友圈图片放大浏览
先来几张效果图: 点击其中一张照片可放大,可支持图片文字描述: 同时支持分享功能: 支持手势放大缩小 使用js框架是PhotoSwipe. PhotoSwipe是一个图片放大插件,兼容pc和移动端,经 ...
- android studio中文乱码的解决方法【转】
一. 在android的源文件中的乱码问题 Android Studio安装后发现所有的中文,不管是界面上的还是输出的log中的中文都变成小框框,具体的解决方法如下, 可以肯定是字体的问题 解决:菜单 ...
- jquery经验1
1.Javascript刷新页面的几种方法: location.reload()// 真刷新 location=location location.assign(location) document. ...
- VMware下打开Chrome OS遇到没有网络连接可用
打开ChromeOS.vmx文件,最后一行添加 ethernet0.virtualDev = "e1000" 就能解决.