Spring MVC整合Activiti 5.22及网页设计器

之前搞了两个星期的工作流,刚上手的时候,卧槽,这什么玩意儿,一脸蒙蔽,后来看了一些视频,又找了一些资料,百度了好久,算是知道了一些皮毛.把后台乱七八糟的东西整好,领导说,那你把网页流程设计器也弄进去吧.

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>

<!--&lt;!&ndash; 配置多个 扫描不同的包 controller &ndash;&gt;-->
<!--<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,先写那么多,等会去跑一下,看看还有没有其他的问题,到时候回来再补充补充.

自己慢慢琢磨感觉很慢,可能是自己很笨吧,也请各位大大指点一二,谢谢.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值