流程模型相关接口开发

This commit is contained in:
lvshaohua 2023-05-30 15:37:08 +08:00
parent 62498ed749
commit 7596017adf
10 changed files with 226 additions and 84 deletions

View File

@ -40,6 +40,7 @@ public class UserDao extends ServiceImpl<UserMapper, User> {
.like(StringUtils.isNotBlank(userQO.getEmail()), User::getEmail, userQO.getEmail())
.orderByDesc(User::getCreateAt)
);
}
public IPage<User> find(UserQO1 userQO, PageQO page) {

View File

@ -1,10 +1,26 @@
package cn.axzo.server.repository.bpmModel;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class BpmJsonNode {
private BpmJsonNode(ShizhiJsonNode shizhiJsonNode) {
}
private BpmJsonNode() {
}
class ShizhiJsonNode {
private String id;
private String type;
private String config;
private List<ShizhiJsonNode> children;
}
private String id;
private String parentId;
private String type; // task, branch,
@ -14,4 +30,66 @@ public class BpmJsonNode {
private BpmJsonNode children;
private List<BpmJsonNode> branches;
public void build(String[] args) {
BpmJsonNode node = new BpmJsonNode();
ShizhiJsonNode tempShuzhi = new ShizhiJsonNode("Asdasdgjalksdkl");
findChildren(node, tempShuzhi);
}
public List<BpmJsonNode> findCondition(BpmJsonNode node,ShizhiJsonNode shuzhiJsonNode) {
if (shuzhiJsonNode.type.equals("condition")) {
List<BpmJsonNode> branchList = new ArrayList<BpmJsonNode>();
ShizhiJsonNode lasteatShuzhi = new ShizhiJsonNode();
for (ShizhiJsonNode temp : shuzhiJsonNode.children) {
branchList.add( findChildren(new BpmJsonNode(), temp) );
lasteatShuzhi = shuzhiJsonNode;
}
node.branches = branchList;
return branchList;
}
if (shuzhiJsonNode.type.equals("task")) {
findChildren(node, shuzhiJsonNode);
}
if (shuzhiJsonNode.type.equals("endCondition")) {
return null;
}
return null;
}
public BpmJsonNode findChildren(BpmJsonNode node, ShizhiJsonNode shuzhiJsonNode) {
if (shuzhiJsonNode == null) {
return null;
}
if (shuzhiJsonNode.type.equals("task")) {
node.children = new BpmJsonNode(shuzhiJsonNode);
findChildren(node.children, shuzhiJsonNode.children.get(0));
}
if (shuzhiJsonNode.type.equals("startCondition")) {
node.branches = findCondition(node, shuzhiJsonNode);
findChildren(node, shuzhiJsonNode.children.get(0));
}
return node;
}
}

View File

@ -17,15 +17,20 @@ public interface BpmModelService {
PageResult<BpmModelPageItemVO> getModelPage(BpmModelPageDTO modelPageDTO);
/**
* 创建流程
* 创建流程,
* return modelId的主键
* */
Boolean createBpmModel(BpmModelCreateDTO createDTO);
String createBpmModel(BpmModelCreateDTO createDTO);
/**
* 获取模型
* */
BpmModelDetailVO getModelDetailById(String modelId);
BpmModelDetailVO getModelDetail(String modelId);
/**
* 获取模型
* */
BpmModelDetailVO getModelDetailByKey(String modelKey);
/**
* 修改流程信息
@ -42,7 +47,4 @@ public interface BpmModelService {
* */
Boolean deleteBpmModel(String id);
}

View File

@ -0,0 +1,27 @@
package cn.axzo.server.service.converter;
import cn.axzo.server.service.dto.response.model.BpmModelDetailVO;
import org.flowable.engine.repository.Model;
import org.springframework.util.ObjectUtils;
public class BpmModelConverter {
public static BpmModelDetailVO convert(Model model) {
if (ObjectUtils.isEmpty(model)) {
return null;
}
BpmModelDetailVO detailVO = new BpmModelDetailVO();
detailVO.setCreateTime(model.getCreateTime());
detailVO.setKey(model.getKey());
detailVO.setLastUpdateTime(model.getLastUpdateTime());
detailVO.setCreateTime(model.getCreateTime());
detailVO.setLastUpdateTime(model.getLastUpdateTime());
detailVO.setCategory(model.getCategory());
detailVO.setTenantId(model.getTenantId());
detailVO.setVersion(model.getVersion());
detailVO.setName(model.getName());
return detailVO;
}
}

View File

@ -1,5 +1,6 @@
package cn.axzo.server.service.dto.request.model;
import cn.axzo.server.repository.bpmModel.BpmJsonNode;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@ -38,13 +39,15 @@ public class BpmModelCreateDTO {
private String category;
/**
* 流程icon的 url
* MetaInfo 自定义数据可以放icon等任何
* */
private String icon;
private Object metaInfo;
/**
* 流程的Json 结构
*
* */
private String bpmJson;
private BpmJsonNode node;
private String tenantId;
}

View File

@ -8,6 +8,7 @@ import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.Date;
import java.util.Map;
@Data
@NoArgsConstructor
@ -22,24 +23,18 @@ public class BpmModelBaseVO {
* */
private String name;
/**
* 流程描述
* */
private String description;
/**
* 流程分类
* */
private String category;
/**
* 流程icon的 url
* */
private String icon;
@ApiModelProperty(value = "创建时间", required = true)
private Date createTime;
@ApiModelProperty(value = "最后更新时间", required = true)
private Date lastUpdateTime;
/**
* 版本
@ -47,21 +42,17 @@ public class BpmModelBaseVO {
@ApiModelProperty(value = "版本", required = true, example = "1")
private Integer version;
/*
/**
* 流程实例Id如果已经部署了则有值如未部署为空
* */
private String processInstanceId;
/**
* 部署时间
*/
@ApiModelProperty(value = "部署时间", required = true)
private Date deploymentTime;
* icon / 模型描述放这里获取时原样返回
* */
private Map metaInfo;
private String tenantId;
/**
* 终端状态
*/
@ApiModelProperty(value = "流程状态", required = true, example = "1", notes = "参见 SuspensionState 枚举1 激活2挂起")
private Integer suspensionState;
}

View File

@ -1,5 +1,6 @@
package cn.axzo.server.service.dto.response.model;
import cn.axzo.server.repository.bpmModel.BpmJsonNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@ -13,6 +14,6 @@ public class BpmModelDetailVO extends BpmModelBaseVO{
* 流程的 Json 结构
*
* */
private String bpmJson;
private BpmJsonNode bpmJson;
}

View File

@ -0,0 +1,88 @@
package cn.axzo.server.service.impl;
import cn.axzo.server.service.BpmModelService;
import cn.axzo.server.service.BpmProcessService;
import cn.axzo.server.service.converter.BpmModelConverter;
import cn.axzo.server.service.dto.request.model.BpmModelCreateDTO;
import cn.axzo.server.service.dto.request.model.BpmModelPageDTO;
import cn.axzo.server.service.dto.request.model.BpmModelUpdateDTO;
import cn.axzo.server.service.dto.response.PageResult;
import cn.axzo.server.service.dto.response.model.BpmModelDetailVO;
import cn.axzo.server.service.dto.response.model.BpmModelPageItemVO;
import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.ObjectUtils;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.Model;
import org.flowable.engine.repository.ModelQuery;
import org.flowable.engine.repository.ProcessDefinitionQuery;
import org.springframework.context.annotation.Lazy;
import javax.annotation.Resource;
import java.util.Map;
public class BpmModelServiceImpl implements BpmModelService {
@Resource
@Lazy
private RepositoryService repositoryService;
@Override
public PageResult<BpmModelPageItemVO> getModelPage(BpmModelPageDTO modelPageDTO) {
return null;
}
@Override
public String createBpmModel(BpmModelCreateDTO createDTO) {
Model model = repositoryService.newModel();
model.setName(createDTO.getName());
model.setMetaInfo(JSON.toJSONString(createDTO.getMetaInfo()));
model.setCategory(createDTO.getCategory());
model.setKey(createDTO.getKey());
model.setTenantId(createDTO.getTenantId());
Model existModel = repositoryService.createModelQuery().modelKey(createDTO.getKey()).singleResult();
if (!ObjectUtils.isEmpty(existModel)) {
throw new RuntimeException("模型已存在");
}
repositoryService.saveModel(model);
return model.getId();
}
/**
* 获取模型
* */
@Override
public BpmModelDetailVO getModelDetailById(String modelId) {
Model model = repositoryService.getModel(modelId);
return BpmModelConverter.convert(model);
}
/**
* 获取模型
* */
@Override
public BpmModelDetailVO getModelDetailByKey(String modelKey) {
Model model = repositoryService.createModelQuery().modelKey(modelKey).singleResult();
return BpmModelConverter.convert(model);
}
@Override
public Boolean updateBpmModel(BpmModelUpdateDTO updateDTO) {
return null;
}
@Override
public Boolean deployBpmModel(String modelId) {
return null;
}
@Override
public Boolean deleteBpmModel(String id) {
return null;
}
}

View File

@ -6,8 +6,14 @@ import cn.axzo.server.service.dto.request.task.BpmTaskTodoPageDTO;
import cn.axzo.server.service.dto.response.PageResult;
import cn.axzo.server.service.dto.response.task.BpmTaskDonePageItemVO;
import cn.axzo.server.service.dto.response.task.BpmTaskTodoPageItemVO;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class BpmTaskServiceImpl implements BpmTaskService {
@Override
public PageResult<BpmTaskTodoPageItemVO> getTodoTaskPage(BpmTaskTodoPageDTO taskTodoPageDTO) {
return null;

View File

@ -1,55 +0,0 @@
package cn.axzo.server.service.model;
import cn.axzo.server.service.BpmModelService;
import cn.axzo.server.service.dto.request.model.BpmModelCreateDTO;
import cn.axzo.server.service.dto.request.model.BpmModelPageDTO;
import cn.axzo.server.service.dto.request.model.BpmModelUpdateDTO;
import cn.axzo.server.service.dto.response.PageResult;
import cn.axzo.server.service.dto.response.model.BpmModelDetailVO;
import cn.axzo.server.service.dto.response.model.BpmModelPageItemVO;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.Model;
import org.springframework.context.annotation.Lazy;
import javax.annotation.Resource;
public class BpmModelServiceImpl implements BpmModelService {
@Resource
@Lazy
private RepositoryService repositoryService;
@Override
public PageResult<BpmModelPageItemVO> getModelPage(BpmModelPageDTO modelPageDTO) {
return null;
}
@Override
public Boolean createBpmModel(BpmModelCreateDTO createDTO) {
Model model = repositoryService.newModel();
return null;
}
@Override
public BpmModelDetailVO getModelDetail(String modelId) {
return null;
}
@Override
public Boolean updateBpmModel(BpmModelUpdateDTO updateDTO) {
return null;
}
@Override
public Boolean deployBpmModel(String modelId) {
return null;
}
@Override
public Boolean deleteBpmModel(String id) {
return null;
}
}