使用activity 获取流程中的各个节点id,并导出到excel中

代码示例展示了如何通过Activiti的API获取流程中的节点信息,并利用ApachePOI库将这些信息导出到Excel文件中,包括ProcessDefinitionID、ProcessDefinitionName、ActivityID和ActivityName等字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用activity 获取流程中的各个节点id,并导出excel

最近工作中需要梳理 流程中的节点,方便对流程的规则进行初始化的一些默认定义。
talk is cheap ,show code!


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;


import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.converter.util.InputStreamProvider;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import org.activiti.bpmn.model.BpmnModel;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.util.Collection;


public class ProcessNodesToExcel {
public static void main(String[] args) {
        try {
// 获取 ProcessEngine 实例
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

            // 获取 RepositoryService 对象
            RepositoryService repositoryService = processEngine.getRepositoryService();

            // 查询已部署的流程定义
            ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
            Collection<ProcessDefinition> processDefinitions = query.list();

            // 创建 Excel 工作簿
            Workbook workbook = new XSSFWorkbook();
            Sheet sheet = workbook.createSheet("Process Nodes");

            // 添加表头
            Row headerRow = sheet.createRow(0);
            headerRow.createCell(0).setCellValue("Process Definition ID");
            headerRow.createCell(1).setCellValue("Process Definition Name");
            headerRow.createCell(2).setCellValue("Activity ID");
            headerRow.createCell(3).setCellValue("Activity Name");

            int rowNum = 1;

            // 遍历流程定义,获取流程的节点名称
            for (ProcessDefinition processDefinition : processDefinitions) {
                String processDefinitionId = processDefinition.getId();
                String processDefinitionName = processDefinition.getName();
                BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
                // 获取流程的所有节点名称
                Collection<org.activiti.bpmn.model.FlowElement> flowElements = bpmnModel.getMainProcess().getFlowElements();
                for (org.activiti.bpmn.model.FlowElement flowElement : flowElements) {
                    if (flowElement instanceof org.activiti.bpmn.model.UserTask) {
                        String activityId = flowElement.getId();
                        String activityName = flowElement.getName();
                        // 创建新行,写入流程节点信息
                        Row row = sheet.createRow(rowNum++);
                        row.createCell(0).setCellValue(processDefinitionId);
                        row.createCell(1).setCellValue(processDefinitionName);
                        row.createCell(2).setCellValue(activityId);
                        row.createCell(3).setCellValue(activityName);
                    }
                }
            }
            // 将数据写入 Excel 文件
            FileOutputStream fileOut = new FileOutputStream("ProcessNodes.xlsx");
            workbook.write(fileOut);
            fileOut.close();

            // 提示成功导出
            System.out.println("成功导出流程节点信息到 Excel 文件。");
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上代码部份由 chatgpt生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值