`
yang_ch
  • 浏览: 80690 次
社区版块
存档分类
最新评论

FoxBPM ,Fixflow任务命令扩展介绍

阅读更多

Foxbpm任务命令扩展介绍

 

          Foxbpm对中国式流程(如:退回、转发、跳转等)封装成了各种任务命令按钮,这种方式得到了用户的一致认可,foxbpm的最新版本也对这一功能做了更好的封装和完善,使用户能更好的使用和扩展任务命令,这篇文章主要介绍foxbpm的任务命令体系,以及如何扩展属于自己的任务命令。

 

任务命令介绍

         从foxbpm.cfg.xml或5.2版本的fixflowconfig.xml文件可以看出,每一个任务命令都有3个类组成,分别为**Command、**Cmd、**Filter,其中:

 

  • **Command定义了命令有哪些特殊参数,如“退回节点”命令中的rollbackNodeId等等
  • **Cmd:命令的真正处理类,execute方法中对taskEntity,processInstanceEntity,tokenEntity等实体操作,最终完成命令的执行逻辑。
  • **Filter:命令过滤器,api中获取任务命令是通过taskService.getTaskCommandByTaskId(taskId),其中会通过taskId获取当前taskEntity,根据taskEntity的状态来确定当前按钮是否应该显示。如:对于“还回”按钮,只有当taskEntity为转办状态时,该access(taskEntity)方法才会返回True,才会显示该按钮。

 

任务命令扩展

 

综上,如果想要扩展一个自己的任务命令,只需要实现上述三个类,然后在对应的配置文件中注册即可。

 

         当然,上面的做法是兼容fixflow5.2版本和最新的foxbpm版本的,既然说了foxbpm对于扩展有了优化,那就肯定要有些新的提升。

 

         对于foxbpm的最新6.0版本,是不推荐随意修改foxbpm.cfg.xml文件,也不建议随意修改engine的jar包,因为这样才能平缓升级内核的版本。为了保证升级方便和灵活扩展,6.0版本在多个功能点上使用了开源框架经常使用的技术,java spi,该机制可以让用户在不修改Engine代码和foxbpm.cfg.xml文件的基础上,注册自己的任务命令,下面总结下新版本任务命令扩展步骤:

 

  1. 新建上面的**Command,**Cmd,**Filter类,并实现
  2. 新建类如:MyTaskCommandDefintionImpl 实现TaskCommandDefintion接口
  3. 在项目META-INF/services文件夹下新建文件:org.foxbpm.engine.task.TaskCommandDefinition,内容是2步骤中类的全名

      原理:foxbpm在引擎加载时,会通过java spi服务发现机制,注册用户自己的任务命令,这段可参考java spi机制 

 

       附:TaskCommandDefintion接口定义

package org.foxbpm.engine.task;

import java.util.List;

public interface TaskCommandDefinition {

	/**
	 * 按钮编号,如startandsubmit
	 * @return
	 */
	String getId();

	/**
	 * 按钮名称
	 * @return
	 */
	String getName();

	/**
	 * command类全名 org.foxbpm.task****
	 * @return
	 */
	String getCommandClass();

	/**
	 * cmd类全名
	 * @return
	 */
	String getCmdClass();

	/**
	 * filter类全名
	 * @return
	 */
	String getFilterClass();

	/**
	 * 按钮描述
	 * @return
	 */
	String getDescription();

	/**
	 * 按钮参数
	 * @return
	 */
	List<CommandParam> getCommandParam();
}

 

 

任务命令前端介绍

 

       想扩展一个完整的任务命令,只靠后台代码往往是实现不了的,需要前端处理一下参数,如:转发按钮,需要弹出选人界面,并将transferUserId作为参数回传给引擎,这里顺便介绍前端的扩展。

 

       6.0版本对于任务命令的前端也做了封装,集成表单时,只需要引用几个具体的js即可,关于 表单集成,这期我不多说,后面会有专门的文章来介绍表单集成部分,这里只介绍扩展任务命令时自定义参数问题,打开flowCommandHander.js,会发现这里定义了转发,退回等按钮的前端操作,如转发:

 

Foxbpm.commandHandler.transfer = function(){
	var userId = showDialog(_bpmFilePath+"/selectUser.html");
	if(userId == null || userId === undefined){
		return null;
	}
	return {transferUserId:userId};
};

       所以这里只需要定义自己的实现即可,举例:自己扩展命令 mytaskcommand,需要参数,orgid,则所需代码如下:

 

 

Foxbpm.commandHandler.mytaskcommand = function(){
	
	
	var tmpOrgId = "";
	
	/**
	 * 这里自己的逻辑,弹出选部门界面,或其他逻辑处理
	 */
	
	
	
	if(tmpOrgId == null || tmpOrgId === undefined){
		return null;
	}
	return {orgid:tmpOrgId};
};

 

 

       这样结合上面的后端Java部分扩展,就完整的实现了自己任务命令,另外,可以将这段js单独抽取出来,放到一个单独的js中,后端代码也可以单独打成jar包,如果在配合完整的文档介绍,就可以贡献给其他foxbpm的用户进行使用。而其他用户,只需要将你的jar包放到自己项目中,js引用到自己的页面上,就可以使用你的命令了,做到了对最终用户完全透明,而且最重要的一点是完全没有修改foxbpm的代码,如果引擎升级,还是可以直接覆盖原有jar包和对应的js文件。

 

 

 

FoxBPM目前尚未发布6.0的稳定版本,敬请期待.....

分享到:
评论
2 楼 yang_ch 2015-01-12  
mupenghaha 写道

任务命令扩展 的步骤3:在项目META-INF/services文件夹下新建文件:org.foxbpm.engine.task.TaskCommandDefinition,内容是2步骤中类的全名。
是不是应该是MyTaskCommandDefintionImpl 而不是TaskCommandDefinition?

以demo为例,META-INF/services文件夹是不是应该建在foxbpm-webapps-common项目中?


1.是的,文件名是接口名称,里面内容是你的实现类名称
2.是的,详情参考java spi机制
1 楼 mupenghaha 2015-01-12  

任务命令扩展 的步骤3:在项目META-INF/services文件夹下新建文件:org.foxbpm.engine.task.TaskCommandDefinition,内容是2步骤中类的全名。
是不是应该是MyTaskCommandDefintionImpl 而不是TaskCommandDefinition?

以demo为例,META-INF/services文件夹是不是应该建在foxbpm-webapps-common项目中?

相关推荐

    关于FoxBPM连接器介绍

    FoxBPM连接器详解 FoxBPM是一款开源的工作流管理系统,它为企业提供了强大的流程建模、执行和管理功能。在企业信息化建设中,流程管理扮演着至关重要的角色,而FoxBPM通过其丰富的连接器机制,能够灵活地与其他系统...

    foxBPM入门项目

    FoxBPM(6.0版本开始fixflow改名为FoxBPM)是一款开源的基于BPMN2.0标准的工作流引擎,引擎底层直接支持BPMN2.0国际标准, 吸纳了 jBPM3 、 Activiti5、BonitaBPM 等国际开源流程引擎的精髓, 同时提供了强大的中国式流程...

    FoxBPM-Designer:FoxBPM流程设计器

    #分支介绍 develop 最新开发版 master 最新稳定版 release-* 发布分支为准备新的产品版本发布做支持 hotfix-* 当产品版本的重大bug需要立即解决的时候,我们从对应版本的标签创建出一个热补丁分支。 feature-* 特性...

    物业公司绩效考核制度.doc

    物业公司绩效考核制度

    2025最新小学数学义务教育课程标准(2022年版)必考题库附含答案.docx

    2025最新小学数学义务教育课程标准(2022年版)必考题库附含答案.docx

    SDL-1.2.15-17.el7.x64-86.rpm.tar.gz

    1、文件内容:SDL-1.2.15-17.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/SDL-1.2.15-17.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    软件研发绩效考核办法.doc

    软件研发绩效考核办法

    FactoryIO液位PID仿真程序入门指南:使用TIA Portal V15与FactoryIO 2.4.0的梯形图编程,factoryio液位PID仿真程序 使用简单的梯形图编写,通俗易懂,起到抛

    FactoryIO液位PID仿真程序入门指南:使用TIA Portal V15与FactoryIO 2.4.0的梯形图编程,factoryio液位PID仿真程序 使用简单的梯形图编写,通俗易懂,起到抛砖引玉的作用,比较适合有动手能力的入门初学者。 软件环境: 1、西门子编程软件:TIA Portal V15(博图V15) 2、FactoryIO 2.4.0 内容清单: 1、FactoryIO中文说明书+场景模型文件 2、博图V15PLC程序(源码)。 ,核心关键词:FactoryIO液位PID仿真程序; 梯形图编写; 通俗易懂; 入门初学者; 西门子编程软件; TIA Portal V15(博图V15); FactoryIO 2.4.0; FactoryIO中文说明书; 场景模型文件; PLC程序(源码)。,"FactoryIO液位控制:梯形图PID仿真程序"

    微信自动锁定2.0为保护日常隐私3分钟不操作鼠标和键盘自动锁定微信.rar

    # 微信自动锁定:您的隐私保护神器在当今数字化时代,隐私安全日益重要。微信作为我们日常沟通和信息交流的重要工具,其中的隐私保护不容忽视。为了满足大家对微信隐私保护的需求,我们特别推出了“微信自动锁定”软件。 1. **自动锁定**:这是软件的核心功能。当您在使用微信的过程中,若3分钟内没有任何鼠标和键盘操作,软件会自动锁定微信。这一功能有效防止了他人在您离开电脑时,未经授权访问您的微信,保护您的聊天记录、个人信息等隐私不被泄露。 2. **便捷的托盘操作**:程序启动后,会自动收纳到电脑右下角的托盘中,不占用过多屏幕空间,也不会干扰您的正常工作和使用。当您需要退出程序时,只需右键点击托盘图标,选择“退出”即可,操作简单便捷。 3. **灵活的托盘图标设置**:托盘图标支持两种设置方式。您可以选择指定路径的图片作为托盘图标,按照自己的喜好进行个性化设置;也可以使用base64编码的图标,满足不同用户的多样化需求。

    基于Python 的BP神经网络的高频金融时间序列分析毕业设计

    【作品名称】:基于Python 的BP神经网络的高频金融时间序列分析【毕业设计】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: This project includes three sections. GetData Data crawling. Responsible for crawling and processing the high frequency data of stock transcation in recent years. And the data format would be converted to an appropriate format. predict Core algorithm. Implement the Back Propagation Neural Networks 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。

    PackageKit-gtk3-module-1.1.10-2.el7.centos.x64-86.rpm.tar.gz

    1、文件内容:PackageKit-gtk3-module-1.1.10-2.el7.centos.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/PackageKit-gtk3-module-1.1.10-2.el7.centos.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    三相PWM整流器的双闭环控制与C语言实现的PI控制及SVPWM模块技术解析,三相PWM整流器,采用双闭环控制,用C语言实现PI控制,SVPWM等模块 ,核心关键词:三相PWM整流器;双闭环控制;C语

    三相PWM整流器的双闭环控制与C语言实现的PI控制及SVPWM模块技术解析,三相PWM整流器,采用双闭环控制,用C语言实现PI控制,SVPWM等模块。 ,核心关键词:三相PWM整流器;双闭环控制;C语言实现;PI控制;SVPWM模块;,三相PWM整流器双闭环PI控制与SVPWM模块实现

    反激式开关电源仿真研究:电压外环PI控制下12V输出电压及MATLAB建模分析,反激式开关电源,反激仿真电力电子仿真,电压外环PI控制,输入电压18-75V,输出电压12V,输出功率12W,MATLA

    反激式开关电源仿真研究:电压外环PI控制下12V输出电压及MATLAB建模分析,反激式开关电源,反激仿真电力电子仿真,电压外环PI控制,输入电压18-75V,输出电压12V,输出功率12W,MATLAB simulink软件。 ,核心关键词:反激式开关电源; 反激仿真; 电力电子仿真; 电压外环PI控制; 输入电压18-75V; 输出电压12V; 输出功率12W; MATLAB Simulink软件。,基于反激式开关电源的电力电子仿真与电压外环PI控制研究

    电赛小车源码 常规C/C++编程

    电赛小车源码 常规C/C++编程 【核心代码】 ├── 2003智能小车(全国大学生电子设计竞赛) │ ├── BrainCar.M51 │ ├── BrainCar.Opt │ ├── BrainCar.Uv2 │ ├── BrainCar.hex │ ├── BrainCar.lnp │ ├── BrainCar.plg │ ├── BrainCar_Opt.Bak │ ├── BrainCar_Uv2.Bak │ ├── Config.h │ ├── Follow.LST │ ├── Follow.OBJ │ ├── Follow.c │ ├── Follow.h │ ├── IOCfg.LST │ ├── IOCfg.OBJ │ ├── IOCfg.c │ ├── LightDTC.LST │ ├── LightDTC.OBJ │ ├── LightDTC.c │ ├── LightDTC.h │ ├── MetalDTC.LST │ ├── MetalDTC.OBJ │ ├── Met

    alsa-plugins-speex-1.1.6-1.el7.x64-86.rpm.tar.gz

    1、文件内容:alsa-plugins-speex-1.1.6-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/alsa-plugins-speex-1.1.6-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    值得借鉴的IT部门绩效考核范文.docx

    值得借鉴的IT部门绩效考核范文

    双端VSC(三阶)MMC平均值模型四阶小信号模型代码解析与阶跃验证,双端VSC(3阶) MMC平均值模型(4阶)小信号模型代码,小信号阶跃验证代码 ,核心关键词:双端VSC; 3阶; MMC平均值模

    双端VSC(三阶)MMC平均值模型四阶小信号模型代码解析与阶跃验证,双端VSC(3阶) MMC平均值模型(4阶)小信号模型代码,小信号阶跃验证代码 ,核心关键词:双端VSC; 3阶; MMC平均值模型; 4阶; 小信号模型代码; 小信号阶跃验证代码;,双端VSC 3阶小信号模型代码及4阶MMC平均值阶跃验证研究

    P020250120583214598713 2.et

    P020250120583214598713 2.et

    23 采购部门KPI指标(结合BSC).doc

    23 采购部门KPI指标(结合BSC)

    东方日升集团薪酬绩效管理办法.docx

    东方日升集团薪酬绩效管理办法

Global site tag (gtag.js) - Google Analytics