Activiti整合到spring中配置
1、匯入activiti相應的jar包
使用用maven,在pox.xml中配置
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.21.0</version>
</dependency>
<dependency>
<groupId >org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>5.21.0</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-rest</artifactId >
<version>5.21.0</version>
</dependency>
在spring.xml中配置
<!-- Activiti配置 Start -->
<!-- 單例json物件 -->
<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper"/>
<!-- 自定義使用者模組 -->
<bean id="customUserEntityManager" class="cn.com.agree.aweb.springmvc.activiti.CustomUserEntityManager">
</bean>
<bean id="customGroupEntityManager" class="cn.com.agree.aweb.springmvc.activiti.CustomGroupEntityManager">
</bean>
<!-- Activiti引擎配置 -->
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="processEngineName" value="spring"></property>
<property name="dataSource" ref="jndiDataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" />
<!-- web服務重啟時自動部署流程檔案,自動部署引擎資料庫中不存在或修改過的流程定義 -->
<!-- <property name="deploymentResources">
<list>
<value>bpmn/*.bpmn</value>
</list>
</property> -->
<!-- 自定義使用者模組 -->
<property name="customSessionFactories">
<list>
<bean class="cn.com.agree.aweb.springmvc.activiti.CustomUserEntityManagerFactory"></bean>
<bean class="cn.com.agree.aweb.springmvc.activiti.CustomGroupEntityManagerFactory"></bean>
</list>
</property>
</bean>
<!-- Activiti引擎工廠 -->
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<!-- Activiti的7個Service -->
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
<bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
<bean id="formService" factory-bean="processEngine" factory-method="getFormService" />
<bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" />
<bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
<bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
<!-- 整合REST服務需要的bean -->
<bean id="restResponseFactory" class="org.activiti.rest.service.api.RestResponseFactory" />
<bean id="contentTypeResolver" class="org.activiti.rest.common.application.DefaultContentTypeResolver" />
<!-- Activiti配置 End -->
使用7個service,實現工作流的全部操作。
資料來源使用專案已配置的資料來源。
自定義使用者模組(使用專案中的使用者管理模組,放棄使用activiti的使用者表),重寫相應的類,對應配置中customSessionFactories的屬性值,示例使用者自定義如下:
package cn.com.agree.aweb.springmvc.activiti;
import org.activiti.engine.impl.interceptor.Session;
import org.activiti.engine.impl.interceptor.SessionFactory;
import org.activiti.engine.impl.persistence.entity.UserIdentityManager;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @Description: 自定義使用者
* @author chenrui [email protected]
* @date 2016年8月2日
*
*/
public class CustomUserEntityManagerFactory implements SessionFactory{
@Autowired
private CustomUserEntityManager customUserEntityManager;
@Override
public Class<?> getSessionType() {
return UserIdentityManager.class;
}
@Override
public Session openSession() {
return customUserEntityManager;
}
}
該類繼承UserEntityManager,重寫對應方法
package cn.com.agree.aweb.springmvc.activiti;
import java.util.List;
import java.util.Map;
import org.activiti.engine.identity.Group;
import org.activiti.engine.identity.Picture;
import org.activiti.engine.identity.User;
import org.activiti.engine.identity.UserQuery;
import org.activiti.engine.impl.Page;
import org.activiti.engine.impl.UserQueryImpl;
import org.activiti.engine.impl.persistence.entity.IdentityInfoEntity;
import org.activiti.engine.impl.persistence.entity.UserEntity;
import org.activiti.engine.impl.persistence.entity.UserEntityManager;
import org.springframework.beans.factory.annotation.Autowired;
import cn.com.agree.aweb.exception.DBSupportException;
import cn.com.agree.aweb.hibernate.IDbSupport;
import cn.com.agree.aweb.hibernate.entity.UserVO;
/**
* @Description: 自定義使用者管理
* @author chenrui [email protected]
* @date 2016年8月2日
*
*/
public class CustomUserEntityManager extends UserEntityManager{
@Autowired
private IDbSupport dbSupport;
@Override
public User findUserById(String userId) {
User userEntity = new UserEntity();
try {
UserVO userVO = queryUserByUsername(userId);
userEntity.setId(userVO.getUserId());
userEntity.setFirstName(userVO.getNickname());
userEntity.setLastName(userVO.getNickname());
userEntity.setPassword(userVO.getPassword());
userEntity.setEmail(userVO.getMailbox());
} catch (DBSupportException e) {
e.printStackTrace();
}
return userEntity;
}
@Override
public User createNewUser(String userId) {
// TODO Auto-generated method stub
User user = new UserEntity();
return user;
}
@Override
public void insertUser(User user) {
// TODO Auto-generated method stub
super.insertUser(user);
}
@Override
public void updateUser(User updatedUser) {
// TODO Auto-generated method stub
super.updateUser(updatedUser);
}
@Override
public void deleteUser(String userId) {
// TODO Auto-generated method stub
super.deleteUser(userId);
}
@Override
public List<User> findUserByQueryCriteria(UserQueryImpl query, Page page) {
// TODO Auto-generated method stub
return super.findUserByQueryCriteria(query, page);
}
@Override
public long findUserCountByQueryCriteria(UserQueryImpl query) {
// TODO Auto-generated method stub
return super.findUserCountByQueryCriteria(query);
}
@Override
public List<Group> findGroupsByUser(String userId) {
// TODO Auto-generated method stub
return super.findGroupsByUser(userId);
}
@Override
public UserQuery createNewUserQuery() {
// TODO Auto-generated method stub
return super.createNewUserQuery();
}
@Override
public IdentityInfoEntity findUserInfoByUserIdAndKey(String userId,
String key) {
// TODO Auto-generated method stub
return super.findUserInfoByUserIdAndKey(userId, key);
}
@Override
public List<String> findUserInfoKeysByUserIdAndType(String userId,
String type) {
// TODO Auto-generated method stub
return super.findUserInfoKeysByUserIdAndType(userId, type);
}
@Override
public Boolean checkPassword(String userId, String password) {
// TODO Auto-generated method stub
return super.checkPassword(userId, password);
}
@Override
public List<User> findPotentialStarterUsers(String proceDefId) {
// TODO Auto-generated method stub
return super.findPotentialStarterUsers(proceDefId);
}
@Override
public List<User> findUsersByNativeQuery(Map<String, Object> parameterMap,
int firstResult, int maxResults) {
// TODO Auto-generated method stub
return super.findUsersByNativeQuery(parameterMap, firstResult, maxResults);
}
@Override
public long findUserCountByNativeQuery(Map<String, Object> parameterMap) {
// TODO Auto-generated method stub
return super.findUserCountByNativeQuery(parameterMap);
}
@Override
public boolean isNewUser(User user) {
// TODO Auto-generated method stub
return super.isNewUser(user);
}
@Override
public Picture getUserPicture(String userId) {
// TODO Auto-generated method stub
return super.getUserPicture(userId);
}
@Override
public void setUserPicture(String userId, Picture picture) {
// TODO Auto-generated method stub
super.setUserPicture(userId, picture);
}
/**
* @param username
* @return
* @throws DBSupportException
*/
@SuppressWarnings("unchecked")
public UserVO queryUserByUsername(String username) throws DBSupportException {
List<UserVO> userList = (List<UserVO>) dbSupport.queryDataByClass(UserVO.class,
new String[] {"username"},
new String[] {username});
if (userList.size() == 1) {
return userList.get(0);
}
return null;
}
}
釋出REST API
在web.xml中配置
<!-- Rest介面 Start-->
<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/classes/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>
<!-- Rest介面 end -->
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>
相關推薦
Activiti整合到spring中配置
1、匯入activiti相應的jar包 使用用maven,在pox.xml中配置 <dependency> <groupId>org.activiti</groupId>
spring中配置監聽隊列的MQ
msl tin listen ann lazy ati app ssa clas 一、spring中配置監聽隊列的MQ相關信息註:${}是讀取propertites文件的常量,這裏忽略。綠色部分配置在接收和發送端都要配置。 <bean id="axx" class=
mybatis整合spring獲取配置文件信息出錯
localhost tis jdb 密碼 文件信息 connect 後來 顯示 dmi 描述:mybatis整合spring加載jdbc.properties文件,然後使用裏面配置的值來 配置數據源,後來發現用戶變成了admin… jdbc.properties的配置:
Spring中配置檔案application xml中各配置的含義
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Spring中配置Quartz的過程;Spring與Quartz的相容問題
1. 根據spring和Quratz的版本不同,觸發器的方法可能不同,有org.springframework.scheduling.quartz.SimpleTriggerFactoryBean和org.springframework.scheduling.quar
spring中配置profile
1、新建一個maven專案,匯入如下依賴 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <sprin
Java中如何獲取Spring中配置的bean
Spring中的ApplicationContexts可以被限制在不同的作用域。在web框架中,每個DispatcherServlet有它自己的WebApplicationContext,它包含了DispatcherServlet配置所需要的bean。DispatcherServlet 使用的預設BeanF
Spring中配置和讀取多個Properties檔案--轉
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> &
Spring中配置資料來源的幾種方式
無論使用什麼形式的Spring DAO支援類,都需要配置資料來源的引用。Spring提供了多個選項,用於在Spring程式裡配置資料庫,其中包括: 1,由JDBC驅動程式定義的資料來源。 2,由JNDI查詢的資料來源。 3,連線池的資料來源。 在Spring裡,我們可以像使用其他
Java中如何獲取spring中配置的properties屬性檔案內容
1、通過spring配置properties檔案 <bean id="propertyConfigurer"class="com.tjsoft.base.util.CustomizedPropertyPlaceholderConfigurer"><pro
如何在spring中配置集合供多個Bean使用
一:Utility Scheme 1.使用基本的集合標籤定義集合時,不能將集合作為獨立的Bean定義,導致其他Bean無法引用該集合,所以無法在不同Bean之間 共享集合。 2.可以使用Utility Scheme裡的集合標籤定義獨立的集合Bean,需要的是在B
EhCache 介紹和在spring中配置
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehca
Spring中配置使用slf4j + log4j
https code control api 產生 eap ces jsp prop 本人也是查看別人博客獲得的方法,詳細講解請參照 https://www.cnblogs.com/yuxiaole/p/9297266.html 下面進入正題: 1.在pom.xml中註入相
Hibernate 事務處理和spring中配置事務
原文連結:http://blog.csdn.net/sd0902/article/details/8393700 1.非整合spring事務管理 事務是指由一個或者多個SQL語句組成的工作單元,這個單元中SQL語句只要有一個SQL語句執行失敗,就會撤銷整個工作單元
在Spring中配置aspectj模式
在事務,快取中,Spring通常提供了兩種模式:proxy和aspectj。 要成功的配置aspectj模式,前提是成功配置aspectj。 aspectJ有兩種植入方式:CTW(Compile Time Weaving)和LTW(Load Time Weaving),兩種
Spring中配置資料來源的4種形式
C3P0擁有比DBCP更豐富的配置屬性,通過這些屬性,可以對資料來源進行各種有效的控制: acquireIncrement:當連線池中的連線用完時,C3P0一次性建立新連線的數目; acquireRetryAttempts:定義在從資料庫獲取新連線失敗後重復嘗試獲取的次數,預設為30;
在spring中配置hibernate.hbm2ddl.auto=true自動建表
今天 在spring中配置了 hibernate 的hibernate.hbm2ddl.auto 屬性為update ,配置資訊如下: <property name="hibernateProperties"> <value> <!--
在spring中配置mongodb的使用者名稱和密碼
1、在spring的配置檔案中 <?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="ht
spring中配置hibernate事務管理,出錯時事物不回滾
今天進行了spring整合hibernate,進行事務管理。出現了事務不回滾。檢查了好多遍,業務邏輯和配置檔案都沒有出錯,但是事務依舊不回滾,很是鬱悶。在網上查了很多資料。轉載一位博主的文章,挺不錯。 http://blog.csdn.net/u011622226/arti
Spring中配置執行緒池ThreadPoolExecutor參考
<bean id="executorService" class="java.util.concurrent.ThreadPoolExecutor"> <constructor-