`
zhyi_12
  • 浏览: 99865 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JBPM4 web设计器实践--命令模式的使用

阅读更多

  目的:在web设计器中使用command模式实现动作的撤销和重做

  当前的一些设想:

  1、构建能够支持单一应用的 application 组件,只能支持一种editor。

  2、application 组件中注册、执行、撤销和重做command,约定一些特定的执行规则,执行参数的使用方式。

$('body',document).application('registerCommand','addTransition',{
	getTitle:function(){
		return '新增连线';
	},
	exec:function(){
		var o = this.options;
		if(o.event){//鼠标事件驱动的动作,不重复执行操作。
			o.event = null;
		}else{
			$('#editor-workflow').workflow('addTransition',o.fromId,o.toId);
		}
	},
	undo:function(){
		var o = this.options;
		$('#editor-workflow').workflow('removeTransition',o.fromId,o.toId);
	}
});

 

  3、在workflow组件中提供鼠标的动作的命令集成

 

$('#editor-workflow').workflow({
    moveCommand:function(event,ui){
        $('body',document).application('executeCommand','move',$.extend({
            event:event
        },ui));
    },//集成鼠标动作的move命令
    addTransitionCommand:function(event,ui){
        $('body',document).application('executeCommand','addTransition',$.extend({
	event:event
        },ui));
    }//集成鼠标动作的addTransition命令
});

 

 

(function($) {
$.widget("youi.application", {
	_init:function(){
		this.commands = [];//执行过的的命令数组,供撤销使用
		this.undoCommands = [];//撤销过的命令数组,供重做使用
		this.registedCommands = [];//map
		
		this.element.addClass('youi-application');
		
		this._defaultHtml();
	},
	
	_defaultHtml:function(){
                               //TODO 增加其他的html
		var preHtmls = ['<div id="application-info" class="application-info"></div>'];
		this.element.prepend(preHtmls.join(''));
	},
	
	/* 系统执行命令相关函数 **/
	executeCommand:function(command,options){
		if(typeof(command)=='string'){
			options = $.extend({},command.defaults,options);
			command = $.extend({options:options},this.registedCommands[command]);
		}
		this.commands.push(command);
		this.exec();
		this.undoCommands = [];//清空重做项
	},
	/**
	 * 执行命令
	 */
	exec:function(isRedo){
		if(this.commands.length>0){
			var command = this.commands[this.commands.length-1];
			command.exec(isRedo);
			$.youi.log.info('执行动作:'+command.getTitle());
		}
	},
	/**
	 * 撤销
	 */
	undo:function(){
		if(this.commands.length>0){
			var undoCommand = this.commands.pop();
			undoCommand.undo();
			this.undoCommands.push(undoCommand);
			$.youi.log.info('撤销动作:'+undoCommand.getTitle());
		}
	},
	/**
	 * 重做
	 */
	redo:function(){
		if(this.undoCommands.length>0){
			var redoCommand = this.undoCommands.pop();
			this.commands.push(redoCommand);
			this.exec(true);
			$.youi.log.info('重做动作:'+redoCommand.getTitle());
		}
	},
	/**
	 * 注册命令
	 */
	registerCommand:function(name,command){
		this.registedCommands[name] = command;
	},
	/**
	 * 销毁
	 */
	destroy:function(){
		//TODO
	}
});

$.extend($.youi.application,{
	defaults:{
		menu		 :'',
		toolbar		 :'',
		propertyTable:'',
		type		 :''//dialog page
	}
});
})(jQuery);

   

分享到:
评论
2 楼 JadeLuo 2010-11-06  
非常感谢你发布的简单集成的效果示例,现在我有个同事在实现类似功能,我主要实现jbpm4的后台功能,做到能够灵活运行Web设计器画出的流程,有兴趣可以交流一下


1 楼 vanlin 2009-10-12  
学习,

确实不错。

相关推荐

    Java个人简历模板4.doc

    【Java个人简历模板4.doc】是一个Java开发者的简历,展示了其在Java开发领域的专业知识和实践经验。简历中的关键技能和经验如下: 1. **基础Java知识**:开发者精通Java初级技术,如反射、泛型和代理,同时有面向...

    J2EE程序员需掌握的技术

    - 单例,命令,工厂,工厂方法,观察者,模板,外观,访问者,状态,装饰器,桥接,DAO,责任链等:理解和应用设计模式。 掌握这些技术和框架将使你成为一位全面的J2EE程序员,能够适应各种企业级项目的挑战。不断...

    Java个人简历模板23.doc

    5. **MVC模式**:模型-视图-控制器的设计模式,常用于Web应用开发。 6. **前端技术**: - **JavaScript**:客户端脚本语言,用于增强网页交互性。 - **jQuery**:简化JavaScript操作的库。 - **AJAX**:异步...

    Java个人简历模板37.doc

    - **其他技能**:熟悉JBPM工作流、Lucene和Compass全文搜索引擎,懂得Web Service和POI,能使用SVN和Maven工具,掌握Linux基本命令。 4. **项目经历**: - 参与裕隆佳田商贸综合管理系统开发,采用Spring+...

    姓名-javaEE软件工程师-2年-模板(48).doc

    在项目开发和管理上,他熟练使用SVN和Maven,也熟悉Linux常用命令。 在大数据处理领域,王强熟悉Hadoop分布式数据集群的部署和配置,理解HDFS和MapReduce的工作机制,具备初步的Hadoop应用开发能力。他还了解淘宝的...

    JavaEE学习实战笔记心得

    - **Struts2**:基于MVC模式的Web框架,支持多种插件扩展。 - **Hibernate**:ORM框架,用于简化数据库操作,提供了一套面向对象的方式来操作关系型数据库。 #### Hibernate - **基本操作**:了解Hibernate的CRUD...

    Java个人简历模板32.doc

    5. **MVC模式**:深入理解MVC(模型-视图-控制器)开发模式,这是许多Web应用框架的基础,如Struts和SpringMVC。 6. **Struts 2框架**:熟练使用Struts 2,包括其高级特性如拦截器、结果集、值栈、OGNL、表单验证和...

    java面试知识

    - **导入**:使用mysql命令或直接导入SQL文件。 ##### jdbc分段批量提交的时候出现异常怎么处理? - 使用try-catch块捕获异常。 - 在catch块内回滚事务。 - 可以使用日志记录错误详情。 ##### jdbc批量处理数据 -...

    姓名_javaEE软件工程师_2年_模板(50).doc

    他还熟练使用POI进行文档处理,熟悉SVN和Maven作为项目管理和构建工具,并能使用Linux常用命令。 在大数据处理领域,景鑫熟悉Hadoop体系架构,能部署和配置Hadoop分布式数据集群,理解HDFS和MAP-REDUCE的工作机制,...

    Java个人简历模板11.doc

    在其他技能方面,他精通JBPM工作流技术,熟悉Lucene和Compass全文搜索引擎,了解Web Service技术,擅长使用POI开发,能熟练操作SVN和Maven等项目管理工具,并熟悉Linux常用命令。 在大数据处理方面,张三熟悉Hadoop...

    程序员面试个人简历(JAVA).doc

    他/她具备面向对象编程思维,并对多种Java设计模式有深入理解,如单例、装饰、策略、模板、工厂和观察者模式。在Java Web方面,他/她精通JSP、Servlet、Filter、Listener、Cookie、Session、EL表达式和JSTL,同时也...

    Java个人简历模板7.doc

    6. **其他技能**:精通JBPM工作流,熟悉Lucene和Compass全文搜索引擎,了解Web Service技术,熟练使用POI,掌握SVN和Maven项目管理工具,熟悉Linux常用命令。 7. **大数据处理技能**:具备大数据处理知识,熟悉...

    姓名_javaEE软件工程师_2年_模板(43).doc

    在项目开发工具方面,他熟练使用SVN和Maven,对Linux常用命令也有一定了解。 在大数据处理领域,景鑫熟悉Hadoop体系结构,能部署配置分布式数据集群,理解HDFS和MapReduce工作机制,具备基于Hadoop的应用开发能力。...

    姓名_javaEE软件工程师_2年_模板(49).doc

    总的来说,景鑫是一位全面的JavaEE软件工程师,具有扎实的技术基础和实践经验,尤其在Web开发、数据库管理和工作流集成方面表现突出,同时对大数据处理也有所涉猎。他的技能组合和项目经验表明他能够在复杂的软件...

Global site tag (gtag.js) - Google Analytics