一、需求 比如当前的流程存在多个步骤,每个步骤都需要人审批,此时的设计方案如何设计比较好?...但是这样有一个问题:需要有一个专门管理的审批流来管理流程。由于审批流和角色挂钩,因此不免需要和认证中心做交互。如果当前的审批流程比较长,会出现一个问题,审批中心出现异常,我们的审批信息也需要进行回滚。...当轮到那个角色审批的时候,就进行对应的审批行为,进行审批。此时不需要审批流框架的加持也能完成这个过程。 改进方式: 但是这种方案还是不够灵活。由此我想到还有一种方式可以实现这种操作。...也即在每次插入数据库前,将每个待审批的流程数据结构设计成json的数据结构,json里面带分支状态,结合状态来判断,这样每次执行完成,再增加一个总的状态,这样每次执行完成,就代表这个过程成功了,否则回退一个状态即可...方案三: 通常基于审批流程,如果是固定的,可以基于责任链模式,来设计审批流程。责任链模式最典型的代表就是Sentinel。基于SPI构建出来的典型固定流程的设计模式。其本质类似于链表的数据结构。
然后再由相应的审批人逐级进行审批,当其中有一个不通过,则整个流程不通过,当所有的审批人全部通过才可通过 OK流程已经清楚了,接下来我们来进行表结构的设计 只需要两张核心的审批表即可,其他需要进行审批流的业务表通过审批流编号....3.通过,4.驳回) 如此一来,OA审批流程的两张核心业务表就设计完成了。...首先用户表肯定是需要的,因为表单申请人和审核人都是关联的用户No,因为用户是根据部门走的,那么还需要设计一张部门表,再设计一张用户和部门相关联的表,把用户和部门联系起来,就可以从部门中选取相应角色。...有了用户表和审批业务核心表,接下来就可以根据公司业务需求,来设计相关的审批流程业务表了,这里就拿加班申请来举个例子,当用户需要进行加班的时候,肯定是需要走审批流程的,那么再来设计一张加班申请表 加班表...有了以上设计的表做铺垫,就可以为所欲为啦!
(百度百科) 责任链模式是一种行为型设计模式,也就是重点是处理数据,假设我们有一份数据,需要经过很多个节点处理,那么就会是以下这个样子: 一个节点处理完之后,交给下一个节点,不知道大家有没有使用过审批流...设计模式系列 设计模式【1】-- 单例模式到底几种写法? 设计模式【1.1】-- 你想如何破坏单例模式? 设计模式【1.2】-- 枚举式单例有那么好用么?...设计模式【1.3】-- 为什么饿汉式单例是线程安全的? 设计模式【2】-- 简单工厂模式了解一下? 设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?...设计模式【3.3】-- CGLIB动态代理源码解读 设计模式【4】-- 建造者模式 设计模式【5】-- 原型模式 设计模式【6.1】-- 初探适配器模式 设计模式【6.2】-- 再聊聊适配器模式 设计模式...设计模式【10】-- 顺便看看享元模式 设计模式【11】-- 组合模式的两种写法了解一下 设计模式【12】-- 聊聊策略模式 设计模式【13】-- 模板模式怎么弄?
flowable-admin.war flowable-idm.war flowable-modeler.war flowable-rest.war f...
项目中,审批操作无处不在。配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个。...当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随便的取一个审批人了,有以下方式针对不同的场景可以获取到当前记录的最终审批人以及审批意见。...,如果审批流程在审批过程中,再次更改Type则提示有审批中的记录,不允许再次修改。...审批通过或者失败则发送给创建人。邮件内容包括最终审批人以及审批意见。...,比如审批人,审批意见,审批状态等,可以直接获取到。
页面分为三部分,顶部,左边和右边。其中点击左边的超链接,右边的框架页面会相应变化。...5、如何在子页面中获取父页面所在的frameset中的其它的frame中的元素?...taskCreat").attr("class","list-group-item"); 6、frameset 的优缺点 我们知道,目前的 HTML5 标准已经不支持 frameset 了,虽然使用它重载页面时不需要重载整个页面...,只需要重载页面中的一个框架页(减少了数据的传输,加快了网页下载速度)。...但是它也有很多缺点,比如浏览器的后退按钮是没用的;会产生很多页面,不易管理;代码复杂,不易被搜索引擎搜索;小型移动设备显示不全;多框架的页面会增加服务器 http 请求等等。
一、效果图 image.png image.png image.png 二、前端页面 1、商品列表: reserveCommodityOnShelfList.jsp <%@ page contentType...$("#contentTable tbody tr button").each(function () { $(this).removeAttr("disabled");//页面刷新将所有的
对于单张页面上的信息排布和节奏并没有太多的感知,只是不知道的时候看看竞品,然后抄抄改改。虽然最后开发出来并没有问题但是总觉得自己没有提高。...现在在部门老大和导师的强行带飞下,发现原来单张页面的信息(框架层)是可以梳理的很清楚,并不断打磨的。...现在归纳一下页面信息设计方法: 1、这个页面要传达什么概念,需要包含什么信息 2、这些信息能被整合成几个大部分,每个部分传递了什么概念 3、这些大部分在页面应该以什么顺序排列才能让用户更好的理解页面想要传达的信息...4、每一个大部分能被分成几个小部分,每个小部分能让用户传递了什么概念 5、这些小部分在页面应该以什么顺序排列才能让用户更好的理解大部分想要传达的信息 6、让自己成为一个一无所知的用户,看进入这个页面后能获得什么信息...,这些信息是不是当时设计时想要传达的 举个例子(还可以继续拆分) 支付宝乘车码 感觉自己每天都在被带飞,每天都有新收获,开心~
2012-12-31 10:45:39 开心果(56381***) 我们在画"山寨版"的流程图的时候,对于
本来没有想到会有2的,结果最近的活动让我有了一些新的思考,就赶快梳理一下~ 页面思考信息1主要梳理的是面对一堆信息时如何通过不断的划分后优雅地展示,然而如果信息量本来就超出了用户能够理解的范围该怎么办?...选所在区域 3、公益捐赠 捐赠条件: 当日步数达到1000步时贡献步数即可捐赠0.1元 以下是实际沟通的流程: 1、分析需求 虽然这三个奖励的获得都能通过“贡献步数”这个动作获得,但是这3个事情要在一个活动页面中让用户短时间内理解清楚并不是一件简单的事...4、制作原型 总结 作为交互设计师,接到需求时其实是可以有所控制的,包括信息量、信息之间的关联程度、用户的理解成本等。
这是一个基于BS的页面设计器,通过拖拽和配置就可以实现增删查改功能,适合于各种专注业务的应用场景。配一配程序就开发完了,看图: 页面设计器 原文地址
$data['directorLevel'] : 0, //当前部门无负责人时:1、上级部门负责人审批;2、为空时跳过;(0、无此条件) 'no_hander' =...$data['selectMode'] : 0, //多人审批方式:1、或签;2、会签;3、依次审批;(0、无此条件) 'examine_mode' => isset($
前几天有小伙伴提起如何集成飞书在线审批呢,当然飞书也好,钉钉也好实现思路都是一样的。因此我们这里简单的说明一下如何实现钉钉在线审批思路。...大致流程 获取审批接口 获取审批数据 发送审批请求 简单说明 获取审批接口 /api/v2/audit/order/state r := e.Group("/api/v2", middleware.JWTWithConfig...(model.JWT)})) audit := r.Group("/audit") audit.Restful("/order/:tp", audit2.AuditRestFulAPis()) 审批...default: return c.JSON(http.StatusOK, common.ERR_REQ_FAKE) } } ❝顾名思义,每个case我们就不解释了,这里主要是看一下state // 工单审批..."source_id": "8280d90b-4130-4460-8002-87ada29e8c1d" } 每个字段的含义解读: work_id: 工单编号 flag: 流程步骤 tp: 工单审批动作
在前面的技术文章中已经很系统的介绍了UI自动化测试的技术栈的知识体系,但是在维护的成本而言还是需要考虑进一步的优化,那么我们可以使用页面对象设计模式,它的优势具体可以总结为如下: 创建可以跨多个测试用例共享的代码...减少重复代码的数量 如果用户界面发生了维护,我们只需要维护一个地方,这样修改以及维护的成本相对而言是比较高的 目录结构设计 下面我们具体针对这部分的目录进行设计,具体的目录结构为: 下面我详细的解释下每个目录的是干什么的...下存放的主要是工具类的代码,比如针对JSON文件,YAML文件的处理 common下主要存放的是公共类的代码,比如文件目录的处理 data主要存放测试过程中使用到的数据 report主要存储的是测试报告这部分 页面对象设计模式...上面已经很详细的解释了页面对象设计模式它的优势,以及目录结构的设计,下面依次来实现各个部分的代码。...,引人工厂设计模式后,这对基础层的代码进行完善,完善后的代码为: #!
article/details/71750893 背景: 每个网站开发中,多多少少会需要一些默认的配置项,相对而言一条条的手动添加是极为繁琐的,要分类各种图片、文字、文件、单选、多选按钮等,在此提供一种设计思路...一.数据库设计 1.数据库设计截图 ?...二.前端设计 1.添加页面展示 ? ? 2.核心代码参考 ?...三.后台代码设计 1.ConfigController.class.php 代码 private $confModel; public function __construct() {...五.附录 1.补录 可建议自行添加配置项排序功能 如果时间允许,建议将不同类型的配置项进行剥离处理,方便统一页面设计,美观适用性增强。 2.源代码下载 >>>
表单中的一切元素均左对齐 尽管新的设计占据了更多的垂直空间,但是标签/字段组却显得更加清晰。用户能够直接自上而下地扫视信息,而不必从左到右再循环往复。...预填充关联字段 一些细节记录页面都包含「发布器/publisher」,允许用户快速记录号码或创建新任务/活动。比如下面这张表单: ? 通过发布器记录号码 ?...为了解决这个问题,我们设计了一种折衷方案:系统会根据上下文预先填充某些关键信息。这样做就能够扫除填写表单时的潜在障碍,因为用户需要填写的字段从4个变成了2个。...键盘友好型&易用性 全新的 Lightning Experience 设计初衷就是更加容易使用。用户只使用键盘,就能够进行编辑和更改任何字段。
页面重构中的设计模式 由 Ghostzhang 发表于 2014-07-02 02:40 查了下最开始的创建日期,竟然是2011年12月19日,这文章断断续续写了快3年,终于了算比较完整了,但可能相对还是写得有些简单了...本地下载PDF 页面重构中的设计模式 from Ghost Zhang 以前写过的系列文章《 前言——页面重构中的设计模式 》,可以帮助理解,但需要注意的是,因为这期间有些想法上的变法,可能一些细节会不太一样
每一个网站都必须有404页面,404页面指的是显示网站错误链接的页面,可能是该访问的页面不存在,也可能是页面已经被删除。...设计404页面 Jacob Nielsen在十大可用性设计原则中曾提到: 帮助用户识别、诊断错误,以及解决错误:错误信息应以简单平实的语言(无代码语言)来表示,准确指出问题,并建设性地提出解决方案。...践行这个原则可以考虑到以下几点: 404页面的设计一定要与网站风格一致,不然会让用户感觉进入另一个网站,会立马关闭网页。...可以使用简洁明了的幽默文字或者动画,趣味性的引导用户返回上一级或者进入网站首页和其他页面。 不能直接把404页面指向首页,这种很容易让搜索引擎误认为多个重复页面,不利于优化。...---- 其实,404页面出现主要原因是无法满足用户的需求,用户无法得到自己所想要的东西而出现了404页面,所以404页面是一个值得重视的页面,不仅需要为每一个网站设置404页面,并且在其页面中要表达出对用户的歉意
领取专属 10元无门槛券
手把手带您无忧上云