若依-JFlow框架如何拉取、配置并运行请查看这篇文章:《第一章 若依-JFlow的配置与启动》

上一节我们讲解了如何拉取若依-JFlow框架代码并配置运行,这一部分我们就以公司员工请假的流程为例,设计一个流程,并为初始节点设计一个表单。

一、新建业务场景和流程模型

1. 启动项目以后,登录管理员账号(用户名:admin,密码:admin123),进入系统首页:

2. 创建流程:点击左侧第二个JFlow流程设计,再点击流程模板:

3. 系统中,流程树已经定义了一些业务场景(即不同的文件夹)如下图所示:

和文件夹的创建方式一样,我们只需要鼠标右键,点击新建子级目录即可创建一个业务场景,如果需要删除,就点击删除目录即可:

这里我创建一个名为业务场景231204的业务场景:

4. 创建流程模型:点击右上角新建流程

5. 流程名称自定义,设计模式选择专业模式即可,完成后点击右上角创建流程

如果此时创建完成后,浏览器对弹出窗口拦截时,直接点击拦截窗口,选择始终允许弹出窗口并从http://localhost:8089重定向,然后点击完成即可:

6. 此时就会弹出一个流程设计的窗口:

设计流程一共有五个步骤:

  1. 绘制流程图
  2. 设置接收人规则
  3. 设计表单
  4. 检查流程
  5. 测试并运行该流程

二、绘制流程图

1. 一个流程是由一个个流程节点组成的,如下图所示,Start Node和Node 2都是这个流程图的节点,绿色标志的是开始节点:

2. 鼠标右键点击空白处,可以新建节点:

3. 双击某个节点可以修改该节点的名称:

4. 要想将两个节点连接起来,长按该节点的图标,然后将连接线拉向另一个节点:

当然,如果你需要对连接线上添加文字说明,双击连接线即可:

如需删除连接线,也需要双击连接线,点击删除即可:

以下是一个简单的请假的流程模型:

三、设置接收人规则

接收人规则是指当前节点完成任务以后,这个任务转到下一节点时,由谁来处理。

JFlow默认的处理规则是:上一个节点选择那一个人(或者部门),就由这个人(部门)来处理。当然,我们也可以自行设计接收人规则。

鼠标右键点击节点,选择节点属性

接下来,我们就按照正常的请假流程设置每一个节点的接收人规则:

1. 员工填写请假单:我们假设公司所有的员工都可以填写请假单,因此规则设定为:所有的人员都可以发起:

2. 部门领导审批:假设每一个员工都处于一个部门,那么员工要将请假单交给对应部门领导审批:

假设部门领导角色是开发组长,这里选择程序员,点击保存,然后关闭此窗口:

接收人规则页面也点击保存即可:

3. 人事签字备案:设置规则和部门领导审批基本相同,分组模式中选择人力资源部经理审批即可:

4. 总经理审批亦同理,分组模式中选择总经理审批即可:

5. 查看请假单信息:由于是公司员工发起的请假申请,因此查看请假单信息应该由开始节点员工对应

至此,整个请假流程的所有接收人规则设置完成。

四、设计单个节点表单

4.1 表单方案的说明

鼠标右键点击节点,点击表单方案

系统默认给我们提供的是傻瓜表单。

傻瓜表单指的是在一个表单中,对应一个标签和一个控件,例如:如果标签为姓名,那么控件对应的就是文本框;如果填写的是性别,那么需要填写的控件是单选框。

对于小白而言,选择傻瓜表单即可应对多种场景。当然,JFlow还为我们提供了更多的表单方案:

4.2 请假单页面分析与设计

接下来,我们就是用表单方案,设计各级角色的请假申请单。

1. 员工填写请假单:鼠标右键点击节点,选择设计表单。进入表单设计页面:

2. 对于申请人而言,需要填写申请人姓名、所在部门名称、申请日期、请假类别(例如:事假、病假、婚假、丧假等)、请假事由、请假开始时间、请假结束时间、请假时长计算。

  • 对于申请人姓名、所在部门名称、申请日期我们只需要保证能获取到当前登录用户的信息和填写申请所在日期即可,直接让系统自动生成,不需要人为填写。
  • 请假类别对应的控件需要设置成单选框(假设请假只有一种情况)。
  • 请假开始时间、结束时间需要使用时间输入框。并且开始时间必须保证是今天及之后,结束时间必须是开始时间及之后。
  • 请假时长需要根据请假时间开始时间和请假结束时间计算即可。

4.3 绘制请假单基本框架

按照前面对请假单页面的分析,绘制请假单。

1. 申请人姓名:在左侧组件的基本字段中选中文字框拖入到中间区域,此时弹出一个提示框,这里我们组件名称为申请人姓名,组件id按照系统默认生成的即可,完成后点击继续添加:

2. 接下来组件名称填写为申请人所在部门,然后点击创建并继续添加

3. 申请日期的输入框类型是日期类型,然后填写组件名称,然后点击创建即可:

4. 此时表单如下图所示:

5. 请假事由是一个文本框,将左面文字组件拖入到表单即可:

6. 添加请假开始时间和请假结束时间,选择日期组件,输入格式设定为日期即可:

7. 请假时长控件的输入框类型选择数值即可:

8. 至此,我们的请假单基本框架就绘制完成了,如下图所示:

4.4 对请假单进一步完善

1. 按照上面我们指定的要求:申请人姓名、所在部门、申请日期由系统自动生成,并且设置为只读。那么我们需要对这三个控件分别操作。

  • 首先,点击申请人姓名,点击小齿轮,进入组件设置:

  • 我们能看到当前组件的基本信息,将系统默认值设置为登陆人员名称,然后点击保存,然后关闭这个窗口即可。

  • 此时申请人姓名组件中文本框出现一个@WebUser.Name的标识,这是我们上一步设置的结果,不用修改。

  • 申请人所在部门的设置和申请人姓名设置基本相同,只不过将系统默认值改为登陆人员部门名称

  • 申请日期的系统默认值设置为@RDT表示当前日期:

  • 设置完成后的表单如下图所示,我们需要将这三个组件设置为只读禁止修改:

  • 以申请人姓名组件为例,我们选中这个组件,然后在右侧开启是否只读

  • 申请人所在部门、申请日期的设置只读方式和前面的相同,设置完成后的效果图如下:

2. 接下来,我们再添加两个组件:请假类别、请假事由。

  • 请假类别我们使用枚举单选控件,将其拉入表单中,此时会弹出一个添加枚举值字段的窗口,点击新建:

  • 标签填写请假类别,对应的类别名称我们填写到下面的枚举框中,完成后点击保存:

  • 选择请假类别的枚举值:

  • 弹出框的内容,点击确定:

  • 点击保存:

  • 选择请假事由组件,在右侧组件设置中的文本类型设置为大块文本,开启超长文本,控件栅格选择整行:

3. 接下来,我们为开始时间、结束时间、请假时长这三个组件设置规则:

  • 选中开始时间,点击齿轮,修改组件基本信息:选择日期输入限制,输入日期大于或等于当前日期,设置规则如下图所示:

  • 选中结束时间,点击齿轮,修改组件基本信息:选择日期输入限制,输入日期大于等于请假开始时间,设置规则如下图所示:

  • 选中请假时长,点击齿轮,修改组件基本信息:

  • 为了更好向用户展示请假时长,我们需要对请假时长设置时间单位,由于我们在前面选择的是日期格式,因此请假时长单位是以天为单位:选中组件,在右侧组件设置的后置提示设置为“天”

  • 请假是由用户填写上述的上述的开始日期和结束日期,经过系统计算而得出的,因此这一部分不需要我们填写,我们把这个控件设置为只读即可:选中请假时长控件,在右侧开启是否只读

4. 点击最外面的组件,在右侧我们修改一下组件名字为:请假申请单

5. 至此,“员工填写请假申请”节点的表单绘制完成,效果图如下图所示:

当然,我们只绘制了一个节点表单,那么其他节点的表单也在上述表单的基础上进行绘制。如何在这个表单的基础上绘制其他节点的表单,以及后续所有表单绘制完成后的操作如何,我们放到下一篇文章讲解。

