开发环境的准备: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)发布流程对应的图片资源。