Commit 08c32267 authored by Sun's avatar Sun
Browse files

no commit message

parent e9629e7a
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.act.service.ext;
import java.util.List;
import java.util.Map;
import org.activiti.engine.identity.Group;
import org.activiti.engine.identity.GroupQuery;
import org.activiti.engine.impl.GroupQueryImpl;
import org.activiti.engine.impl.Page;
import org.activiti.engine.impl.persistence.entity.GroupEntity;
import org.activiti.engine.impl.persistence.entity.GroupEntityManager;
import org.springframework.stereotype.Service;
import com.google.common.collect.Lists;
import com.jeespring.common.utils.SpringContextHolder;
import com.jeespring.modules.act.utils.ActUtils;
import com.jeespring.modules.sys.entity.Role;
import com.jeespring.modules.sys.entity.User;
import com.jeespring.modules.sys.service.SystemService;
/**
* Activiti Group Entity Service
* @author JeeSpring
* @version 2013-12-05
*/
@Service
public class ActGroupEntityService extends GroupEntityManager {
private SystemService systemService;
public SystemService getSystemService() {
if (systemService == null){
systemService = SpringContextHolder.getBean(SystemService.class);
}
return systemService;
}
@Override
public Group createNewGroup(String groupId) {
return new GroupEntity(groupId);
}
@Override
public void insertGroup(Group group) {
// getDbSqlSession().insert((PersistentObject) group);
throw new RuntimeException("not implement method.");
}
public void updateGroup(GroupEntity updatedGroup) {
// CommandContext commandContext = Context.getCommandContext();
// DbSqlSession dbSqlSession = commandContext.getDbSqlSession();
// dbSqlSession.update(updatedGroup);
throw new RuntimeException("not implement method.");
}
@Override
public void deleteGroup(String groupId) {
// GroupEntity group = getDbSqlSession().selectById(GroupEntity.class, groupId);
// getDbSqlSession().delete("deleteMembershipsByGroupId", groupId);
// getDbSqlSession().delete(group);
throw new RuntimeException("not implement method.");
}
@Override
public GroupQuery createNewGroupQuery() {
// return new GroupQueryImpl(Context.getProcessEngineConfiguration().getCommandExecutorTxRequired());
throw new RuntimeException("not implement method.");
}
// @SuppressWarnings("unchecked")
@Override
public List<Group> findGroupByQueryCriteria(GroupQueryImpl query, Page page) {
// return getDbSqlSession().selectList("selectGroupByQueryCriteria", query, page);
throw new RuntimeException("not implement method.");
}
@Override
public long findGroupCountByQueryCriteria(GroupQueryImpl query) {
// return (Long) getDbSqlSession().selectOne("selectGroupCountByQueryCriteria", query);
throw new RuntimeException("not implement method.");
}
@Override
public List<Group> findGroupsByUser(String userId) {
// return getDbSqlSession().selectList("selectGroupsByUserId", userId);
List<Group> list = Lists.newArrayList();
User user = getSystemService().getUserByLoginName(userId);
if (user != null && user.getRoleList() != null){
for (Role role : user.getRoleList()){
list.add(ActUtils.toActivitiGroup(role));
}
}
return list;
}
@Override
public List<Group> findGroupsByNativeQuery(Map<String, Object> parameterMap, int firstResult, int maxResults) {
// return getDbSqlSession().selectListWithRawParameter("selectGroupByNativeQuery", parameterMap, firstResult, maxResults);
throw new RuntimeException("not implement method.");
}
@Override
public long findGroupCountByNativeQuery(Map<String, Object> parameterMap) {
// return (Long) getDbSqlSession().selectOne("selectGroupCountByNativeQuery", parameterMap);
throw new RuntimeException("not implement method.");
}
}
\ No newline at end of file
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.act.service.ext;
import org.activiti.engine.impl.interceptor.Session;
import org.activiti.engine.impl.interceptor.SessionFactory;
import org.activiti.engine.impl.persistence.entity.GroupIdentityManager;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Activiti Group Entity Factory
* @author JeeSpring
* @version 2013-11-03
*/
public class ActGroupEntityServiceFactory implements SessionFactory {
@Autowired
private ActGroupEntityService actGroupEntityService;
@Override
public Class<?> getSessionType() {
// 返回原始的GroupIdentityManager类型
return GroupIdentityManager.class;
}
@Override
public Session openSession() {
// 返回自定义的GroupEntityManager实例
return actGroupEntityService;
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.act.service.ext;
import java.util.List;
import java.util.Map;
import org.activiti.engine.identity.Group;
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.stereotype.Service;
import com.google.common.collect.Lists;
import com.jeespring.common.utils.SpringContextHolder;
import com.jeespring.modules.act.utils.ActUtils;
import com.jeespring.modules.sys.entity.Role;
import com.jeespring.modules.sys.service.SystemService;
/**
* Activiti User Entity Service
* @author JeeSpring
* @version 2013-11-03
*/
@Service
public class ActUserEntityService extends UserEntityManager {
private SystemService systemService;
public SystemService getSystemService() {
if (systemService == null){
systemService = SpringContextHolder.getBean(SystemService.class);
}
return systemService;
}
@Override
public User createNewUser(String userId) {
return new UserEntity(userId);
}
@Override
public void insertUser(User user) {
// getDbSqlSession().insert((PersistentObject) user);
throw new RuntimeException("not implement method.");
}
public void updateUser(UserEntity updatedUser) {
// CommandContext commandContext = Context.getCommandContext();
// DbSqlSession dbSqlSession = commandContext.getDbSqlSession();
// dbSqlSession.update(updatedUser);
throw new RuntimeException("not implement method.");
}
@Override
public UserEntity findUserById(String userId) {
// return (UserEntity) getDbSqlSession().selectOne("selectUserById", userId);
return ActUtils.toActivitiUser(getSystemService().getUserByLoginName(userId));
}
@Override
public void deleteUser(String userId) {
// UserEntity user = findUserById(userId);
// if (user != null) {
// List<IdentityInfoEntity> identityInfos = getDbSqlSession().selectList("selectIdentityInfoByUserId", userId);
// for (IdentityInfoEntity identityInfo : identityInfos) {
// getIdentityInfoManager().deleteIdentityInfo(identityInfo);
// }
// getDbSqlSession().delete("deleteMembershipsByUserId", userId);
// user.delete();
// }
User user = findUserById(userId);
if (user != null) {
getSystemService().deleteUser(new com.jeespring.modules.sys.entity.User(user.getId()));
}
}
@Override
public List<User> findUserByQueryCriteria(UserQueryImpl query, Page page) {
// return getDbSqlSession().selectList("selectUserByQueryCriteria", query, page);
throw new RuntimeException("not implement method.");
}
@Override
public long findUserCountByQueryCriteria(UserQueryImpl query) {
// return (Long) getDbSqlSession().selectOne("selectUserCountByQueryCriteria", query);
throw new RuntimeException("not implement method.");
}
@Override
public List<Group> findGroupsByUser(String userId) {
// return getDbSqlSession().selectList("selectGroupsByUserId", userId);
List<Group> list = Lists.newArrayList();
for (Role role : getSystemService().findRole(new Role(new com.jeespring.modules.sys.entity.User(null, userId)))){
list.add(ActUtils.toActivitiGroup(role));
}
return list;
}
@Override
public UserQuery createNewUserQuery() {
// return new UserQueryImpl(Context.getProcessEngineConfiguration().getCommandExecutorTxRequired());
throw new RuntimeException("not implement method.");
}
@Override
public IdentityInfoEntity findUserInfoByUserIdAndKey(String userId, String key) {
// Map<String, String> parameters = new HashMap<String, String>();
// parameters.put("userId", userId);
// parameters.put("key", key);
// return (IdentityInfoEntity) getDbSqlSession().selectOne("selectIdentityInfoByUserIdAndKey", parameters);
throw new RuntimeException("not implement method.");
}
@Override
public List<String> findUserInfoKeysByUserIdAndType(String userId, String type) {
// Map<String, String> parameters = new HashMap<String, String>();
// parameters.put("userId", userId);
// parameters.put("type", type);
// return (List) getDbSqlSession().getSqlSession().selectList("selectIdentityInfoKeysByUserIdAndType", parameters);
throw new RuntimeException("not implement method.");
}
@Override
public Boolean checkPassword(String userId, String password) {
// User user = findUserById(userId);
// if ((user != null) && (password != null) && (password.equals(user.getPassword()))) {
// return true;
// }
// return false;
throw new RuntimeException("not implement method.");
}
@Override
public List<User> findPotentialStarterUsers(String proceDefId) {
// Map<String, String> parameters = new HashMap<String, String>();
// parameters.put("procDefId", proceDefId);
// return (List<User>) getDbSqlSession().selectOne("selectUserByQueryCriteria", parameters);
throw new RuntimeException("not implement method.");
}
@Override
public List<User> findUsersByNativeQuery(Map<String, Object> parameterMap, int firstResult, int maxResults) {
// return getDbSqlSession().selectListWithRawParameter("selectUserByNativeQuery", parameterMap, firstResult, maxResults);
throw new RuntimeException("not implement method.");
}
@Override
public long findUserCountByNativeQuery(Map<String, Object> parameterMap) {
// return (Long) getDbSqlSession().selectOne("selectUserCountByNativeQuery", parameterMap);
throw new RuntimeException("not implement method.");
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.act.service.ext;
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;
/**
* Activiti User Entity Service Factory
* @author JeeSpring
* @version 2013-11-03
*/
public class ActUserEntityServiceFactory implements SessionFactory {
@Autowired
private ActUserEntityService actUserEntityService;
@Override
public Class<?> getSessionType() {
// 返回原始的UserIdentityManager类型
return UserIdentityManager.class;
}
@Override
public Session openSession() {
// 返回自定义的UserEntityManager实例
return actUserEntityService;
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.act.utils;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.activiti.engine.impl.persistence.entity.GroupEntity;
import org.activiti.engine.impl.persistence.entity.UserEntity;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.jeespring.common.annotation.FieldName;
import com.jeespring.common.config.Global;
import com.jeespring.common.utils.Encodes;
import com.jeespring.common.utils.ObjectUtils;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.modules.act.entity.Act;
import com.jeespring.modules.sys.entity.Role;
import com.jeespring.modules.sys.entity.User;
/**
* 流程工具
* @author JeeSpring
* @version 2013-11-03
*/
public class ActUtils {
// private static Logger logger = LoggerFactory.getLogger(ActUtils.class);
/**
* 定义流程定义KEY,必须以“PD_”开头
* 组成结构:string[]{"流程标识","业务主表表名"}
*/
public static final String[] PD_LEAVE = new String[]{"leave", "oa_leave"};
public static final String[] PD_TEST_AUDIT = new String[]{"test_audit", "oa_test_audit"};
// /**
// * 流程定义Map(自动初始化)
// */
// private static Map<String, String> procDefMap = new HashMap<String, String>() {
// private static final long serialVersionUID = 1L;
// {
// for (Field field : ActUtils.class.getFields()){
// if(StringUtils.startsWith(field.getName(), "PD_")){
// try{
// String[] ss = (String[])field.get(null);
// put(ss[0], ss[1]);
// }catch (Exception e) {
// logger.debug("load pd error: {}", field.getName());
// }
// }
// }
// }
// };
//
// /**
// * 获取流程执行(办理)URL
// * @param procId
// * @return
// */
// public static String getProcExeUrl(String procId) {
// String url = procDefMap.get(StringUtils.split(procId, ":")[0]);
// if (StringUtils.isBlank(url)){
// return "404";
// }
// return url;
// }
@SuppressWarnings({ "unused" })
public static Map<String, Object> getMobileEntity(Object entity,String spiltType){
if(spiltType==null){
spiltType="@";
}
Map<String, Object> map = Maps.newHashMap();
List<String> field = Lists.newArrayList();
List<String> value = Lists.newArrayList();
List<String> chinesName =Lists.newArrayList();
try{
for (Method m : entity.getClass().getMethods()){
if (m.getAnnotation(JsonIgnore.class) == null && m.getAnnotation(JsonBackReference.class) == null && m.getName().startsWith("get")){
if (m.isAnnotationPresent(FieldName.class)) {
Annotation p = m.getAnnotation(FieldName.class);
FieldName fieldName=(FieldName) p;
chinesName.add(fieldName.value());
}else{
chinesName.add("");
}
if ("getAct".equals(m.getName())){
Object act = m.invoke(entity, new Object[]{});
Method actMet = act.getClass().getMethod("getTaskId");
map.put("taskId", ObjectUtils.toString(m.invoke(act, new Object[]{}), ""));
}else{
field.add(StringUtils.uncapitalize(m.getName().substring(3)));
value.add(ObjectUtils.toString(m.invoke(entity, new Object[]{}), ""));
}
}
}
}catch (Exception e) {
e.printStackTrace();
}
map.put("beanTitles", StringUtils.join(field, spiltType));
map.put("beanInfos", StringUtils.join(value, spiltType));
map.put("chineseNames", StringUtils.join(chinesName, spiltType));
return map;
}
/**
* 获取流程表单URL
* @param formKey
* @param act 表单传递参数
* @return
*/
public static String getFormUrl(String formKey, Act act){
StringBuilder formUrl = new StringBuilder();
String formServerUrl = Global.getConfig("activiti.form.server.url");
if (StringUtils.isBlank(formServerUrl)){
formUrl.append(Global.getAdminPath());
}else{
formUrl.append(formServerUrl);
}
formUrl.append(formKey).append(formUrl.indexOf("?") == -1 ? "?" : "&");
formUrl.append("act.taskId=").append(act.getTaskId() != null ? act.getTaskId() : "");
formUrl.append("&act.taskName=").append(act.getTaskName() != null ? Encodes.urlEncode(act.getTaskName()) : "");
formUrl.append("&act.taskDefKey=").append(act.getTaskDefKey() != null ? act.getTaskDefKey() : "");
formUrl.append("&act.procInsId=").append(act.getProcInsId() != null ? act.getProcInsId() : "");
formUrl.append("&act.procDefId=").append(act.getProcDefId() != null ? act.getProcDefId() : "");
formUrl.append("&act.status=").append(act.getStatus() != null ? act.getStatus() : "");
formUrl.append("&id=").append(act.getBusinessId() != null ? act.getBusinessId() : "");
return formUrl.toString();
}
/**
* 转换流程节点类型为中文说明
* @param type 英文名称
* @return 翻译后的中文名称
*/
public static String parseToZhType(String type) {
Map<String, String> types = new HashMap<String, String>();
types.put("userTask", "用户任务");
types.put("serviceTask", "系统任务");
types.put("startEvent", "开始节点");
types.put("endEvent", "结束节点");
types.put("exclusiveGateway", "条件判断节点(系统自动根据条件处理)");
types.put("inclusiveGateway", "并行处理任务");
types.put("callActivity", "子流程");
return types.get(type) == null ? type : types.get(type);
}
public static UserEntity toActivitiUser(User user){
if (user == null){
return null;
}
UserEntity userEntity = new UserEntity();
userEntity.setId(user.getLoginName());
userEntity.setFirstName(user.getName());
userEntity.setLastName(StringUtils.EMPTY);
userEntity.setPassword(user.getPassword());
userEntity.setEmail(user.getEmail());
userEntity.setRevision(1);
return userEntity;
}
public static GroupEntity toActivitiGroup(Role role){
if (role == null){
return null;
}
GroupEntity groupEntity = new GroupEntity();
groupEntity.setId(role.getEnname());
groupEntity.setName(role.getName());
groupEntity.setType(role.getRoleType());
groupEntity.setRevision(1);
return groupEntity;
}
/*public static void main(String[] args) {
User user = new User();
System.out.println(getMobileEntity(user, "@"));
}*/
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.act.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 日期转换类
* @author JeeSpring
* @version 2013-11-03
*/
public class DateConverter implements Converter {
private static final Logger logger = LoggerFactory.getLogger(DateConverter.class);
private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
private static final String DATETIME_PATTERN_NO_SECOND = "yyyy-MM-dd HH:mm";
private static final String DATE_PATTERN = "yyyy-MM-dd";
private static final String MONTH_PATTERN = "yyyy-MM";
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public Object convert(Class type, Object value) {
Object result = null;
if (type == Date.class) {
try {
result = doConvertToDate(value);
} catch (ParseException e) {
e.printStackTrace();
}
} else if (type == String.class) {
result = doConvertToString(value);
}
return result;
}
/**
* Convert String to Date
*
* @param value
* @return
* @throws ParseException
*/
private Date doConvertToDate(Object value) throws ParseException {
Date result = null;
if (value instanceof String) {
result = DateUtils.parseDate((String) value, new String[] { DATE_PATTERN, DATETIME_PATTERN,
DATETIME_PATTERN_NO_SECOND, MONTH_PATTERN });
// all patterns failed, try a milliseconds constructor
if (result == null && StringUtils.isNotEmpty((String) value)) {
try {
result = new Date(new Long((String) value).longValue());
} catch (Exception e) {
logger.error("Converting from milliseconds to Date fails!");
e.printStackTrace();
}
}
} else if (value instanceof Object[]) {
// let's try to convert the first element only
Object[] array = (Object[]) value;
if (array.length >= 1) {
value = array[0];
result = doConvertToDate(value);
}
} else if (Date.class.isAssignableFrom(value.getClass())) {
result = (Date) value;
}
return result;
}
/**
* Convert Date to String
*
* @param value
* @return
*/
private String doConvertToString(Object value) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATETIME_PATTERN);
String result = null;
if (value instanceof Date) {
result = simpleDateFormat.format(value);
}
return result;
}
}
\ No newline at end of file
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.act.utils;
import java.util.List;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.lang3.ObjectUtils;
import com.jeespring.common.utils.CacheUtils;
import com.jeespring.common.utils.SpringContextHolder;
/**
* 流程定义缓存
* @author JeeSpring
* @version 2013-12-05
*/
public class ProcessDefCache {
private static final String ACT_CACHE = "actCache";
private static final String ACT_CACHE_PD_ID_ = "pd_id_";
/**
* 获得流程定义对象
* @param procDefId
* @return
*/
public static ProcessDefinition get(String procDefId) {
ProcessDefinition pd = (ProcessDefinition)CacheUtils.get(ACT_CACHE, ACT_CACHE_PD_ID_ + procDefId);
if (pd == null) {
RepositoryService repositoryService = SpringContextHolder.getBean(RepositoryService.class);
// pd = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(pd);
pd = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId).singleResult();
if (pd != null) {
CacheUtils.put(ACT_CACHE, ACT_CACHE_PD_ID_ + procDefId, pd);
}
}
return pd;
}
/**
* 获得流程定义的所有活动节点
* @param procDefId
* @return
*/
public static List<ActivityImpl> getActivitys(String procDefId) {
ProcessDefinition pd = get(procDefId);
if (pd != null) {
return ((ProcessDefinitionEntity) pd).getActivities();
}
return null;
}
/**
* 获得流程定义活动节点
* @param procDefId
* @param activityId
* @return
*/
public static ActivityImpl getActivity(String procDefId, String activityId) {
ProcessDefinition pd = get(procDefId);
if (pd != null) {
List<ActivityImpl> list = getActivitys(procDefId);
if (list != null){
for (ActivityImpl activityImpl : list) {
if (activityId.equals(activityImpl.getId())){
return activityImpl;
}
}
}
}
return null;
}
/**
* 获取流程定义活动节点名称
* @param procDefId
* @param activityId
* @return
*/
@SuppressWarnings("deprecation")
public static String getActivityName(String procDefId, String activityId) {
ActivityImpl activity = getActivity(procDefId, activityId);
if (activity != null) {
return ObjectUtils.toString(activity.getProperty("name"));
}
return null;
}
}
package com.jeespring.modules.act.utils;
import java.util.LinkedHashSet;
import java.util.Set;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.delegate.Expression;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.el.FixedValue;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.activiti.engine.impl.task.TaskDefinition;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.log4j.Logger;
/**
* 流程定义相关操作的封装
* @author bluejoe2008@gmail.com
*/
public abstract class ProcessDefUtils {
public static ActivityImpl getActivity(ProcessEngine processEngine, String processDefId, String activityId) {
ProcessDefinitionEntity pde = getProcessDefinition(processEngine, processDefId);
return (ActivityImpl) pde.findActivity(activityId);
}
public static ProcessDefinitionEntity getProcessDefinition(ProcessEngine processEngine, String processDefId) {
return (ProcessDefinitionEntity) ((RepositoryServiceImpl) processEngine.getRepositoryService()).getDeployedProcessDefinition(processDefId);
}
public static void grantPermission(ActivityImpl activity, String assigneeExpression, String candidateGroupIdExpressions,
String candidateUserIdExpressions) throws Exception {
TaskDefinition taskDefinition = ((UserTaskActivityBehavior) activity.getActivityBehavior()).getTaskDefinition();
taskDefinition.setAssigneeExpression(assigneeExpression == null ? null : new FixedValue(assigneeExpression));
FieldUtils.writeField(taskDefinition, "candidateUserIdExpressions", ExpressionUtils.stringToExpressionSet(candidateUserIdExpressions), true);
FieldUtils
.writeField(taskDefinition, "candidateGroupIdExpressions", ExpressionUtils.stringToExpressionSet(candidateGroupIdExpressions), true);
Logger.getLogger(ProcessDefUtils.class).info(
String.format("granting previledges for [%s, %s, %s] on [%s, %s]", assigneeExpression, candidateGroupIdExpressions,
candidateUserIdExpressions, activity.getProcessDefinition().getKey(), activity.getProperty("name")));
}
/**
* 实现常见类型的expression的包装和转换
*
* @author bluejoe2008@gmail.com
*
*/
public static class ExpressionUtils {
public static Expression stringToExpression(ProcessEngineConfigurationImpl conf, String expr) {
return conf.getExpressionManager().createExpression(expr);
}
public static Expression stringToExpression(String expr) {
return new FixedValue(expr);
}
public static Set<Expression> stringToExpressionSet(String exprs) {
Set<Expression> set = new LinkedHashSet<Expression>();
for (String expr : exprs.split(";")) {
set.add(stringToExpression(expr));
}
return set;
}
}
}
\ No newline at end of file
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.act.utils;
import java.util.Date;
/**
* 属性数据类型
* @author JeeSpring
* @version 2013-11-03
*/
public enum PropertyType {
S(String.class),
I(Integer.class),
L(Long.class),
F(Float.class),
N(Double.class),
D(Date.class),
SD(java.sql.Date.class),
B(Boolean.class);
private Class<?> clazz;
private PropertyType(Class<?> clazz) {
this.clazz = clazz;
}
public Class<?> getValue() {
return clazz;
}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment