擴(kuò)展activiti刪除ACT_HI_*歷史表報(bào)錯(cuò)怎么解決

今天小編給大家分享一下擴(kuò)展activiti刪除ACT_HI_*歷史表報(bào)錯(cuò)怎么解決的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

創(chuàng)新互聯(lián)建站:從2013年開始為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為成百上千家公司企業(yè)提供了專業(yè)的成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)和網(wǎng)站推廣服務(wù), 按需開發(fā)由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競(jìng)爭(zhēng)對(duì)手,根據(jù)客戶的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。

activiti自帶了很多表,如圖:

擴(kuò)展activiti刪除ACT_HI_*歷史表報(bào)錯(cuò)怎么解決

ACT_HI_*:HI表示歷史數(shù)據(jù)(History)表,包括過期的流程實(shí)例,過期的變量和過期的任務(wù)等。

歷史表中沒有創(chuàng)建外鍵,可以很好的控制歷史表。

在項(xiàng)目中,有可能不需要保存歷史記錄,也就是這些ACT_HI_*表可以刪除了。

刪除ACT_HI_*歷史表,重新啟動(dòng)項(xiàng)目后報(bào)錯(cuò):

嚴(yán)重: Error while closing command context
org.activiti.engine.ActivitiException: Activiti database problem: Tables missing for component(s) history
	at org.activiti.engine.impl.db.DbSqlSession.dbSchemaCheckVersion(DbSqlSession.java:713)
	at org.activiti.engine.impl.db.DbSqlSession.performSchemaOperationsProcessEngineBuild(DbSqlSession.java:1097)
	at org.activiti.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:27)
	at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)
	at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:60)
	at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:32)
	at org.activiti.engine.impl.ProcessEngineImpl.<init>(ProcessEngineImpl.java:75)
	at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:311)
	at org.activiti.engine.ProcessEngines.buildProcessEngine(ProcessEngines.java:194)
	at org.activiti.engine.ProcessEngines.initProcessEnginFromResource(ProcessEngines.java:167)
	at org.activiti.engine.ProcessEngines.init(ProcessEngines.java:98)

定位到錯(cuò)誤地方:DbSqlSession.java

 if (dbSqlSessionFactory.isDbHistoryUsed() && !isHistoryTablePresent()) {
        errorMessage = addMissingComponent(errorMessage, "history");
      }

這里主要的工作是檢查數(shù)據(jù)庫中是否有歷史表,因?yàn)樯厦鎰h除了數(shù)據(jù)庫中的歷史表所以報(bào)錯(cuò)了。

這里面有一個(gè)很重要的變量dbSqlSessionFactory.isDbHistoryUsed() ,從代碼上面的意思也就是可以關(guān)閉使用歷史表,好吧,就在創(chuàng)建配置文件的時(shí)候把它設(shè)置成false。

 ProcessEngineConfiguration configuration = ProcessEngineConfiguration
		    		.createProcessEngineConfigurationFromResourceDefault();
		  if(configuration instanceof ProcessEngineConfigurationImpl){
			  //這里的主要作用是為了,刪除歷史數(shù)據(jù),在啟動(dòng)的時(shí)候不去檢測(cè)歷史數(shù)據(jù)庫是否存在
			 ((ProcessEngineConfigurationImpl) configuration).setDbHistoryUsed(false);
		  }
		  ProcessEngine processEngine = configuration.buildProcessEngine();

重新啟動(dòng)后還是有問題,后來debug跟進(jìn)去發(fā)現(xiàn)在使用:

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

使用上面代碼獲取引擎的時(shí)候又一次去加載配置文件了,搞了半天,才發(fā)現(xiàn):

ProcessEngines.getDefaultProcessEngine()獲取默認(rèn)的activiti引擎,首先會(huì)根據(jù)字段isInitialized判斷是否已經(jīng)加載了activiti配置文件,如果沒有加載就去加載activiti.cfg.xml和activiti-context.xml,如果加載了,就在processEngines根據(jù)名稱在獲取相應(yīng)的引擎。 

使用 configuration.buildProcessEngine()創(chuàng)建activiti引擎的時(shí)候,加載了activiti配置文件,然后把創(chuàng)建的引擎添加到了工具類ProcessEngines的processEngines中。并沒有設(shè)置字段isInitialized。

所以在項(xiàng)目中使用 ProcessEngines.getDefaultProcessEngine()獲取默認(rèn)的activiti引擎時(shí)候,第一次還會(huì)去加載配置文件信息。

這個(gè)怎么解決呢?

后來想到activiti.cfg.xml中的配置信息需要加載到ProcessEngineConfigurationImpl中,應(yīng)該是先解析,然后尋找相應(yīng)屬性的set方法進(jìn)行賦值?。ㄎ也碌模D蔷屯ㄟ^配置文件設(shè)置吧:

<property name="dbHistoryUsed" value="false" />

啟動(dòng)后項(xiàng)目,成功了,不在報(bào)錯(cuò)了。

以上就是“擴(kuò)展activiti刪除ACT_HI_*歷史表報(bào)錯(cuò)怎么解決”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

標(biāo)題名稱:擴(kuò)展activiti刪除ACT_HI_*歷史表報(bào)錯(cuò)怎么解決
標(biāo)題網(wǎng)址:http://muchs.cn/article30/ipjpso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、微信公眾號(hào)域名注冊(cè)、用戶體驗(yàn)、Google小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作