# osflow-engine
**Repository Path**: openEA/osflow-engine
## Basic Information
- **Project Name**: osflow-engine
- **Description**: 独立的流程引擎jar,体积小,开箱即用。
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: http://open.linkey.cn/
- **GVP Project**: No
## Statistics
- **Stars**: 10
- **Forks**: 7
- **Created**: 2020-12-17
- **Last Updated**: 2025-06-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# osflow-engine
#### 介绍
独立的流程引擎jar,开箱即用。
流程定义工具:[osflow-designer](https://gitee.com/openEA/osflow-designer)
#### 使用教程
**1、开发环境**
(1) IDEA 开发环境
(2) MySQL数据库(推荐5.7)
(3) Tomcat容器(推荐8.0)
(4) Maven仓库环境
**2、使用步骤**
1、导入flowchart.sql文件到MySQL数据库中,导入方法:
```shell
#创建数据库flowchart
CREATE DATABASE flowchart DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#还原数据库
mysql -u root -p flowchart < E:\flowchart.sql
```
2、“osflow-engine-1.0.jar”已经上传到Maven中央仓库,最新版本可将repository文件夹中的"cn"文件夹复制到Maven仓库根目录。
```xml
cn.linkey
osflow-engine
1.0
===========================================
# 如果集成项目中已经采用了slf4j包,则需在引入时排除
cn.linkey
osflow-engine
1.0
org.slf4j
slf4j-log4j12
```
注:maven镜像仓库地址,建议使用阿里云仓库,速度很快。
```
国外官网地址(慢):
https://repo1.maven.org/maven2/
https://repo2.maven.org/maven2/
国内阿里云同步仓库(快):
https://maven.aliyun.com/repository/central
```
3、 使用Tomcat部署流程图工具“tools/osflow-designer”,修改osflow-designer\META-INF\config.properties中的数据库配置信息,并确认画图工具可以正常打开。(注:osflow-designer只是用于流程定义,上线后可不必部署。)
#### 使用说明
1、使用osflow-designer画图工具进行流程定义;
2、参考wfdemo对osflow-engine引擎进行调用;接口详细用法以及调用步骤,参考“document/流程引擎测试文档20201029.xlsx”文档。
#### 接口说明
**1、获取所有流程信息 workFlow.getProcessMsg()**
```java
/**
* 获取所有流程信息
*
* @return 所有流程信息的JSONObject对象
*/
public void getProcessMsg() {
WorkFlow workFlow = new WorkFlowImpl(conn);
JSONArray processMsg = workFlow.getProcessMsg();
System.out.println(processMsg.toJSONString());
}
```
**2、打开流程审批单,(获取表单显示模板和业务数据接口)workFlow.openProcess(docUnid, processid, userid)**
```java
/**
* 打开一个流程(获取表单显示模板和业务数据接口)
* @param docUnid 文档ID
* @param processid 流程ID
* @param userid 用户ID
*/
private void openProcess(String docUnid, String processid, String userid) {
WorkFlow workFlow = new WorkFlowImpl(conn);
JSONObject object = workFlow.openProcess(docUnid, processid, userid);
System.out.println(object.toJSONString());
}
```
**3、启动或提交流程workFlow.runProcess(processid, docUnid, taskid, action, currentNodeid,**
**nextNodeid, nextUserList, copyUserList, userid, remark, isBackFlag, reassignmentFlag, maindata);**
```java
/**
* 启动流程、提交流程、审批流程
*/
private void submitProcess() {
WorkFlow workFlow = new WorkFlowImpl(conn);
String processid = "433c77e90c28204ed90a0d400d27774580ac";
String docUnid = ""; //流程文档ID
String taskid = ""; // 用户任务ID【可选,多实例时则需要传】
String action = "EndUserTask"; // 【提交动作】 GoToFirstNode、GoToOthers、EndUserTask、BackToDeliver、ReturnToAnyNode、
// BackToReturnUser、GoToAnyNode、GoToPrevUser、GoToPrevNode、GoToArchived、GoToNextParallelUser、GoToNextNode
String currentNodeid = ""; // 当前节点
String nextNodeid = "T00002"; // 下一个节点
String nextUserList = "admin"; // 下一个审批处理人ID
String copyUserList = ""; // 传阅用户ID
String userid = "lili";
String remark = "lili给admin";
String isBackFlag = ""; // 标记为回退,当为回退任意环节时,isBackFlag值可以为2,表示回退后需要直接返回给回退者
String reassignmentFlag = ""; // 转交时是否需要转交者返回的标记1表示不需要2表示需要
JSONObject maindata = new JSONObject();
// 表单数据
// maindata.put("name","lili");
// maindata.put("phone","7758258");
// maindata.put("sex","1");
// maindata.put("age","22");
String msg = workFlow.runProcess(processid, docUnid, taskid, action, currentNodeid,
nextNodeid, nextUserList, copyUserList, userid, remark, isBackFlag, reassignmentFlag, maindata);
System.out.println("流程提交结果:" + msg);
}
```
**4、获取审批过程信息workFlow.getApprovalInfo(docUnid)**
```java
/**
* 获取审批过程信息
* @param docUnid 文档ID
*/
private void getApprovalInfo(String docUnid) {
WorkFlow workFlow = new WorkFlowImpl(conn);
JSONObject object = workFlow.getApprovalInfo(docUnid);
System.out.println(object.toJSONString());
}
```
**5、获取用户待办workFlow.getUserToDoInfo(userid)**
```java
/**
* 获取用户待办
*
* @param userid
*/
public void showToDo(String userid) {
WorkFlow workFlow = new WorkFlowImpl(conn);
JSONArray TODOJSONArr = workFlow.getUserToDoInfo(userid);
System.out.println(TODOJSONArr.toJSONString());
}
```
#### 开源声明
本项目采用双重许可模式(GPL协议 + 商业许可协议)
QQ交流群:823545910