tapestry activiti開發筆記

開發環境的準備: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

  1. activiti.mysql.create.identity.sqlspa

  2. activiti.mysql55.create.engine.sql

  3. 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)發佈流程對應的圖片資源。

相關文章
相關標籤/搜索