關於若依分模塊創建項目可參考:https://www.cnblogs.com/conswin/p/9766186.html
了解uflo2,uflo2是一套由BSTEK自主研發的基於Java的工作流引擎,它以Spring為基礎框架,采用Hibernate作為持久層,可運行於所有主流程應用服務器及流數據庫之上的輕量級流程引擎。
其官方說明文檔可參看:http://wiki.bsdn.org/pages/viewpage.action?pageId=30441763
下面主要記錄一下若依項目中集成uflo2的具體步驟:
①、創建maven module項目取名為【ruoyi-uflo】,父項目選取若依的父項目,【ruoyi-uflo】的pom.xml中加入uflo依賴,如下所示,記得再將【ruoyi-uflo】依賴加入到【ruoyi-framework】中。
<description> uflo2流程管理模塊 </description> <properties> <uflo.version>2.1.4</uflo.version> </properties> <dependencies> <!-- uflo2依賴包--> <dependency> <groupId>com.bstek.uflo</groupId> <artifactId>uflo-console</artifactId> <version>${uflo.version}</version> </dependency> <!-- 通用工具--> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-common</artifactId> <version>${ruoyi.version}</version> </dependency> </dependencies>
②、按下圖所示,創建servletConfig、UfloConfig、TestEvnironmentProvide:
·
servletConfig具體代碼:
@Configuration public class ServletConfig { @Bean public ServletRegistrationBean buildUfloServlet(){ return new ServletRegistrationBean(new UfloServlet(),"/uflo/*"); } }
UFloConfig具體代碼:
@Configuration public class UfloConfig { @Bean("localSessionFactoryBean") public LocalSessionFactoryBean localSessionFactoryBean(DataSource dataSource) throws PropertyVetoException, IOException { LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setPackagesToScan("com.bstek.uflo.model*"); Properties prop = new Properties(); prop.put("hibernate.dialect","org.hibernate.dialect.MySQL5Dialect"); prop.put("hibernate.show_sql",false); prop.put("hibernate.hbm2ddl.auto","update"); prop.put("hibernate.jdbc.batch_size",100); sessionFactoryBean.setHibernateProperties(prop); return sessionFactoryBean; } @Bean("ufloTransactionManager") public HibernateTransactionManager ufloTransactionManager(SessionFactory sessionFactory){ HibernateTransactionManager hi = new HibernateTransactionManager(); hi.setSessionFactory(sessionFactory); return hi; } }
TestEvnironmentProvide具體代碼:
@Component public class TestEnvironmentProvider implements EnvironmentProvider { @Autowired private SessionFactory sessionFactory; @Resource(name = "ufloTransactionManager") private PlatformTransactionManager platformTransactionManager; @Override public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } @Override public PlatformTransactionManager getPlatformTransactionManager() { return platformTransactionManager; } public void setPlatformTransactionManager(PlatformTransactionManager platformTransactionManager) { this.platformTransactionManager = platformTransactionManager; } @Override public String getLoginUser() { return null; } @Override public String getCategoryId() { return "anonymous"; } }
③、打開ruoyi-admin的配置啟動類RuoYiApplication.java,導入uflo的配置文件,如下代碼:
@ImportResource("classpath:uflo-console-context.xml")
④、啟動若依,會自動在數據庫生成uflo相應的數據表,訪問:【待辦任務】http://localhost/uflo/todo 或者 【流程設計】http://localhost/uflo/designer來驗證是否集成成功。
⑤、部分問題解決策略
a、通過流程設計頁面畫好流程圖進行發布部署時,會出現以下錯誤,導致部署失敗:
解決辦法:在pom文件中添加5.0.12版本的hibernate依賴,記得先將倉庫里其他版本的刪除后再更新。或者將uflo版本改到2.0.2 就不需要管hibernate的版本了。
我現在項目中用的是2.0.2版本,其他高的版本都會報以上錯誤,以上說的解決辦法嘗試了沒有用。
在畫流程圖的時候,【會簽任務】在處理會簽任務完成規則時,如果選擇圖中設定,會導致發布失敗。
解決辦法:打開對應流程模板的xml文件,比如你設定的是【完成指定任務數】為1,觀察xml中內容,你會發現xml中對應位置缺少了空格。
手動處理,加個空格即可。但這個修改后的xml不能在流程設計界面中發布,還是會報錯的。在流程中心界面,通過【上傳流程模板】按鈕選擇修改后的流程模板xml,進行發布即可。(滿滿的都是淚啊!!!)
b、【待辦任務】頁面中【待領取任務】點擊后報錯,彈出系統錯誤問題:
由於整個代碼中並沒有taskParticipators相關的代碼,導致報錯,目前無較好方法解決,可先屏蔽掉此功能。
參考文檔:https://blog.csdn.net/zh_yi/article/details/82423967#commentBox
感謝若依群里大牛【表面】、【難得糊塗】的技術支持。