命令模式是将行为请求者和行为实现者解耦合的方式。对命令进行封装,将命令和执行命令分隔开。请求的一方发出命令,要求执行某些操作,接受一方收到命令,执行这些操作的真正实现。请求的一方不必知道接受方的接口,以及如何被操作。
命令模式:
命令接口
public interface Command {
public void execute();
}
命令实现类
public class ConcreteCommand implements Command{
private Receiver receiver=null;
private String state;
public ConcreteCommand(Receiver receiver){
this.receiver=receiver;
}
@Override
public void execute() {
receiver.action();
}
}
接受者
public class Receiver {
public void action(){
}
}
命令对象入口
public class Invoker {
private Command command=null;
public void setCommand(Command command){
this.command=command;
}
public void runCommand(){
command.execute();
}
}
装配者
public class Client {
public void assemble(){
Receiver receiver=new Receiver();
Command command=new ConcreteCommand(receiver);
Invoker invoker=new Invoker();
invoker.setCommand(command);
}
}
activiti中也有命令模式的应用
命令实现类
import org.activiti.engine.impl.interceptor.Command;
import org.activiti.engine.impl.interceptor.CommandContext;
public class ApproveCommand implements Command<Void>, Serializable {
//请求操作真正实现者,相当于接受者Receive
ApproveService approveService;
public ApproveCommand(ApproveService approveService){
this.approveService=approveService;
}
public Void execute(CommandContext commandContext) {
//其他操作
approveService.approve();
//其他操作
}
}
命令入口invoker
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.ServiceImpl;
@Service
public class BpmsService extends ServiceImpl {
private ProcessEngineConfigurationImpl config;
@Autowired
public void setConfig(ProcessEngineConfigurationImpl config){
this.config = config;
//commandExecutor相当于装配器
this.commandExecutor = this.config.getCommandExecutorTxRequired();
}
public void approve(ApproveService approveService){
this.commandExecutor.execute(new ApproveCommand(approveService));
}
}
@Autowired
BpmsService bpmsService;
public void test(){
ApproveService service=new ApproveService();
bpmsService.approve(service);
}
分享到:
相关推荐
Activiti命令拦截器和设计模式.docx
Activiti工作流中文开发帮助API文档说明。 Activiti工作流表结构文档说明。
Activiti中文手册
activiti6.0 中文api,
activiti中文文档
《疯狂Workflow讲义——基于Activiti的工作流应用开发》还讲解了如何在实际企业应用中使用Activiti,并与其他流行的开源框架进行整合,包括企业应用开发所必需的Web Service、企业服务总线、规则引擎、IoC框架和ORM...
ElasticSearch和activiti案例ElasticSearch和activiti案例ElasticSearch和activiti案例ElasticSearch和activiti案例
Activiti6 中文 用户指南 从Activiti网站下载Activiti UI WAR文件后,请按照以下步骤操作,以默认设置运行...Activiti UI应用程序默认情况下使用内存中的H2数据库,如果您要使用其他数据库配置,请阅读更长的版本。
介绍Activiti工作流框架如何应用到办公系统中
Activiti6 中文 用户指南 操作手册 开发API,适合入门级java开发人员使用Activiti。
引入Activiti jar和依赖 下一步 3. 配置 创建ProcessEngine ProcessEngineConfiguration bean 数据库配置 支持的数据库 创建数据库表 理解数据库表的命名 数据库升级 启用Job执行器 配置邮件服务器 配置...
Activiti是一个独立运作和经营的开源项目品牌,并将独立于Alfresco开源ECM系统运行。 Activiti将是一种轻量级,可嵌入的BPM引擎,而且还设计适用于可扩展的云架构。 Activiti将提供宽松的Apache许可2.0,以便这个...
Activiti中文用户手册 文档,学习Activiti入门上手做项目这个文档够用了。
我们不翻译,我们只是搬运工.贡献给activiti入门的新手查询 我们不翻译,我们只是搬运工.贡献给activiti入门的新手查询 调整下载积分
共四个部分:准备篇(1~2章)介绍了Activiti的概念、特点、应用、体系结构,以及开发环境的搭建和配置;基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了...
中文api文档,翻译比较好。很适合新手开发使用。需要的可以下载。
Activiti 5.14 中文用户手册,讲得比较细。
activiti5中文网页版教程,适合初学者
activiti-explorer5.2中文乱码解决方法
Activiti 用户手册中文版本.htm