activiti oracle demo

2023年 8月 5日 10.9k 0

Activiti Oracle Demo

Activiti Oracle Demo

Activiti是一个开源的BPMN工作流引擎,可以用于自动化流程、任务和决策。在实际应用中,我们通常需要与数据库进行交互,因此,对Activiti的数据库支持也非常重要。本文将介绍如何使用Activiti与Oracle数据库交互,并以示例说明。

准备工作

首先,我们需要下载Activiti的Oracle Demo代码,下载地址为:https://github.com/Activiti/activiti-examples/tree/master/activiti-oracle-demo,下载后解压到本地。

接着,我们需要在本地安装Oracle数据库和Oracle的JDBC驱动程序。Oracle数据库的安装和配置过程略过,需要注意的是,我们需要为数据库创建一个专门用于Activiti的用户。

在安装完数据库后,我们需要下载Oracle的JDBC驱动程序,下载地址为:https://www.oracle.com/technetwork/database/features/jdbc/default-2280470.html。下载后,将jar包复制到项目的lib目录下。

配置文件

接下来,我们需要对Activiti的配置文件进行配置。打开项目中的src/main/resources/db.properties文件,修改其中的数据库配置信息:

db.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc:oracle:thin:@localhost:1521:xe
db.username=activiti
db.password=activiti
db.schema.strategy=create-drop

修改其中的db.url、db.username、db.password参数为相应配置信息。

创建数据库表

在修改了数据库配置之后,我们需要创建Activiti所需要的表,可以通过Activiti提供的Ant脚本来完成。执行以下命令:

ant create

该命令将创建Activiti所需要的表。

示例代码

在完成了以上步骤后,我们可以运行Activiti Oracle Demo示例代码。打开项目的src/main/java/org/activiti/examples/oracle/OracleDemo.java文件,该文件将启动Activiti的流程引擎,并执行一系列的测试操作。

public static void main(String[] args) {
LOGGER.info("start demo");
// 初始化
ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
.setJdbcDriver("oracle.jdbc.driver.OracleDriver")
.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe")
.setJdbcUsername("activiti")
.setJdbcPassword("activiti")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
.buildProcessEngine();
try {
RepositoryService repositoryService = processEngine.getRepositoryService();
IdentityService identityService = processEngine.getIdentityService();
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();
HistoryService historyService = processEngine.getHistoryService();
// 部署流程定义
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("org/activiti/examples/oracle/FinancialReportProcess.bpmn20.xml")
.deploy();
LOGGER.info("deployed process definition {}", deployment.getName());
// 验证部署
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.deploymentId(deployment.getId())
.singleResult();
assertEquals("financialReportProcess", processDefinition.getKey());
// 启动流程实例
String authenticatedUserId = "henryyan";
identityService.setAuthenticatedUserId(authenticatedUserId);
Mapvariables = Maps.newHashMap();
variables.put("endDate", new Date());
variables.put("reason", "测试流程");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("financialReportProcess", variables);
LOGGER.info("start process instance ok: {}", processInstance.getId());
// 验证任务是否生成
Task task = taskService.createTaskQuery()
.processInstanceId(processInstance.getId())
.singleResult();
assertEquals("填写财务报告", task.getName());
// 完成填写财务报告的任务
variables.clear();
variables.put("reportNumber", "001");
taskService.complete(task.getId(), variables);
LOGGER.info("task id {} has been completed", task.getId());
// 查询历史记录
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(processInstance.getId())
.singleResult();
assertNotNull(historicProcessInstance.getEndTime());
LOGGER.info("process instance end time: {}", historicProcessInstance.getEndTime());
} finally {
processEngine.close();
}
LOGGER.info("end demo");
}

上述代码中,我们首先配置了流程引擎的相关信息,然后部署了一个工作流程,启动了流程实例,并验证了任务的创建,最后完成任务并查询历史记录。

执行示例

在完成以上步骤之后,我们可以执行Oracle Demo示例了。执行以下命令:

mvn compile exec:java -Dexec.mainClass=org.activiti.examples.oracle.OracleDemo

示例将会启动Activiti流程引擎,并执行相应的测试操作。如果一切正常,我们将看到输出中包含相应的日志信息。

结论

本文介绍了如何使用Activiti与Oracle数据库交互,并通过示例说明了具体的操作流程。通过本文的介绍,读者应该可以更好地理解Activiti的数据库支持,并在实际应用中更加灵活地配置流程引擎。

相关文章

oracle 查询改写
PostgreSQL系数据库使用COPY导数时如何实现增量及重复数据更新导入
oracle 自动撤销
oracle NLS_LANGUAGE
Oracle NetSuite 客户说 | 借数字化之力“轻装”出海,让中国品牌全球热卖
脚本:自动生成精准的Oracle AWR报告

发布评论