//早先胡乱尝试的其他方法,可能对于以后深入学习Activiti有些用处。
//taskService.delegateTask(taskId, receiveUserId);
//taskService.addCandidateUser(taskId, receiveUserId);
//taskService.setOwner(taskId, receiveUserId);
//taskService.claim(taskId, receiveUserId);

//比较权威的参考资料
//https://community.alfresco.com/thread/217952-reassign-task-to-another-user
//https://community.alfresco.com/thread/231396-reassign-a-task
//https://community.alfresco.com/thread/221688-task-reassign
//https://stackoverflow.com/questions/38767052/activiti-assign-reassign-process
//https://www.activiti.org/userguide/index.html#_update_a_task
//https://www.activiti.org/userguide/index.html#bpmnUserTaskAssignment

//上述第一个网址,说得很清楚。遇到同样的问题,并用如下代码解决了。
//ndt
//2011-12-15 下午5:30
//Had same problem, using this code solved it
//task.setAssignee(user.getId());
//getTaskService().setAssignee(task.getId(), user.getId());

task.setAssignee(receiveUserId);
taskService.setAssignee(task.getId(), receiveUserId);

//TOOD 上面的代码不奏效,既然是调用的Activiti的标准API,传递的参数也没问题。
//两个参数,其中taskId这个肯定没问题。
//而receiveUserId是咱们系统pf_user表的Id,而不是act_id_user表里的Id。
//Activiti框架不了解我们自定义用户模块,它的API只能处理它的用户表里的Id。
//因此,虽然调用的API方法没问题,传递userId也是有效值,但这个有效值并不是Activiti框架期望的值(存在act_id_user表里的Id)

//集中可能的解决方案:
//1 把我们的用户模块整合到Activiti框架中相关的act_id_xxx表中;
//2不调用Activiti框架上述的两个API方法,我们想法搞一套。
//3 重新启动一个新工作流,估计用户不会买账。
//哪个方案都不简单,综合来说只有1是一套循规蹈矩的方案。
//按照通用解决方案,很多系统直接对接,都是做集成,要想不用Activiti框架的用户模块,
//要么自己遵循Activiti的用户模块的接口自己开发一套系统,要么大企业似的用LDAP(Active Directory){没有的IT基础的,不考虑了}。

Activiti reassign task to another user的更多相关文章

  1. activiti任务TASK

    一.概要 设计TASK的表主要是:ACT_RU_TASK,ACT_HI_TASKINST(见参考-activiti表): 任务主要有:人工任务(usertask),服务任务(servicetask)等 ...

  2. 流程开发Activiti 与SpringMVC整合实例

    流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...

  3. Activiti工作流学习(三)Activiti工作流与spring集成

    一.前言 前面Activiti工作流的学习,说明了Activiti的基本应用,在我们开发中可以根据实际的业务参考Activiti的API去更好的理解以及巩固.我们实际的开发中我们基本上都使用sprin ...

  4. activiti当前任务高亮(解决乱码问题)

    package com.xinwei; import java.io.File; import java.io.InputStream; import java.util.ArrayList; imp ...

  5. Liferay7 BPM门户开发之47: 集成Activiti待办已办任务清单和流程启动

    首先增加两个Portlet,分别用于待办处理.流程启动.待办是别人发起的流程,流到自己这里的流程:流程启动用于发起新的流程. 程序文件放置于 在ACtivit中待办概念分两种,1是指派给你的,专门的指 ...

  6. Activiti之 Exclusive Gateway

    一.Exclusive Gateway Exclusive Gateway(也称为XOR网关或更多技术基于数据的排他网关)经常用做决定流程的流转方向.当流程到达该网关的时候,所有的流出序列流到按照已定 ...

  7. activiti入门

    一.Activiti简介 Activiti 是一个针对商务人士. 开发人员和系统管理员的轻量级的工作流和业务流程管理 (BPM) 平台.它的核心是Java的高速和可靠的 BPMN 2 流程引擎.它是开 ...

  8. 创建Activiti项目

    1.创建项目 2.导入Activiti的jar包 项目上右击创建lib文件夹 将jar包复制进lib文件夹 3.导入数据库连接jar包 4.使用代码创建Activiti用来存放流程数据的23张表 pa ...

  9. activiti基础操作

    package activitiTest; import java.io.InputStream; import java.util.List; import java.util.zip.ZipInp ...

随机推荐

  1. python五十七课——正则表达式(边界字符)

    演示匹配锚字符(边界字符)^:从字符串头部开始匹配,在开启多行模式下(re.M),可以尝试匹配每一行的头部数据$:从字符串尾部开始匹配,在开启多行模式下(re.M),可以尝试匹配每一行的尾部数据A:从 ...

  2. 数据挖掘十大算法--K-均值聚类算法

    一.相异度计算  在正式讨论聚类前,我们要先弄清楚一个问题:怎样定量计算两个可比較元素间的相异度.用通俗的话说.相异度就是两个东西区别有多大.比如人类与章鱼的相异度明显大于人类与黑猩猩的相异度,这是能 ...

  3. Spark DataSet 、DataFrame 一些使用示例

    以前使用过DS和DF,最近使用Spark ML跑实验,再次用到简单复习一下. //案例数据 1,2,3 4,5,6 7,8,9 10,11,12 13,14,15 1,2,3 4,5,6 7,8,9 ...

  4. php7 教程

    标量类型声明 1. 分为强制模式和严格模式 2. 这些类型的函数参数可以执行声明 int, float, bool, string, interfaces, array, callable 例如: f ...

  5. 0 vs工程添加sdk

    配置64位 库目录:(VC++目录) 可选配置 VS SDK(如果报错缺少kernel32.lib) C:\Program Files (x86)\Microsoft SDKs\Windows\v7. ...

  6. Codeforces Global Round 1 - D. Jongmah(动态规划)

    Problem   Codeforces Global Round 1 - D. Jongmah Time Limit: 3000 mSec Problem Description Input Out ...

  7. ucml 连接虚字段

  8. day20 Python 高阶函数,函数,嵌套,闭包 装饰器

    高阶函数定义 1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个都可以称之为高阶函数 一.函数的接收参数是一个函数名 import time def foo(): ...

  9. 代码编辑器monaco-editor之基础使用

    1.下载安装monaco-editor npm install monaco-editor 我的安装目录在 C://Windows//SystemApps//Microsoft.MicrosoftEd ...

  10. Objective-C 浅拷贝与深拷贝

    一个Objective-C对象通常分配在堆上,并有一个或者多个指针指向它.如下代码及其关系图所示: NSObject *obj1 = [[NSObject alloc] init]; NSObject ...