1. 程式人生 > 程式設計 >Activiti explorer.war示例工程使用過程圖解

Activiti explorer.war示例工程使用過程圖解

工作流主要解決的主要問題是:為了實現某個業務目標,利用計算機在多個參與者之間按某種預定規則自動傳遞文件、資訊或者任務。

activiti官方提供了一個示例工程activiti-explorer.war,執行這個工程可以體驗activiti的基本功能,瞭解工作流的基本使用。

本文中使用的是activiti-5.22.0的官方包,

下載地址

一、搭建開發環境

要執行示例工程,需要安裝jdk8和tomcat。其中jdk需要jdk8或以上,tomcat我使用的是tomcat8,使用tomcat7時啟動會報如下錯誤:

嚴重: Exception sending context initialized event to listener instance of class org.activiti.explorer.servlet.WebConfigurer
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demoDataConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected org.activiti.engine.IdentityService org.activiti.explorer.conf.DemoDataConfiguration.identityService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'identityService' defined in class path resource [org/activiti/explorer/conf/ActivitiEngineConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.activiti.engine.IdentityService]: Factory method 'identityService' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processEngine' defined in class path resource [org/activiti/explorer/conf/ActivitiEngineConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.activiti.engine.ProcessEngine]: Factory method 'processEngine' threw exception; nested exception is java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processEngineFactoryBean': FactoryBean threw exception on object creation; nested exception is java.util.ServiceConfigurationError: org.activiti.engine.cfg.ProcessEngineConfigurator: org.activiti.management.jmx.JMXConfigurator not a subtype
  at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
  at org.activiti.explorer.servlet.WebConfigurer.contextInitialized(WebConfigurer.java:40)
  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5197)
  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5720)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:662)
  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1127)
  at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:2020)
  at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
  at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
  at java.base/java.lang.Thread.run(Thread.java:844)

不明白這個是什麼原因造成的,但tomcat升級到8版本後可以正常啟動.

二、執行示例工程

將 activiti-5.22.0 的官方包解壓後複製其中的activiti-explorer.war到本地tomcat的webapps目錄中,然後啟動tomcat,瀏覽器中訪問http://localhost:8080/activiti-explorer/,會出現如下的登入介面,可以使用預設的賬戶密碼

kermit/kermit 進行登入

Activiti explorer.war示例工程使用過程圖解

登入成功後,就可以在這個示例應用中體驗activiti的基本功能。

三、示例工程功能演示

這個工程分為了四個功能模組:任務、流程、報表、管理

Activiti explorer.war示例工程使用過程圖解

下面我按照一般的使用流程來講解下這幾個功能模組

1. 建立流程圖

從工作流的定義,為了實現某個業務目標利用計算機在多個參與者之間按某種預定規則自動傳遞文件、資訊或者任務。可以知道使用工作流前我們需要先定義一個規則,在這裡的規則指的就是流程圖。

進入流程管理模組,按如下選單選則新建一個流程模型

流程-->流程設計工作區 -->新建模型

Activiti explorer.war示例工程使用過程圖解

然後在新的頁面中繪製一個簡單的請假流程並儲存。繪製流程圖時注意要在使用者任務的屬性中分配assignment為當前的登入人kermit,這樣才能在代辦中看到新的任務。

如下是新建好的請假流程

Activiti explorer.war示例工程使用過程圖解

這樣流程圖就建立好了。

2. 部署流程圖

畫好的流程圖經過部署後才可以使用。在流程設計工作區選定剛才新建的流程,處理模型選擇部署,完成流程的部署

Activiti explorer.war示例工程使用過程圖解

3. 啟動流程

部署完成後就可以啟動這個流程,建立任務。在"已部署流程定義"中選中剛部署的流程,點選"啟動流程"就可以啟動流程。流程啟動後就會在“任務”模組的"代辦任務"中出現一個新的任務"apply vacation",這就是我們在流程圖中定義的第一個使用者任務。

這裡要注意如果在畫流程圖時沒有指定使用者任務的assignee屬性,或者指定的不是當前登入人的id,這個任務就不會出現在登入人的代辦任務中

Activiti explorer.war示例工程使用過程圖解

4. 完成任務

在任務模組對任務進行操作。在代辦列表中找到剛才啟動流程產生的那個任務,點選完成任務,流程就會走到下一個節點,並建立一個manager agree的任務,再完成這個任務,剛才開啟的流程就結束了。

5. 使用者管理

在管理模組的使用者選項卡下可以對使用者進行管理。這裡的使用者可以作為流程圖上配置的assignees,使用對應賬號登入後就可以操作各自的任務。

四、資料持久化

需要注意的是這個示例工程預設使用的是h2資料庫,資料沒有持久化到硬碟上,所以如果關閉tomcat後剛才操作的所有資料都會丟失,如果需要把操作資料持久化到硬碟上,就需要配置資料庫設定,讓示例工程連線本機上的mysql資料庫。需要以下兩個步驟:

(1) 修改war包中的配置檔案,activiti-explorer\WEB-INF\classes\db.properties中的內容為以下內容

db=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///activiti_explore
jdbc.username=root
jdbc.password=root

這樣示例工程就連線上了本機上的mysql資料庫

(2) 給該工程新增mysql的驅動jar包

該示例工程中是沒有mysql的驅動的,所以這樣配置後啟動會報找不到資料庫驅動的錯誤。複製一個驅動jar包到

activiti-explorer\WEB-INF\lib目錄下,就完成新增。

重啟tomcat,到資料庫activiti_explore中檢視,發現activiti自動了建立了需要的表結構,說明已經完成了資料持久化的配置。

五、總結

以上演示瞭如何使用activiti-5.22.0的示例工程 activiti-explorer.war如何使用。需要注意的是這個示例工程預設使用的是h2資料庫,資料沒有持久化到硬碟上,所以如果關閉tomcat後剛才操作的所有資料都會丟失。

如果需要把操作資料持久化到硬碟上,就需要配置資料庫設定,讓示例工程連線本機上的mysql資料庫。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。