{"id":18802391,"url":"https://github.com/jd-opensource/jd-easyflow","last_synced_at":"2025-04-04T11:08:24.585Z","repository":{"id":57714327,"uuid":"449612723","full_name":"jd-opensource/jd-easyflow","owner":"jd-opensource","description":"A Smart Extensible Powerful Flow Engine","archived":false,"fork":false,"pushed_at":"2025-02-28T12:48:17.000Z","size":4212,"stargazers_count":210,"open_issues_count":1,"forks_count":43,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-28T10:02:05.388Z","etag":null,"topics":["bpmn","flow","flow-engine","flowengine","fsm","java","process-engine","workflow"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jd-opensource.png","metadata":{"files":{"readme":"README-zh.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-19T08:43:54.000Z","updated_at":"2025-03-27T13:28:14.000Z","dependencies_parsed_at":"2023-02-18T14:45:41.131Z","dependency_job_id":"df02c334-46c2-43ca-9263-30da1d623c61","html_url":"https://github.com/jd-opensource/jd-easyflow","commit_stats":null,"previous_names":["jd-opensource/jd-easyflow"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jd-opensource%2Fjd-easyflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jd-opensource%2Fjd-easyflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jd-opensource%2Fjd-easyflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jd-opensource%2Fjd-easyflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jd-opensource","download_url":"https://codeload.github.com/jd-opensource/jd-easyflow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247162438,"owners_count":20894220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bpmn","flow","flow-engine","flowengine","fsm","java","process-engine","workflow"],"created_at":"2024-11-07T22:27:49.451Z","updated_at":"2025-04-04T11:08:24.557Z","avatar_url":"https://github.com/jd-opensource.png","language":"JavaScript","readme":"# JDEasyFlow\n\n### 介绍\nJDEasyFlow是一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景。它的特点是简单、灵活、易扩展。开发人员30分钟可入门上手，半天可掌握其原理。\n\n### 软件架构\nJDEasyFlow底层为流程引擎/状态机模块(使用时选一便可，建议优先使用流程引擎)，此模块提供了基于JSON格式的JDEasyFlow规范进行流程编排的能力。\n\nBPMN模块提供了基于BPMN规范进行流程定义和可视化的能力，流程可视化基于[bpmn-js](https://bpmn.io/)，其本质为提供了将BPMN格式流程定义转换为JDEasyFlow格式的能力。\n\n\n### 使用说明\n\n在源码的test目录下有quickstart测试用例，可直接运行或调试以了解使用方式和运行原理。\n\n#### 流程引擎\n\n1. 代码中引入easyflow-flow jar包，以maven为例:\n```\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.jd.easyflow\u003c/groupId\u003e\n        \u003cartifactId\u003eeasyflow-flow\u003c/artifactId\u003e\n        \u003cversion\u003e{latestVersion}\u003c/version\u003e\n    \u003c/dependency\u003e\n```\n2. 编写流程定义文件\n以node001-\u003enode002-\u003enode003的执行顺序为例:\n```\n{\"id\": \"quickstart_001\", \"name\": \"Quick Start 001\",\n\"nodes\": [\n  {\"id\": \"node001\",\"name\": \"Node001\",\"action\": {\"createExp\": \"new com.jd.easyflow.flow.quickstart.QuickStart001Node01Action()\"},\"start\": true,\"post\": {\"to\": \"node002\"}},\n  {\"id\": \"node002\",\"name\": \"Node002\",\"action\": {\"createExp\": \"new com.jd.easyflow.flow.quickstart.QuickStart002Node01Action()\"},\"post\": {\"to\": \"node003\"}},\n  {\"id\": \"node003\",\"name\": \"Node003\",\"action\": {\"createExp\": \"new com.jd.easyflow.flow.quickstart.QuickStart003Node01Action()\"}}\n]\n}\n```\n其中QuickStart001Node01Action等为java节点动作类\n3. 编写应用启动时加载流程引擎的代码\n```\n        FlowEngineImpl flowEngine = new FlowEngineImpl();\n        flowEngine.setFlowPath(\"classpath:flow/quickstart/quickstart_001.json\");\n        flowEngine.init();\n```     \nSpring环境可直接定义FlowEngineImpl bean.        \n4. 编写具体流程调用执行的代码\n```\n       FlowParam param = new FlowParam(\"quickstart_001\");\n        FlowResult result = flowEngine.execute(param);\n```\n日志打印结果如下:\n```\n[main            ] INFO  FlowEngineImpl          - Start parsing definition files:easyflow-flow/target/test-classes/flow/quickstart/quickstart_001.json\n[main            ] INFO  FlowEngineImpl          - SART EXECUTE FLOW, flowId:quickstart_001 nodeIds:null\n[main            ] INFO  BaseFlowRunner          - EXECUTE NODE:node001\n[main            ] INFO  QuickStart001Node01Action  - Execute Node 001\n[main            ] INFO  BaseFlowRunner          - NEXT NODES:node002\n[main            ] INFO  BaseFlowRunner          - EXECUTE NODE:node002\n[main            ] INFO  QuickStart002Node01Action  - Execute Node 002\n[main            ] INFO  BaseFlowRunner          - NEXT NODES:node003\n[main            ] INFO  BaseFlowRunner          - EXECUTE NODE:node003\n[main            ] INFO  QuickStart003Node01Action  - Execute Node 003\n[main            ] INFO  BaseFlowRunner          - NEXT NODES:\n[main            ] INFO  QuickStartTest          - Execute finish, current node is:node003           \n```\n以上只是简单使用示例，EasyFlow可支持很多的配置项和使用场景，更多使用见wiki文档.\n\n#### 流程引擎-BPMN\n打开easyflow-flow-bpmn/BPMNDesigner.html流程设计器. 点击导入按钮，导入easyflow-flow-bpmn/src/test/resources/flow/quickstart/quickstart_001.bpmn文件，可在设计器中看到和以上JSON定义等价的BPMN流程定义.\n使用时只需要将FlowEngineImpl的flowParser设置为BpmnFlowParser.\n\n#### 工作流\n工作流模块提供了基于流程引擎的持久化和任务审批能力, 需要关系型数据库支持. 源码中的示例工程启动步骤如下:\n1. 检出本工程库代码至本地.\n1. 安装关系型数据库, 如MYSQL(使用时需遵守其许可). \n1. 建库表, 数据库名为easyflow, 表结构可参考源码中的create_all_table.sql和sample_form_template.sql. \n1. sample模块的application-open-all.yml文件中配置数据库连接信息, pom中引入数据库驱动jar包.\n1. 编译构建代码工程, 启动IntegrationOpenApplication类. 启动成功后访问http://localhost:9888便可看到JDEasyFlow管理界面.\n\n\n### 更多\nJDEasyFlow具有非常灵活的扩展性，你可以基于目前已开源组件扩展做更多的功能.\n\n### 联系我们\nemail: liyuliang5@jd.com","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjd-opensource%2Fjd-easyflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjd-opensource%2Fjd-easyflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjd-opensource%2Fjd-easyflow/lists"}