之前搞了两个星期的工作流,刚上手的时候,卧槽,这什么玩意儿,一脸蒙蔽,后来看了一些视频,又找了一些资料,百度了好久,算是知道了一些皮毛.把后台乱七八糟的东西整好,领导说,那你把网页流程设计器也弄进去吧.
WTF!弄啥嘞.
那就搞呗.又是百度了好久,然后网上也有很多教程,结果按网上的教程去弄,把项目搞得乱七八糟的,一会这里出个毛病,一会那里出个毛病,真是TM哔了狗了.
狗说,我招你惹你了.
才把东西弄好,现在是可以在线设计,然后保存下来,先写一些,免得忘了,后面项目整理之后再发个新的.
老罗说过,所有先吹一遍再看东西都是TMD耍流氓,作为一个有情怀的程序猿,少废话,看东西.
导包这里就不说了,但是我有个不成熟的猜测,在Activiti5.16之前是需要导入org.activiti.rest下的digram和editor目录下的包.
但是在5.16+的版本直接加入org.activiti.modeler.explorer目录下的包就行了.(这里是我个人的猜测,又不对的地方欢迎各位大佬的指正,谢谢各位大佬了)
页面设计器的一些文件也要加到webapp下,这里不再赘述.
首先是web.xml
<!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --> <url-pattern>/</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/Activity_Demo/service/*</url-pattern> </servlet-mapping>
这里要注意的是/Activity_Demo/service/*
Activity_Demo是我的项目名,后面的service是固定的,这里需要说明一下,这个路径和editor-app下的app-cfg.js路径相同
如图所示:
var ACTIVITI = ACTIVITI || {}; ACTIVITI.CONFIG = { 'contextRoot' : '/Activity_Demo/service', };
这地方弄得我死去活来的,改着改着要么页面不显示模块,要么保存时报空指针(到现在我也没弄清楚里面具体的什么情况,请原谅我才疏学浅).
网上说modeler.html及相关的样式也需要修改,这个一找一大堆,不说了.
然后依赖:
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>${activiti.version}</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>${activiti.version}</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-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-diagram-rest</artifactId> <version>${activiti.version}</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-explorer</artifactId> <version>5.16</version> <exclusions> <exclusion> <artifactId>vaadin</artifactId> <groupId>com.vaadin</groupId> </exclusion> <exclusion> <artifactId>dcharts-widget</artifactId> <groupId>org.vaadin.addons</groupId> </exclusion> <exclusion> <artifactId>activiti-simple-workflow</artifactId> <groupId>org.activiti</groupId> </exclusion> </exclusions> </dependency>
这地方注意一下版本号:
<spring.version>4.1.5.RELEASE</spring.version> <activiti.version>5.22.0</activiti.version>
主版本号是5.22,explorer的版本号是5.16的,坦率的说,我不知道有没有什影响,但是目前来说还没有出现什么问题,等到后面有问题再继续改.
spring-mvc配置:
<!-- 自动扫描且只扫描@Controller --> <context:component-scan base-package="org.activiti.rest.editor,org.activiti.rest.diagram"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 集成REST服务需要的bean --> <bean class="org.activiti.rest.service.api.RestResponseFactory" id="restResponseFactory"></bean> <bean class="org.activiti.rest.common.application.DefaultContentTypeResolver" id="contentTypeResolver"></bean> <!--<!– 配置多个 扫描不同的包 controller –>--> <!--<context:component-scan base-package="com.org.activiti.rest.diagram"/>--> <!--<context:component-scan base-package="com.org.activiti.rest.editor"/>-->
注释部分是我之前自己Copy过来的类,但是加了新的扫描之后,启动时Spring会报错,然后在网上看了一些demo感觉Copy出来的那些类貌似并没有用到,所以我猜测在不同版本中整合可能会有差异,后期我自己尝试去验证一下.
<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" />
这个比较重要,在rest.editor.model文件夹下的两个类都有注入这个
@Autowired private ObjectMapper objectMapper;
service有四个类直接复制粘贴过来就行了
具体路径忘接了,大家可以直接用名称搜一下就找到了,也可以去看一下咖啡兔大大的demo,那里面也能找到
https://github.com/henryyan/kft-activiti-demo
git直接拷过来找一下吧,demo里有一些东西还是可以参考的,具体的环境,配置之类的东西还是自己搭起来慢慢琢磨比较好.
OK,先写那么多,等会去跑一下,看看还有没有其他的问题,到时候回来再补充补充.
自己慢慢琢磨感觉很慢,可能是自己很笨吧,也请各位大大指点一二,谢谢.