第二章 若依JFlow流程模型设计的更多相关文章

  1. PHP:第二章——PHP中的流程控制语句

    if语句的集中形式 <?php /*if(条件) 语句; if(条件){语句块} if(条件){语句或语句块}else{语句或语句块} if(条件){语句或语句块}elseif(条件){语句或语 ...

  2. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  3. 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第二章:选择你的网络分析灵魂伴侣的最佳策略 在Web Analytics 2.0的新世界秩序中,您必须跳出"单一真理来 ...

  4. MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  5. CISA 信息系统审计知识点 [第二章. IT治理和管理 ]

    第二章.  IT治理和管理 1.  IT治理.管理.安全和控制框架及标准.指南和实践 IT治理是董事会和执行管理层的职责. IT治理的关键因素:保持与业务的战略一致,引导业务价值的实现. IT治理关注 ...

  6. Laxcus大数据管理系统2.0(5)- 第二章 数据组织

    第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同 ...

  7. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  8. 学习opencv中文版教程——第二章

    学习opencv中文版教程——第二章 所有案例,跑起来~~~然而并没有都跑起来...我只把我能跑的都尽量跑了,毕竟看书还是很生硬,能运行能出结果,才比较好. 越着急,心越慌,越是着急,越要慢,越是陌生 ...

  9. (转)iOS Wow体验 - 第二章 - iOS用户体验解析(2)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第二章译文精选的第二部分,其余章节将陆续放出.上一 ...

  10. 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具

    iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...

随机推荐

  1. CI+JUnit5并发单测机制创新实践

    一. 现状·问题 针对现如今高并发场景的业务系统,"并发问题" 终归是必不可少的一类(占比接近10%),每次出现问题和事故后,需要耗费大量人力成本排查分析并修复.那如果能在事前尽可 ...

  2. SpringBoot + 自定义注解,实现用户操作日志(支持SpEL表达式)

    背景 一个成熟的系统,都会针对一些关键的操作,去创建用户操作日志. 比如: XX人创建了一条订单,订单号:XXXXXXXXX 因为操作人或者订单号是动态的,所以有些开发人员,不知道获取,就将这种操作日 ...

  3. 【krpano】图文案例

    KRPano图文案例可以展示图片和文字,并支持图片放大浏览,以及文本拖动等操作. 具体截图如下: 下载地址:http://pan.baidu.com/s/1qXQnPes 感谢群内小伙伴 快乐分享 本 ...

  4. Solution -「营业」「ABC 209F」Deforestation

    Description   Link.   有 \(n\) 棵树,每棵的高度为 \(a(i)\),看到一棵树对答案的贡献为 \(a(i-1)+a(i)+a(i+1)\)(未定义范围为 \(0\)),求 ...

  5. 6.swagger完善:界面显示注释+多版本控制

    周末,写点简单的水一下. 新版本的vs创建项目的时候可以选择自带一个swagger.然而这只是基本的swagger功能. 几个接口无所谓啦,随着接口越来越多,就这么丢给你,一时间也会懵逼,所以这篇文章 ...

  6. 【RcoketMQ】RcoketMQ 5.0新特性(一)- Proxy

    为了向云原生演进,提高资源利用和弹性能力,RcoketMQ在5.0进行了架构的调整与升级,先来看新特性之一,增加了Proxy层. 增加Proxy代理层 计算存储分离 计算存储分离是一种分层架构,将计算 ...

  7. Meteors 题解

    Meteors 蒟蒻初学整体二分,写一篇题解记录一下思考与看法. 题目大意 在一个环形的轨道上分别着若干国家的空间站,在接下来的一段时间内会出现若干次陨石,每次出现在环形的某一段轨道,每个国家都想收集 ...

  8. 探索CPU的黑盒子:解密指令执行的秘密

    引言 在我们之前的章节中,我们着重讲解了CPU内部的处理过程,以及与之密切相关的数据总线知识.在这个基础上,我们今天将继续深入探讨CPU执行指令的相关知识,这对于我们理解计算机的工作原理至关重要. C ...

  9. VLAN虚拟网络

    VLAN 名称:vlan 虚拟局域网(virtual LAN) 用途 由于交换机所有的端口都在同一广播域,只要发送广播会产生大量的垃圾信息,同时会有病毒的安全隐患(病毒). 为了解决上述问题 1.物理 ...

  10. 虹科干货| 虹科Redis企业版数据库:告别游戏卡顿,让快乐加速!

    "卡顿一分钟,玩家两行泪" 游戏已成为年轻人最主要的消遣娱乐方式之一,游戏卡顿给玩家带来糟糕游戏体验背后的原因是什么?数据存储与查询速度不够快!   游戏开发领域,不仅拥有海量的数 ...