当前位置:网站首页>Flowable source code comment (XXXIX) task listener
Flowable source code comment (XXXIX) task listener
2022-07-01 05:22:00 【jinyangjie0】
Flowable Source code address :https://github.com/flowable/flowable-engine
Flowable-6.7.2 Source code comment address :https://github.com/solojin/flowable-6.7.2-annotated
Package path :org.flowable.engine.delegate
TaskListener Listen for interface classes for tasks , The implementation class has 4 Kind of :
UserTaskIdHandler User tasks ID Processing class
UserTaskAssignmentHandler User task agent processing class
ExpressionTaskListener Expression task listener
DelegateExpressionTaskListener Proxy expression task listener
TaskListener Task listener interface class
package org.flowable.engine.delegate;
/** * ad locum , For backward compatibility , It is best to use the task listener interface class {@link org.flowable.task.service.delegate.TaskListener}. * * @author Tom Baeyens * @author Joram Barrez */
public interface TaskListener extends org.flowable.task.service.delegate.TaskListener {
}
UserTaskIdHandler User tasks ID Processing class
package org.activiti.engine.impl.history.handler;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
/** * Called when a task is created for a user task activity . Allow tasks to be recorded in historical activities id. * * Responsible for updating the historical activity table ACT_HI_ACTINST The task ID value * @author Frederik Heremans */
public class UserTaskIdHandler implements TaskListener {
@Override
public void notify(DelegateTask task) {
Context.getCommandContext().getHistoryManager()
.recordTaskId((TaskEntity) task);
}
}
UserTaskAssignmentHandler User task agent processing class
package org.activiti.engine.impl.history.handler;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
/** * Responsible for updating the historical activity table ACT_HI_ACTINST Task node owner in , Corresponding to the table ASSIGNMENT_ Field * * @author Tom Baeyens */
public class UserTaskAssignmentHandler implements TaskListener {
@Override
public void notify(DelegateTask task) {
Context.getCommandContext().getHistoryManager()
.recordTaskAssignment((TaskEntity) task);
}
}
ExpressionTaskListener Expression task listener
package org.flowable.cmmn.engine.impl.listener;
import org.flowable.common.engine.api.delegate.Expression;
import org.flowable.task.service.delegate.DelegateTask;
import org.flowable.task.service.delegate.TaskListener;
/** * Responsible for scheduling and execution expression Way to create a task listener * * @author Joram Barrez */
public class ExpressionTaskListener implements TaskListener {
protected Expression expression;
public ExpressionTaskListener(Expression expression) {
this.expression = expression;
}
@Override
public void notify(DelegateTask delegateTask) {
expression.getValue(delegateTask);
}
/** * Return the expression text of this task listener . */
public String getExpressionText() {
return expression.getExpressionText();
}
}
DelegateExpressionTaskListener Proxy expression task listener
package org.flowable.cmmn.engine.impl.listener;
import java.util.List;
import org.flowable.cmmn.engine.impl.util.DelegateExpressionUtil;
import org.flowable.cmmn.model.FieldExtension;
import org.flowable.common.engine.api.FlowableIllegalArgumentException;
import org.flowable.common.engine.api.delegate.Expression;
import org.flowable.task.service.delegate.DelegateTask;
import org.flowable.task.service.delegate.TaskListener;
/** * Responsible for scheduling and execution delegateExpression Way to create a task listener * * @author Joram Barrez */
public class DelegateExpressionTaskListener implements TaskListener {
protected Expression expression;
protected List<FieldExtension> fieldExtensions;
public DelegateExpressionTaskListener(Expression expression, List<FieldExtension> fieldExtensions) {
this.expression = expression;
this.fieldExtensions = fieldExtensions;
}
@Override
public void notify(DelegateTask delegateTask) {
Object delegate = DelegateExpressionUtil.resolveDelegateExpression(expression, delegateTask, fieldExtensions);
if (delegate instanceof TaskListener) {
TaskListener taskListener = (TaskListener) delegate;
taskListener.notify(delegateTask);
} else {
// Delegate expression “+ expression +” It is not resolved to the implementation of task listener
throw new FlowableIllegalArgumentException("Delegate expression " + expression + " did not resolve to an implementation of " + TaskListener.class);
}
}
/** * Return the expression text of this task listener . */
public String getExpressionText() {
return expression.getExpressionText();
}
}
边栏推荐
- How to hide browser network IP address and modify IP internet access?
- Distributed architecture system splitting principles, requirements and microservice splitting steps
- Global and Chinese markets of gps/gnss receiver modules 2022-2028: Research Report on technology, participants, trends, market size and share
- Global and Chinese markets of InGaAs APD arrays 2022-2028: Research Report on technology, participants, trends, market size and share
- Leetcode1497- check whether array pairs can be divided by K - array - hash table - count
- Tar command
- How to select conductive slip ring material
- AcWing 887. Finding combinatorial number III (Lucas theorem)
- How to meet the requirements of source code confidentiality and source code security management
- Flutter can refresh data every time the interface comes in
猜你喜欢
Set集合详细讲解
Copier le matériel de conseils de bébé ne peut pas être vide, comment résoudre?
LRU cache for leveldb source code analysis
Solution: drag the Xib control to the code file, and an error setvalue:forundefined key:this class is not key value coding compliant for the key is reported
LeetCode1497-检查数组对是否可以被 k 整除-数组-哈希表-计数
第05天-文件操作函数
Redis数据库的部署及常用命令
每日一题-LeetCode1175-质数排列-数学
Understand several related problems in JVM - JVM memory layout, class loading mechanism, garbage collection
How to create a progress bar that changes color according to progress
随机推荐
Series of improving enterprise product delivery efficiency (1) -- one click installation and upgrade of enterprise applications
担心侵权?必备无版权素材网站分享,不用担心视频剪辑缺素材
How to hide browser network IP address and modify IP internet access?
Copier le matériel de conseils de bébé ne peut pas être vide, comment résoudre?
Data consistency between redis and database
Detailed explanation of distributed global unique ID solution
busybox生成的东西
工业导电滑环的应用
3D建模与处理软件简介 刘利刚 中国科技大学
Design and application of immutable classes
Set set detailed explanation
Print stream and system setout();
Worried about infringement? Must share copyrightless materials on the website. Don't worry about the lack of materials for video clips
C# wpf 使用DockPanel实现截屏框
Global and Chinese market of enterprise wireless LAN 2022-2028: Research Report on technology, participants, trends, market size and share
How to select conductive slip ring material
QT等待框制作
How to traverse massive data in redis
AcWing 889. 01 sequence satisfying the condition (Cartland number)
Some common commands of podman