流程引擎
发现写一点逻辑就更新下博客,有点麻烦,还是后端逻辑写完了在来更新了,可以去文章下方看看我gitee提交的代码,陆续更改吧!!!
流程引擎对于工作中,时刻在使用,最简单的就是请假,需要填写相关信息,提交给上级,然后再上一级,逐级下去,完成自己的请假。
以前使用activiti流程引擎实现工作上的任务扭转,基本就是通过调用api获取process的对象,基于此来进行一些逻辑判断。而现在因为工作不使用activiti,那么就只能开始了造轮子系列,前端菜鸟这里就只展示自己后端逻辑了。
前期设计
模板表设计(并不完整,后续补充)
1.模板表:用于记录流程模型
2.节点表:用于记录流程节点,与模板表关联
3.模板关联表:用于记录模型与表单关联
package com.process.processengine.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class BaseEntity {
@TableId(type = IdType.ASSIGN_UUID)
@ApiModelProperty(value = "主键")
private String id;
private Date createTime;
private Date updateTime;
private String createBy;
private String updateBy;
}
package com.process.processengine.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@TableName("process_model")
@ApiModel(value="模板", description="模板")
public class ProcessModelEntity extends BaseEntity{
@ApiModelProperty(value = "模板名")
private String modelName;
@ApiModelProperty(value = "是否启用 0否 1是")
private Integer modelStatus = 0;
}
package com.process.processengine.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@ApiModel(value = "节点信息")
@TableName("process_model_node")
@Accessors(chain = true)
public class ProcessModelNodeEntity extends BaseEntity{
@ApiModelProperty(value = "节点code")
private String nodeCode;
@ApiModelProperty(value = "节点名")
private String nodeName;
@ApiModelProperty(value = "节点类型 0开始节点 1普通节点 2判断节点 3退回到上一步节点 4退回到开始节点 5结束节点 (类型等扩展)")
private Integer nodeType;
@ApiModelProperty(value = "模板id")
private String modelId;
@ApiModelProperty(value = "下一节点code")
private String nextNodeCode;
@ApiModelProperty(value = "下一节点名")
private String nextNodeName;
@ApiModelProperty(value = "参与类型 机构0 人员1 角色2")
private Integer participationType;
@ApiModelProperty(value = "参与类型code 机构id 人员id 角色id")
private String participationCode;
@ApiModelProperty(value = "判断条件")
private String paramCondition;
}
package com