Activiti7工作流引擎:高阶篇 命令上下文 CommandContext

Posted vbirdbest

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activiti7工作流引擎:高阶篇 命令上下文 CommandContext相关的知识,希望对你有一定的参考价值。

红管管   白签签
排队一起做酸酸
做完酸酸吃饭饭
吃完饭饭等单单
单单出来到时间
继续排队做酸酸
在家呆着防冠冠
么事不能胡转转
胡转可能得冠冠

可以从CommandContext中拿到所有EntityManager(即DAO、Mapper)用于对Activiti的25张表CRUD。

一:CommandContext

public class CommandContext 
	// ACT_RU_TASK
	public TaskEntityManager getTaskEntityManager()

	// ACT_RU_EXECUTION
	public ExecutionEntityManager getExecutionEntityManager()

	public DeploymentEntityManager getDeploymentEntityManager()

	public HistoricProcessInstanceEntityManager getHistoricProcessInstanceEntityManager()

	public ProcessDefinitionEntityManager getProcessDefinitionEntityManager()

	public ModelEntityManager getModelEntityManager()

	

	public ActivitiEngineAgenda getAgenda();

二:TaskEntityManager

public interface TaskEntityManager extends EntityManager<TaskEntity> 


@Internal
public interface EntityManager<EntityImpl extends Entity> 
  
  EntityImpl create();
  
  EntityImpl findById(String entityId);
  
  void insert(EntityImpl entity);

  void insert(EntityImpl entity, boolean fireCreateEvent);
  
  EntityImpl update(EntityImpl entity);
  
  EntityImpl update(EntityImpl entity, boolean fireUpdateEvent);

  void delete(String id);
  
  void delete(EntityImpl entity);
  
  void delete(EntityImpl entity, boolean fireDeleteEvent);
  

三:Entity

@Internal
public interface TaskEntity extends VariableScope, Task, DelegateTask, Entity, HasRevision 



public class TaskEntityImpl extends VariableScopeImpl implements TaskEntity, Serializable, BulkDeleteable


四:Command

public interface Command<T> 

  T execute(CommandContext commandContext);


五:自定义命令

public class MyCustomCommand implements Command<Object> 

	/**
     * 当前任务id
     */
    private String currentTaskId;
    
    public MoveTaskCommand(String currentTaskId) 
        this.currentTaskId = currentTaskId;
    
    
    
    @Override
    public Object execute(CommandContext commandContext) 
    	// 对ACT_RU_TASK增删改查
        TaskEntityManager taskEntityManager = commandContext.getTaskEntityManager();
        TaskEntity currentTaskEntity = taskEntityManager.findById(this.currentTaskId);
        taskEntityManager.deleteTask(currentTaskEntity, null, true, true);

		// 对ACT_RU_EXECUTION增删改查
        ExecutionEntityManager executionEntityManager = commandContext.getExecutionEntityManager();
        ExecutionEntity executionEntity = executionEntityManager.findById(currentTaskEntity.getExecutionId());
      
        return null;
    


六:ManagementService

ManagementService 可以执行命令。so,我们如果需要对Activiti表进行直接操作的话可以将操作封装在Command中,然后通过ManagementService来执行。

@Autowired
private ManagementService managementService;
	
public void testMoveTask() 
	String currentTaskId = "86661d4e-707b-11ec-a9f1-8239436cd258";
	MyCustomCommand myCustomCommand = new MyCustomCommand(currentTaskId);
	managementService.executeCommand(myCustomCommand);

以上是关于Activiti7工作流引擎:高阶篇 命令上下文 CommandContext的主要内容,如果未能解决你的问题,请参考以下文章

Activiti7工作流引擎:高阶篇 内嵌子流程 SubProcess

Activiti7工作流引擎:高阶篇 前进和后退任务

Activiti7工作流引擎:高阶篇 ProcessDefinitionUtil

Activiti7工作流引擎:高阶篇 ProcessDefinitionUtil

Activiti7工作流引擎:高阶篇 多实例

Activiti7工作流引擎:高阶篇 ManualTask