Commit 52c2029f by yuwei

项目初始化

parent f1e2b58b
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
</sql> </sql>
<select id="selectById" resultMap="BaseResultMap"> <select id="selectById" resultMap="BaseResultMap">
SELECT c.source_id, s.source_name, c.table_id, t.table_name SELECT c.source_id, s.source_name, c.table_id, t.table_name,
<include refid="Record_Column_List"><property name="alias" value="r"/></include> <include refid="Record_Column_List"><property name="alias" value="r"/></include>
FROM metadata_change_record r FROM metadata_change_record r
LEFT JOIN metadata_column c ON c.id = r.object_id LEFT JOIN metadata_column c ON c.id = r.object_id
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
</select> </select>
<select id="selectPage" resultMap="BaseResultMap"> <select id="selectPage" resultMap="BaseResultMap">
SELECT c.source_id, s.source_name, c.table_id, t.table_name SELECT c.source_id, s.source_name, c.table_id, t.table_name,
<include refid="Record_Column_List"><property name="alias" value="r"/></include> <include refid="Record_Column_List"><property name="alias" value="r"/></include>
FROM metadata_change_record r FROM metadata_change_record r
LEFT JOIN metadata_column c ON c.id = r.object_id LEFT JOIN metadata_column c ON c.id = r.object_id
......
package cn.datax.service.workflow.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class FlowDefinitionVo implements Serializable {
private static final long serialVersionUID=1L;
private String id;
private String Key;
private String name;
private int version;
private String category;
private String deploymentId;
private String resourceName;
private String diagramResourceName;
private int suspensionState;
}
package cn.datax.service.workflow.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class FlowInstanceVo implements Serializable {
private static final long serialVersionUID=1L;
}
package cn.datax.service.workflow.api.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class FlowTaskVo implements Serializable {
private static final long serialVersionUID=1L;
}
...@@ -3,6 +3,8 @@ package cn.datax.service.workflow.service; ...@@ -3,6 +3,8 @@ package cn.datax.service.workflow.service;
import cn.datax.service.workflow.api.dto.ProcessInstanceCreateRequest; import cn.datax.service.workflow.api.dto.ProcessInstanceCreateRequest;
import cn.datax.service.workflow.api.query.FlowInstanceQuery; import cn.datax.service.workflow.api.query.FlowInstanceQuery;
import java.io.InputStream;
public interface FlowInstanceService { public interface FlowInstanceService {
/** /**
...@@ -35,4 +37,16 @@ public interface FlowInstanceService { ...@@ -35,4 +37,16 @@ public interface FlowInstanceService {
* @param request * @param request
*/ */
void startProcessInstanceById(ProcessInstanceCreateRequest request); void startProcessInstanceById(ProcessInstanceCreateRequest request);
/**
* 获取流程图图片
* @param processInstanceId
*/
InputStream createImage(String processInstanceId);
/**
* 终止流程
* @param processInstanceId
*/
void stopProcessInstanceById(String processInstanceId) ;
} }
...@@ -42,6 +42,7 @@ public class FlowDefinitionServiceImpl implements FlowDefinitionService { ...@@ -42,6 +42,7 @@ public class FlowDefinitionServiceImpl implements FlowDefinitionService {
} }
long count = processDefinitionQuery.count(); long count = processDefinitionQuery.count();
List<ProcessDefinition> processDefinitionList = processDefinitionQuery.listPage((flowDefinitionQuery.getPageNum() - 1) * flowDefinitionQuery.getPageSize(), flowDefinitionQuery.getPageSize()); List<ProcessDefinition> processDefinitionList = processDefinitionQuery.listPage((flowDefinitionQuery.getPageNum() - 1) * flowDefinitionQuery.getPageSize(), flowDefinitionQuery.getPageSize());
ProcessDefinition processDefinition = processDefinitionList.get(0);
Page<ProcessDefinition> page = new Page<>(flowDefinitionQuery.getPageNum(), flowDefinitionQuery.getPageSize()); Page<ProcessDefinition> page = new Page<>(flowDefinitionQuery.getPageNum(), flowDefinitionQuery.getPageSize());
page.setRecords(processDefinitionList); page.setRecords(processDefinitionList);
page.setTotal(count); page.setTotal(count);
......
...@@ -7,16 +7,24 @@ import cn.datax.service.workflow.service.FlowInstanceService; ...@@ -7,16 +7,24 @@ import cn.datax.service.workflow.service.FlowInstanceService;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.constants.BpmnXMLConstants;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.common.engine.impl.identity.Authentication; import org.flowable.common.engine.impl.identity.Authentication;
import org.flowable.engine.HistoryService; import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService; import org.flowable.engine.RuntimeService;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.runtime.ProcessInstance; import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.runtime.ProcessInstanceBuilder; import org.flowable.engine.runtime.ProcessInstanceBuilder;
import org.flowable.engine.runtime.ProcessInstanceQuery; import org.flowable.engine.runtime.ProcessInstanceQuery;
import org.flowable.image.impl.DefaultProcessDiagramGenerator;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
...@@ -29,6 +37,12 @@ public class FlowInstanceServiceImpl implements FlowInstanceService { ...@@ -29,6 +37,12 @@ public class FlowInstanceServiceImpl implements FlowInstanceService {
@Autowired @Autowired
private HistoryService historyService; private HistoryService historyService;
@Autowired
private RepositoryService repositoryService;
private static final String IMAGE_TYPE = "png";
private static final String FONT_NAME = "宋体";
@Override @Override
public void page(FlowInstanceQuery flowInstanceQuery) { public void page(FlowInstanceQuery flowInstanceQuery) {
ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery(); ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery();
...@@ -83,7 +97,52 @@ public class FlowInstanceServiceImpl implements FlowInstanceService { ...@@ -83,7 +97,52 @@ public class FlowInstanceServiceImpl implements FlowInstanceService {
log.info("发起流程成功,流程ID:{}", processInstance.getId()); log.info("发起流程成功,流程ID:{}", processInstance.getId());
} }
// // 本人参与的流程实例 @Override
public InputStream createImage(String processInstanceId) {
//1.获取当前的流程实例
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
String processDefinitionId = null;
List<String> activeActivityIds = new ArrayList<>();
List<String> highLightedFlows = new ArrayList<>();
//2.获取所有的历史轨迹线对象
List<HistoricActivityInstance> historicSquenceFlows = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstanceId).activityType(BpmnXMLConstants.ELEMENT_SEQUENCE_FLOW).list();
historicSquenceFlows.forEach(historicActivityInstance -> highLightedFlows.add(historicActivityInstance.getActivityId()));
//3.获取流程定义id和高亮的节点id
if (processInstance != null) {
//3.1.正在运行的流程实例
processDefinitionId = processInstance.getProcessDefinitionId();
activeActivityIds = runtimeService.getActiveActivityIds(processInstanceId);
} else {
//3.2.已经结束的流程实例
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
processDefinitionId = historicProcessInstance.getProcessDefinitionId();
//3.3.获取结束节点列表
List<HistoricActivityInstance> historicEnds = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstanceId).activityType(BpmnXMLConstants.ELEMENT_EVENT_END).list();
List<String> finalActiveActivityIds = activeActivityIds;
historicEnds.forEach(historicActivityInstance -> finalActiveActivityIds.add(historicActivityInstance.getActivityId()));
}
//4.获取bpmnModel对象
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
//5.生成图片流
DefaultProcessDiagramGenerator diagramGenerator = new DefaultProcessDiagramGenerator();
InputStream inputStream = diagramGenerator.generateDiagram(bpmnModel, IMAGE_TYPE, activeActivityIds,
highLightedFlows, FONT_NAME, FONT_NAME, FONT_NAME,
null, 1.0, true);
return inputStream;
}
@Override
public void stopProcessInstanceById(String processInstanceId) {
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
if (processInstance != null) {
//1、添加终止意见
//2、执行终止
}
}
// // 本人参与的流程实例
// historyService.createHistoricProcessInstanceQuery().involvedUser(SecurityUtil.getUserId()).orderByProcessInstanceStartTime().desc().list(); // historyService.createHistoricProcessInstanceQuery().involvedUser(SecurityUtil.getUserId()).orderByProcessInstanceStartTime().desc().list();
// // 本人发起的流程实例 // // 本人发起的流程实例
// historyService.createHistoricProcessInstanceQuery().startedBy(SecurityUtil.getUserId()).orderByProcessInstanceStartTime().desc().list(); // historyService.createHistoricProcessInstanceQuery().startedBy(SecurityUtil.getUserId()).orderByProcessInstanceStartTime().desc().list();
......
...@@ -8,6 +8,12 @@ ...@@ -8,6 +8,12 @@
</div> </div>
<div class="body-wrapper"> <div class="body-wrapper">
<el-form ref="form" :model="form" label-width="80px" disabled> <el-form ref="form" :model="form" label-width="80px" disabled>
<el-form-item label="数据源" prop="sourceName">
<el-input v-model="form.sourceName" />
</el-form-item>
<el-form-item label="数据库表" prop="tableName">
<el-input v-model="form.tableName" />
</el-form-item>
<el-form-item label="变更字段" prop="fieldName"> <el-form-item label="变更字段" prop="fieldName">
<el-input v-model="fieldName" /> <el-input v-model="fieldName" />
</el-form-item> </el-form-item>
......
...@@ -9,6 +9,12 @@ ...@@ -9,6 +9,12 @@
</div> </div>
<div class="body-wrapper"> <div class="body-wrapper">
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="数据源" prop="sourceName">
<el-input v-model="form.sourceName" placeholder="请输入数据源" disabled />
</el-form-item>
<el-form-item label="数据库表" prop="tableName">
<el-input v-model="form.tableName" placeholder="请输入数据库表" disabled />
</el-form-item>
<el-form-item label="变更字段" prop="fieldName"> <el-form-item label="变更字段" prop="fieldName">
<el-input v-model="fieldName" placeholder="请输入变更字段" disabled /> <el-input v-model="fieldName" placeholder="请输入变更字段" disabled />
</el-form-item> </el-form-item>
......
...@@ -81,6 +81,8 @@ ...@@ -81,6 +81,8 @@
<span>{{ scope.$index + 1 }}</span> <span>{{ scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="sourceName" label="数据源" align="center" show-overflow-tooltip />
<el-table-column prop="tableName" label="数据库表" align="center" show-overflow-tooltip />
<el-table-column prop="fieldName" label="变更字段" align="center" show-overflow-tooltip :formatter="fieldNameFormatter" /> <el-table-column prop="fieldName" label="变更字段" align="center" show-overflow-tooltip :formatter="fieldNameFormatter" />
<el-table-column prop="version" label="版本号" align="center" show-overflow-tooltip /> <el-table-column prop="version" label="版本号" align="center" show-overflow-tooltip />
<el-table-column prop="fieldOldValue" label="原来的值" align="center" show-overflow-tooltip /> <el-table-column prop="fieldOldValue" label="原来的值" align="center" show-overflow-tooltip />
...@@ -214,6 +216,7 @@ export default { ...@@ -214,6 +216,7 @@ export default {
}, },
mounted() { mounted() {
this.getDataColumn(this.data.id) this.getDataColumn(this.data.id)
this.getChangeRecordList()
}, },
methods: { methods: {
showCard() { showCard() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment