前言
通过流程引擎获取MyBatis对象SqlSessionFactory,进而对数据库进行增删查改。
一、通过MyBatis操作数据库
public void updateStatus(String processInstanceId) {
// 1、获取流程引擎 http://t.zoukankan.com/tian830937-p-6646963.html
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration();
// 2、获取MyBatis对象SqlSessionFactory
SqlSessionFactory sqlSessionFactory = processEngineConfiguration.getSqlSessionFactory();
if (!sqlSessionFactory.getConfiguration().hasMapper(IAddNodeDto.class)) {
sqlSessionFactory.getConfiguration().addMapper(IAddNodeDto.class);
}
// 3、获取MyBatis对象SqlSession,对数据库进行操作
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 4、使用SqlSession创建Dao接口的代理对象
IAddNodeDto cm = sqlSession.getMapper(IAddNodeDto.class);
///5、使用代理对象执行方法
List<ActAddNode> selectList = cm.findByProcessInstanceId(processInstanceId);
if (CollectionUtils.isEmpty(selectList)) return;
log.info("自定义表存在动态节点,更新状态");
cm.updateState(processInstanceId);
} catch (Exception e) {
log.error("更新添加节点存在异常:{}", e.getMessage());
e.printStackTrace();
} finally {
// 6、释放资源
sqlSession.commit();
sqlSession.close();
}
}
二、IAddNodeDto 代理对象内容
代码如下(示例):
public interface IAddNodeDto{
@Select("select * from act_add_node where STATE_=0 ")
@Results({
@Result(property = "id", column = "ID"),
@Result(property = "processDefinitionId", column = "PROCESS_DEFINITION_ID"),
@Result(property = "doUserId", column = "DOUSERID"),
@Result(property = "actId", column = "ACT_ID"),
@Result(property = "processInstanceId", column = "PROCESS_INSTANCE_ID"),
@Result(property = "processText", column = "PROPERTIES_TEXT"),
@Result(property = "state", column = "STATE_"),
})
List<ActAddNode> find();
@Insert("insert into act_add_node(ID, PROCESS_DEFINITION_ID, PROCESS_INSTANCE_ID,PROPERTIES_TEXT,CREATE_TIME) values(#{id}, #{processDefinitionId}, #{processInstanceId}, #{processText},now())")
void insert(ActAddNode actAddNode);
@Delete("delete from act_add_node where PROCESS_INSTANCE_ID=#{processInstanceId}")
void delete(String processInstanceId);
@Update("update act_add_node set STATE_ = 1 where STATE_=0 and PROCESS_INSTANCE_ID=#{processInstanceId}")
void updateState(String processInstanceId);
@Select("select ID from act_add_node where STATE_=0 and PROCESS_INSTANCE_ID=#{processInstanceId}")
@Results({
@Result(property = "id", column = "ID")
})
List<ActAddNode> findByProcessInstanceId(String processInstanceId);
}
如果你对工作流感兴趣,想了解更多,请点击
[Java工作流管理系统(activity6.0)](https://blog.csdn.net/weixin_43830468/article/details/124060036?spm=1001.2014.3001.5502)