本文目的: 將activit 5.12.1 的 modeler 流程設計器 集成到自己的工程中去
解決問題:
1. 復制相關資源文件到自己的工程中
2. 解決modeler的路徑訪問問題,遷移到非系統根目錄
3. 跟自己系統的spring無縫集成
首先請下載官方最新 5.12.1 發布包
下載地址: https://github.com/Activiti/Activiti/archive/activiti-5.12.1.zip
解壓后如下圖
步驟:
1. 復制相關文件
1.1首先復制類路徑資源文件
復制 \modules\activiti-webapp-explorer2\src\main\resources\下
db.properties 沒有選中
選中文件到你的classpath 根目錄下,(src 或者resource 類路徑下)
1.2 復制ui文件到你的webroot文件夾中
在 WebRoot目錄中建立一個文件夾 取名 modeler
復制 modules\activiti-webapp-explorer2\src\main\webapp 下
選中文件夾 到modeler目錄下.
1.3 修改web.xml文件. 添加modeler的servlet
添加如下代碼:
- <!-- Restlet adapter, used to expose modeler functionality through REST -->
- <servlet>
- <servlet-name>RestletServlet</servlet-name>
- <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
- <init-param>
- <!-- Application class name -->
- <param-name>org.restlet.application</param-name>
- <param-value>org.activiti.explorer.rest.application.ExplorerRestApplication</param-value>
- </init-param>
- </servlet>
- <!-- Catch all service requests -->
- <servlet-mapping>
- <servlet-name>RestletServlet</servlet-name>
- <url-pattern>/modeler/service/*</url-pattern>
- </servlet-mapping>
- <!-- Restlet adapter, used to expose modeler functionality through REST -->
- <servlet>
- <servlet-name>RestletServlet</servlet-name>
- <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
- <init-param>
- <!-- Application class name -->
- <param-name>org.restlet.application</param-name>
- <param-value>org.activiti.explorer.rest.application.ExplorerRestApplication</param-value>
- </init-param>
- </servlet>
- <!-- Catch all service requests -->
- <servlet-mapping>
- <servlet-name>RestletServlet</servlet-name>
- <url-pattern>/modeler/service/*</url-pattern>
- </servlet-mapping>
首先確認. 你的工程引入了spring的監聽. 也就代表你工程有spring . 因為activit-modeler嚴重依賴spring.
如果你工程沒有spring環境, 建議下面就別看了. (先把自己的ssh , ssi , ssm 等框架搭建起來).
如果你使用的是spring mvc 建議你在你的mvc控制文件中加入
- <mvc:resources location="/modeler/" mapping="/modeler/**" />
- <mvc:resources location="/modeler/" mapping="/modeler/**" />
因為很有可能你根我一樣過濾的是所有路徑
1.4 復制modules\activiti-webapp-explorer2\src\main\Java\org\activiti\explorer\rest\application下的
ExplorerRestApplication.java文件到你的classpath路徑下(會提示報錯. 必須的. 因為還沒有引入相關jar依賴)
1.5 在你的pom.xml文件中引入如下代碼
倉庫:
- <repository>
- <id>buzzmedia</id>
- <url>http://maven.thebuzzmedia.com</url> <!-- ImageScalr -->
- </repository>
- <repository>
- <id>activiti</id>
- <name>Activiti</name>
- <url>https://maven.alfresco.com/nexus/content/repositories/activiti/</url>
- </repository>
- <repository>
- <id>Alfresco thirdparty</id>
- <url>https://maven.alfresco.com/nexus/content/repositories/thirdparty/</url>
- </repository>
- <repository>
- <id>activiti-third-party</id>
- <name>Activiti third party</name>
- <url>https://maven.alfresco.com/nexus/content/repositories/activiti-thirdparty/</url>
- </repository>
- <repository>
- <id>maven-restlet</id>
- <name>Public online Restlet repository</name>
- <url>http://maven.restlet.org</url>
- </repository>
- <repository>
- <id>buzzmedia</id>
- <url>http://maven.thebuzzmedia.com</url> <!-- ImageScalr -->
- </repository>
- <repository>
- <id>activiti</id>
- <name>Activiti</name>
- <url>https://maven.alfresco.com/nexus/content/repositories/activiti/</url>
- </repository>
- <repository>
- <id>Alfresco thirdparty</id>
- <url>https://maven.alfresco.com/nexus/content/repositories/thirdparty/</url>
- </repository>
- <repository>
- <id>activiti-third-party</id>
- <name>Activiti third party</name>
- <url>https://maven.alfresco.com/nexus/content/repositories/activiti-thirdparty/</url>
- </repository>
- <repository>
- <id>maven-restlet</id>
- <name>Public online Restlet repository</name>
- <url>http://maven.restlet.org</url>
- </repository>
jar依賴
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-modeler</artifactId>
- <version>${activiti.version}</version>
- </dependency>
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-explorer</artifactId>
- <version>${activiti.version}</version>
- <exclusions>
- <exclusion>
- <groupid>com.vaadin</groupid>
- <artifactid>vaadin</artifactid>
- </exclusion>
- <exclusion>
- <groupid>org.vaadin.addons</groupid>
- <artifactid>dcharts-widget</artifactid>
- </exclusion>
- <exclusion>
- <artifactid>activiti-simple-workflow</artifactid>
- <groupid>org.activiti</groupid>
- </exclusion>
- </exclusions>
- </dependency>
- <!-- 查看流程詳細定義 -->
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-diagram-rest</artifactId>
- <version>${activiti.version}</version>
- </dependency>
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-modeler</artifactId>
- <version>${activiti.version}</version>
- </dependency>
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-explorer</artifactId>
- <version>${activiti.version}</version>
- <exclusions>
- <exclusion>
- <groupid>com.vaadin</groupid>
- <artifactid>vaadin</artifactid>
- </exclusion>
- <exclusion>
- <groupid>org.vaadin.addons</groupid>
- <artifactid>dcharts-widget</artifactid>
- </exclusion>
- <exclusion>
- <artifactid>activiti-simple-workflow</artifactid>
- <groupid>org.activiti</groupid>
- </exclusion>
- </exclusions>
- </dependency>
- <!-- 查看流程詳細定義 -->
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-diagram-rest</artifactId>
- <version>${activiti.version}</version>
- </dependency>
修改 diagram-viewer\index.html
文件.
如果你打算使用他的流程跟蹤的話(建議修改,5.13版本跟蹤頁面已經支持IE了.不集成還費勁自己搞跟蹤圖提示呢?)
只需要使用5.13的
jstools.js
ProcessDiagramCanvas.js
在 \modules\activiti-webapp-explorer2\src\main\webapp\diagram-viewer\js 下
這兩個js 替換 5.12.1的同名js即可
OK編譯,clean 下載jar. ....
里面的spring版本替換成你自己的版本
OK了. 至此,集成到項目中也就完成了.
是否要測試下?
啟動
訪問:
http://localhost:8080/YouPRJ/modeler/service/editor?id=2050
2050 替換成自己的流程部署文件id
OK可以直接編輯. 保存.
=======================================================================
以上是嵌入部署.
下面是獨立部署. 你也可以直接使用官方的activiti-explorer (呵呵.有點大.多余功能用不上)
這個是我從explorer里面分離出來的 單獨modeler模塊. (maven-eclipse工程)
https://github.com/izerui/activiti-modeler
可以打包war包.跟你的項目放同一個web容器中.即可使用
http://localhost:8080/activiti-modeler/modeler/service/editor?id=2050
直接設計保存到數據庫.
哦忘了. 前提你要修改數據庫連接.哈哈
OK 了. 至此 activiti-modeler 嵌入式部署. 和獨立式部署 都完成了.
建議:
使用獨立部署方式. 只是在你的web容器中多了一個activiti-modeler.war而已.
效果你可以使用iframe.因為在同域下. 其實跟嵌入式都一樣的.