前提,我的工程是spring+spring mvc的, 已经配置好了activiti的各种service什么的。
整合过程参考了此文: http://www.kafeitu.me/activiti/2015/12/27/integrate-new-activiti-modeler-and-rest.html
但配置文件写法和它不太一样,故费了好大劲。
(1)原activiti-rese的war包里,WEB-INF\classes下有个db.properties, 里面的配置就是为了创建dataSource用的,我的工程里已经有了dataSource,故无视这个文件即可。
(2)WEB-INF\classes下有个engine.properties,内容如下 ----------- # demo data properties create.demo.users=true create.demo.definitions=true create.demo.models=true
# engine properties engine.schema.update=true engine.activate.jobexecutor=false engine.asyncexecutor.enabled=true engine.asyncexecutor.activate=true engine.history.level=full
# rest properties
# Enable/disable Java serializable objects to be passed as variables in the REST API. rest.variables.allow.serializable=true ----------------------- 第一段demo相关的,是否自动创建demo数据的,无视即可 第二段是processEngine设置参数的,我也无视了。
(3)原war包用了全注解。 --------------------------------------- (1)POM增加jar包依赖
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-rest</artifactId> <version>5.19.0.2</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-common-rest</artifactId> <version>5.19.0.2</version> </dependency>
(2)spring的applicationContext.xml中增加配置,扫描org.activiti.rest包以下的service类。
<!-- 扫描组件 --> <context:component-scan base-package="com.xxx.yyyy,org.activiti.rest"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>
(3)增加spring-mvc-rest.xml,和咖啡兔的文章一样。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<!-- 自动扫描且只扫描@Controller --> <context:component-scan base-package="org.activiti.rest"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>
<mvc:annotation-driven /> </beans>
(4)配置Servlet映射,和咖啡兔的文章一样
<servlet> <servlet-name>RestServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc-rest.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>RestServlet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping>
(5)最重要的一点,在applicationContext.xml里除了7大接口,还要增加bean声明
<bean id="restResponseFactory" class="org.activiti.rest.service.api.RestResponseFactory"/> <bean id="resolver" class="org.activiti.rest.common.application.DefaultContentTypeResolver"/>
没加的时候,一堆错,反编译看了rest包的类,才知道要定义这两个东西。
(6)我用的shiro,所以在shiro配置文件里加 /rest/** = anon 允许匿名访问。
(7)咖啡兔文章里的:Rest安全认证组件,我没加,也没事。 不过现在访问rest接口不要base认证,好奇怪。 我再研究研究~~
|