您好,登錄后才能下訂單哦!
一、processEngineConfiguration配置
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcUrl" value="jdbc:h3:mem:activiti;DB_CLOSE_DELAY=1000" /> <property name="jdbcDriver" value="org.h3.Driver" /> <property name="jdbcUsername" value="sa" /> <property name="jdbcPassword" value="" /> <property name="" value="true" /> <property name="" value="false" /> <property name="mailServerHost" value="mail.my-corp.com" /> <property name="mailServerPort" value="5025" />
<property name="createDiagramOnDeploy" value="false" /><!--不生成流程定義圖片-->
</bean>
org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration
單獨運行的流程引擎。Activiti會自己處理事務。 默認,數據庫只在引擎啟動時檢測 (如果沒有Activiti的表或者表結構不正確就會拋出異常)。
org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration
單元測試時的輔助類。Activiti會自己控制事務。 默認使用H2內存數據庫。數據庫表會在引擎啟動時創建,關閉時刪除。 使用它時,不需要其他配置(除非使用job執行器或郵件功能)。
org.activiti.spring.SpringProcessEngineConfiguration
在Spring環境下使用流程引擎。 參考Spring集成章節。
org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration
單獨運行流程引擎,并使用JTA事務。
databaseSchemaUpdate: 設置流程引擎啟動和關閉時如何處理數據庫表。false
(默認):檢查數據庫表的版本和依賴庫的版本, 如果版本不匹配就拋出異常。true
: 構建流程引擎時,執行檢查,如果需要就執行更新。 如果表不存在,就創建。create-drop
: 構建流程引擎時創建數據庫表, 關閉流程引擎時刪除這些表。
二、數據庫相關配置
1、jdbc方式:
jdbcUrl: 數據庫的JDBC URL。
jdbcDriver: 對應不同數據庫類型的驅動。
jdbcUsername: 連接數據庫的用戶名。
jdbcPassword: 連接數據庫的密碼。
jdbcMaxActiveConnections: 連接池中處于被使用狀態的連接的最大值。默認為10。
jdbcMaxIdleConnections: 連接池中處于空閑狀態的連接的最大值。
jdbcMaxCheckoutTime: 連接被取出使用的最長時間,超過時間會被強制回收。 默認為20000(20秒)。
jdbcMaxWaitTime: 這是一個底層配置,讓連接池可以在長時間無法獲得連接時, 打印一條日志,并重新嘗試獲取一個連接。(避免因為錯誤配置導致沉默的操作失敗)。 默認為20000(20秒)。
2、dbcp連接池方式:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" > <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/activiti" /> <property name="username" value="activiti" /> <property name="password" value="activiti" /> <property name="defaultAutoCommit" value="false" /> </bean> <bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="dataSource" ref="dataSource" /> ...
三、JNDI數據庫配置、支持的數據庫、數據庫創建
http://www.mossle.com/docs/activiti/
四、理解數據庫表的命名
Activiti的表都以ACT_開頭。 第二部分是表示表的用途的兩個字母標識。 用途也和服務的API對應。
ACT_RE_*: 'RE'表示
repository
。 這個前綴的表包含了流程定義和流程靜態資源 (圖片,規則,等等)。ACT_RU_*: 'RU'表示
runtime
。 這些運行時的表,包含流程實例,任務,變量,異步任務,等運行中的數據。 Activiti只在流程實例執行過程中保存這些數據, 在流程結束時就會刪除這些記錄。 這樣運行時表可以一直很小速度很快。ACT_ID_*: 'ID'表示
identity
。 這些表包含身份信息,比如用戶,組等等。ACT_HI_*: 'HI'表示
history
。 這些表包含歷史數據,比如歷史流程實例, 變量,任務等等。ACT_GE_*:
通用
數據, 用于不同場景下。
五、Job執行器
是管理一系列線程的組件,可以觸發定時器(也包含后續的異步消息)。 在單元測試場景下,很難使用多線程。因此API允許查詢()和執行job (),所以job可以在單元測試中控制。 要避免與job執行器沖突,可以關閉它。 默認,在流程引擎啟動時就會激活。 如果不想在流程引擎啟動后自動激活,可以設置
<property name="jobExecutorActivate" value="false" />
六、配置部署緩存
所有流程定義都被緩存了(解析之后)避免每次使用前都要訪問數據庫, 因為流程定義數據是不會改變的。 默認,不會限制這個緩存。如果想限制流程定義緩存,可以添加如下配置
<property name="processDefinitionCacheLimit" value="10" />
七、日志、映射診斷上下文
需要打印工作流的日志時需要配置,默認不打印日志。
九、事件處理
1、事件監聽器實現:
實現事件監聽器的唯一要求是實現org.activiti.engine.delegate.event.ActivitiEventListener。
public class MyEventListener implements ActivitiEventListener { @Override public void onEvent(ActivitiEvent event) { switch (event.getType()) { case JOB_EXECUTION_SUCCESS: System.out.println("A job well done!"); break; case JOB_EXECUTION_FAILURE: System.out.println("A job has failed..."); break; default: System.out.println("Event received: " + event.getType()); } } @Override public boolean isFailOnException() { // The logic in the onEvent method of this listener is not critical, exceptions // can be ignored if logging fails... return false; } }
方法決定了當事件分發時,方法拋出異常時的行為。 這里返回的是,會忽略異常。 當返回時,異常不會忽略,繼續向上傳播,迅速導致當前命令失敗。 當事件是一個API調用的一部分時(或其他事務性操作,比如job執行), 事務就會回滾。當事件監聽器中的行為不是業務性時,建議返回。 activiti提供了一些基礎的實現,實現了事件監聽器的常用場景。可以用來作為基類或監聽器實現的樣例:
org.activiti.engine.delegate.event.BaseEntityEventListener: 這個事件監聽器的基類可以用來監聽實體相關的事件,可以針對某一類型實體,也可以是全部實體。 它隱藏了類型檢測,并提供了三個需要重寫的方法:onCreate(..)
, onUpdate(..)
和 onDelete(..)
,當實體創建,更新,或刪除時調用。對于其他實體相關的事件,會調用 onEntityEvent(..)
。
2、配置:
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> ... <property name="eventListeners"> <list> <bean class="org.activiti.engine.example.MyEventListener" /> </list> </property> </bean>
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> ... <property name="typedEventListeners"> <map> <entry key="JOB_EXECUTION_SUCCESS,JOB_EXECUTION_FAILURE" > <list> <bean class="org.activiti.engine.example.MyJobEventListener" /> </list> </entry> </map> </property> </bean>
3、在運行階段添加監聽器:
可以通過API(RuntimeService
)在運行階段添加或刪除額外的事件監聽器:
void addEventListener(ActivitiEventListener listenerToAdd);
void addEventListener(ActivitiEventListener listenerToAdd, ActivitiEventType... types);
void removeEventListener(ActivitiEventListener listenerToRemove);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。