kwenpp 2017-05-25 03:45 采纳率: 0%
浏览 2286

activiti事务提交的问题

图片说明
我在example1关联的class中,用mybatis插入一条记录到SQL Server数据库,
我在example1中查找数据库中的这条记录,可以查到
我在example2中查找数据库中的这条记录,也可以查到
但是,我直接在SQL Server数据库中却查不到。
是不是因为流程的事务没有被提交,麻烦各位大神不吝赐教。

  • 写回答

1条回答 默认 最新

  • 一只小爪磕 前端领域新星创作者 2024-07-02 00:30
    关注

    您好题主!
    🍭本答案参考GPT-4o,由爪磕整理并总结,希望对您有所帮助!


    从你描述的情况来看,确实有可能是事务没有提交导致你在SQL Server中直接查询不到插入的这条记录。Activiti流程引擎默认情况下会在整个流程实例完成之前,将所有数据库操作放在一个事务中。这意味着,如果流程实例尚未完成,事务还没有提交,你在SQL Server中是看不到这些未提交的变更的。

    你可以尝试以下几个方法来解决这个问题:

    1. 强制提交事务
      example1中插入记录后,手动提交事务。可以在MyBatis中配置事务管理器,或者在代码中手动提交事务。例如:

      SqlSession session = sqlSessionFactory.openSession();
      try {
          session.insert("insertRecord", record);
          session.commit();  // 这行代码会提交事务
      } finally {
          session.close();
      }
      
    2. 配置Activiti的事务行为
      Activiti允许你配置事务行为。你可以在流程定义中配置特定节点的事务行为。比如,你可以在example1之后插入一个服务任务节点,该节点的作用是提交事务。

      <serviceTask id="commitTransaction" name="Commit Transaction" activiti:class="com.example.CommitTransactionTask"/>
      

      CommitTransactionTask类中实现事务提交逻辑。

    3. 使用独立的事务管理
      如果你希望每个任务节点(如example1example2)都在独立的事务中执行,可以在流程定义中配置每个节点的事务处理方式。例如,将example1example2的事务隔离。

      <serviceTask id="example1" name="Example 1" activiti:async="true" activiti:exclusive="false" activiti:class="com.example.Example1Task"/>
      <serviceTask id="example2" name="Example 2" activiti:async="true" activiti:exclusive="false" activiti:class="com.example.Example2Task"/>
      

      这样,每个任务节点会在独立的事务中执行,事务会在每个任务完成后自动提交。

    4. 调试和日志
      开启SQL Server的事务日志,检查是否有未提交的事务。如果发现有未提交的事务,可以进一步调试你的代码,确保在适当的时机提交事务。

    请根据你的实际需求选择合适的方案。如果需要更详细的帮助,请提供更多的代码和配置细节。

    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