给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网络安全面试题
绿盟护网行动
还有大家最喜欢的黑客技术
网络安全源码合集+工具包
所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- BPMN定义了一个流程图,该流程图使用上述符号编写。如下图就是通过BPMN规则绘画的图。
说白了如上图规则的图就BPMN流程图。
2.BPMN常用符号
1.开始节点
表明从此处开始流程。
2.任务节点
其中包含了很多种任务,如图。其中最常用的就是用户任务。指定审批人都需要此选项。
3.网关组件
网关相当于判断(与,或,非),最常用的三种网关分别是互斥/排他网关,并行网关,相容网关。
- 互斥网关:相当于判断,举例说明,如果输入值大于20走A节点,小于20走B节点。
- 并行网关:相容网关成对出现,表示网关中的人全部同意才能够进入下一节点。
3 .相容网关:互斥网关与并行网关的结合体,如果满足A,B都互斥条件,则都需要流转,如果只有一个满足,那么只流转满足条件的。
3.来个例子
说明如下:
- 当审批申请人提交完成后进入审批阶段
- 两位项目经理进行审批,需要两人都同意后进入下一节点。
- 经理进行审批,此处业务为经理职位(manage)的人都可以执行审批。(此处有认领业务此处不描述)
- 此处总经理/董事长审批,如果大于20天需要董事长审批,如果小于20天总经理审批。
4.为什么选择flowable
在技术选择上,flowable较activiti更加新,功能更加完善。以用新不用旧的原则,建议使用flowable。但是相比于activiti来说,他的网上文档非常少。入门也更加困难。
当然可以自己开发审批流系统,设计提交人与审批人字段,通过sql查询可以完成。这种是最费时费力的方法,同时在功能上与开源架构完全没有可比性。而且开源的flowable/activiti已经形成了自己的体系,当与客户侃大山时,更加凸显系统的专业
。
5.通用的业务流程
标准的审批流系统都有一套标准化的业务流程下文,介绍如何操作审批流系统。
1.整体流程
业务流程主要分以下步骤:
一般在系统中的模块名如下,请各自对应。
这里的任务管理可以查看到一个流程每个审批节点的具体信息。非必要业务。
1.编辑流程
这部分主要是制作流程。
1.自定义表单
在申请人进行审批时,需要填写申请的项目和申请数据。如请假审批需要填写请假时间和请假原因。所以这个表单我们希望可以定制。
2.编辑流程模型
也就是使用BPMN绘制流程图,在图中会指定该审批流程的表单,下一审批节点人员与进入流程的流转条件。
当然也可以导入流程图。同时可以指定申请人在申请时需要填写的表单。(审批人如果需要添加审批表单也可以在此处配置)
3.部署成流程定义
流程模型在编辑/导入后,并不会生效。之后发布生成流程定义后才能够使用并发起审批。当然流程定义模块还有导出激活等功能。
2.执行审批
1.功能列表
当设计完流程之后,就可以发起审批和进行审批了,用户拥有以下功能。
2.功能解释
驳回:将审批重置发送给某节点,重新审批。
转办:A转给其B审批,B审批后,进入下一节点。
委派:A转给其B审批,B审批后,转给A,A审批后进入下一节点。
3.查询流程实例与任务
根据上图可见,当发起审批后,就会生成流程实例了。流程实例和任务管理就可以查看到已经发起的审批了。
- 每一套审批信息生成一条流程实例信息。
- 一条流程实例有多个审批节点(流程图中已画),每一个审批节点是一条任务管理信息。
请注意流程定义和流程实例概念。
6.如何开发
flowable其实很简单,但是因为市面上的资料比较少,说明白的更加的少,所以该技术栈流通的比较困难。
flowable为我们提供了47张表和7个常用api。
1.提供的表
Flowable的所有数据库表都以ACT_开头。第二部分是说明表用途的两字符标示符。服务API的命名也大略符合这个规则。
- ACT_RE_*: 'RE’代表repository。带有这个前缀的表包含“静态”信息,例如流程定义与流程资源(图片、规则等)。
- ACT_RU_*: 'RU’代表runtime。这些表存储运行时信息,例如流程实例(process instance)、用户任务(user task)、变量(variable)、作业(job)等。Flowable只在流程实例运行中保存运行时数据,并在流程实例结束时删除记录。这样保证运行时表小和快。
- ACT_HI_*: 'HI’代表history。这些表存储历史数据,例如已完成的流程实例、变量、任务等。
- ACT_GE_*: 通用数据。在多处使用。
- ACT_ID_*: 表示组织信息,如用户,用户组,等等。(很少使用)
- FLW_*.未找到官方描述,且表中都为空。
1.ACT_GE_*
ACT_GE_BYTEARRAY:保存流程的bpmn的xml以及流程的Image缩略图等信息
ACT_GE_PROPERTY:Flowable相关的基本信息。比如各个module使用的版本信息。
2.ACT_RE_*
ACT_RE_DEPLOYMENT: 部署对象,存储流程名称
ACT_RE_MODEL:基于流程的模型信息
ACT_RE_PROCDEF:流程定义表
3.ACT_RU_*
ACT_RU_ACTINST:运行中实例的活动表
ACT_RU_DEADLETTER_JOB:当JOB执行很多次都无法执行,就会被记录在此表
ACT_RU_ENTITYLINK:还没使用到。后续更新此表。
ACT_RU_EVENT_SUBSCR:运行时的事件
ACT_RU_EXECUTION:运行的实例表
ACT_RU_HISTORY_JOB; 运行中的定时任务历史表
ACT_RU_IDENTITYLINK: 当前任务执行人的信息
ACT_RU_JOB:运行中的异步任务
ACT_RU_SUSPENDED_JOB:暂停的任务表。如果一个异步任务在运行中,被暂停。就会记录在词表
ACT_RU_TASK:运行中的正常节点任务
ACT_RU_TIMER_JOB:定时作业表
ACT_RU_VARIABLE:运行中的流程实例变量
4.ACT_ID_*
ACT_ID_BYTEARRAY:
ACT_ID_GROUP:用户组信息
ACT_ID_INFO:用户详情
ACT_ID_MEMBERSHIP:用户组和用户的关系
ACT_ID_PRIV:权限
ACT_ID_PRIV_MAPPING:用户组和权限之间的关系
ACT_ID_PROPERTY:用户或者用户组属性拓展表
ACT_ID_TOKEN:登录相关日志
ACT_ID_USER:用户
5.ACT_HI_*
ACT_HI_ACTINST: 流程实例历史
ACT_HI_ATTACHMENT:实例的历史附件,几乎不会使用,会加大数据库很大的一个loading
ACT_HI_COMMENT:实例的历史备注
ACT_HI_DETAIL:实例流程详细信息
ACT_HI_IDENTITYLINK: 实例节点中,如果指定了目标人,产生的历史
ACT_HI_PROCINST:流程实例历史
ACT_HI_TASKINST:流程实例的任务历史
ACT_HI_VARINST:流程实例的变量历史
6.FLW_*
FLW_CHANNEL_DEFINITION: 泳池管道定义表
FLW_EVENT_DEFINITION:事件定义
FLW_EVENT_DEPLOYMENT:事件必输
FLW_EVENT_RESOURCE:事件所需资源
FLW_EV_DATABASECHANGELOG:Liquibase执行的记录
FLW_EV_DATABASECHANGELOGLOCK:Liquibase执行锁
FLW_RU_BATCH:暂时未知
FLW_RU_BATCH_PART:暂时未知
2.提供的接口api
flowable提供了7个常见的api,这些api就对应着上文的所有逻辑,所以只要掌握这些api就可以完成审批业务的开发了。
1.FormService
表单数据的管理。
formService.getStartFormKey() 获取表单key
formService.getRenderedStartForm()查询表单json(无数据)
2.RepositoryService
提供了在编辑和发布审批流程的api。主要是模型管理和流程定义的业务api。
1.提供了带条件的查询模型流程定义的api
repositoryService.createXXXQuery()
例如:
repositoryService.createModelQuery().list() 模型查询
repositoryService.createProcessDefinitionQuery().list() 流程定义查询
repositoryService.createXXXXQuery().XXXKey(XXX) (查询该key是否存在)
2.提供一大波模型与流程定义的通用方法
模型相关
repositoryService.getModel() (获取模型)
repositoryService.saveModel() (保存模型)
repositoryService.deleteModel() (删除模型)
repositoryService.createDeployment().deploy(); (部署模型)
repositoryService.getModelEditorSource() (获得模型JSON数据的UTF8字符串)
repositoryService.getModelEditorSourceExtra() (获取PNG格式图像)
3.流程定义相关
repositoryService.getProcessDefinition(ProcessDefinitionId); 获取流程定义具体信息
repositoryService.activateProcessDefinitionById() 激活流程定义
repositoryService.suspendProcessDefinitionById() 挂起流程定义
repositoryService.deleteDeployment() 删除流程定义
repositoryService.getProcessDiagram()获取流程定义图片流
repositoryService.getResourceAsStream()获取流程定义xml流
repositoryService.getBpmnModel(pde.getId()) 获取bpmn对象(当前进行到的那个节点的流程图使用)
4.流程定义授权相关
repositoryService.getIdentityLinksForProcessDefinition() 流程定义授权列表
repositoryService.addCandidateStarterGroup()新增组流程授权
repositoryService.addCandidateStarterUser()新增用户流程授权
repositoryService.deleteCandidateStarterGroup() 删除组流程授权
### 给大家的福利
**零基础入门**
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
![](https://i-blog.csdnimg.cn/blog_migrate/adf0897b07ab2276161763a94ef2b8b3.png)
同时每个成长路线对应的板块都有配套的视频提供:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3e4801501d80f6bd4fea8230337015a9.png#pic_center)
因篇幅有限,仅展示部分资料
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**