開發環境的準備:java
eclipse: kaplermysql
plugin: http://activiti.org/designer/update/sql
tapestry-activiti-0.0.1數據庫
tapestry-core: 5.4-beta-6安全
database:mysql5.5.29
框架
activiti : 5.15.1eclipse
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.15.1</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.2.1</version> </dependency> |
註解:由於tapestry-ioc-5.4和tapestry-activiti-0.0.1不兼容,因此參照重寫本身的模塊。ide
環境移置成功,直接copy源碼,而後進行修正。 建立的數據庫用activiti的下面腳本:ui
activiti.mysql.create.identity.sqlspa
activiti.mysql55.create.engine.sql
activiti.mysql55.create.history.sql
---------------------------------------------------------------------
使用注意點:
1)各個Service都是線程安全的,在本身框架中集成的時候能夠作成單例模式
在tapestry中,能夠經過buildService的方式,最終經過依賴注入來管理各個Service。
須要解決的問題:
1)和業務表的關聯及業務數據的保存
2)事務的控制
3)參數的傳遞
參數在傳遞過程當中,必須是能夠系列化的(Serializable),不然activiti不給保存。(痛苦過)
參數在各個task之間進行傳遞,task和processInstance之間的共享問題,範圍問題,待查。
process scope:
做用:
弊端:
task scope :
做用:
弊端:
4)流程圖當前狀態的顯示
tapestry中顯示成功,
待解決的問題點。
圖片中的標題內容部分丟失。
若是在發佈的時候,沒有發佈原始的流程圖片,engine自動支持自動生成圖片的功能?,這個會丟失內容。
若是發佈的時候也發佈圖片(deploy),一切顯示正常。(不知道Activiti如何進行管理圖片的)
自動生成圖片功能,須要配置:
ProcessEngineConfiguration.setCreateDiagramOnDeploy(true); 本覺得true的話,流程圖顯示出來後,能突出顯示當前狀態爲Active的task(變紅,得到焦點),但沒有,需調查。
突出顯示流程圖中當前task。
@Inject private RepositoryService repositoryService; public StreamResponse onChart() { return new StreamResponse() { public String getContentType() { return "image/png"; } public InputStream getStream() throws IOException { try { ProcessDefinition processDefinition = repositoryService .createProcessDefinitionQuery() .processDefinitionKey("vacationRequest").singleResult(); String diagramResourceName = processDefinition.getDiagramResourceName(); return repositoryService.getResourceAsStream( processDefinition.getDeploymentId(), diagramResourceName); } catch (Exception ex) { throw new RuntimeException("Cannot read image file.", ex); } } public void prepareResponse(Response response) { } }; } #tapestry的template文件中 <div> <img src="${chart}"/> </div>
----------------------------------------------------------------------
RepositoryService的功能
1)發佈ProcessDefinition到Activiti中,實際是存儲到數據庫中,同一個定義,有多個版本。
2)刪除已經發布的ProcessDefinition。
3)發佈流程對應的圖片資源。