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

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-* 特性...

    v_jstools-main.zip

    v_jstools-main.zip

    java-SpringBoot+vue的在线外卖信息管理系统毕业设计源码.zip

    系统选用B/S模式,后端应用springboot框架,前端应用vue框架, MySQL为后台数据库。 本系统基于java设计的各项功能,数据库服务器端采用了Mysql作为后台数据库,使Web与数据库紧密联系起来。 在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。

    物流管理中基于Flexsim的日用洗化用品配送中心布局与仿真优化

    内容概要:本文介绍了基于Flexsim仿真软件进行日用洗化用品配送中心布局方案与仿真实验的内容。报告旨在让学生了解物流系统建模与仿真的基本步骤,掌握Flexsim的操作方法,以及能够设计和仿真复杂的物流设施。主要内容包括:配送中心的必要性和意义探讨,详细说明中心内的设施布局,流程图绘制、仿真模型构建与有效性验证、数据分析及优化。此外,提供了日用洗化用品物流的具体参数设定及仿真条件。在优化分析中,提出了针对托盘数量、叉车效率等方面的改进意见,并展示了优化效果的实际成果。附录总结了实习心得,强调仿真技术对未来物流行业的积极影响。 适用人群:适合高等院校物流管理专业的学生,尤其是参与实习或研究项目的人士。 使用场景及目标:应用于教学实习,目的是提升学生对现代物流系统的认知水平和技能,使其熟悉并能够灵活使用Flexsim这类专业级仿真工具。通过实践操作加深理论理解和工程实践经验。 其他说明:文中包含了详细的排版规范,确保提交的设计书既科学又美观。评分标准严格细致,鼓励创新思维和技术应用的同时,也不忘关注学生的综合表现和个人成长经历。

    中国全国能源生产量原煤1993-2024月度数据细分31个省份地区累计同比1991-2023年度.xlsx

    1993-2024月度数据细分31个省份地区累计同比1991-2023年度 东北华北华东西北华南西南华中地区 北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 数据来源:ceic经济数据库 主要指标: 每个省份分当月、累计、同比、累计同比、(原煤、原油)年度数据

    java-springboot+vue一起来约苗疫苗接种系统实现源码.zip

    系统选用B/S模式,后端应用springboot框架,前端应用vue框架, MySQL为后台数据库。 本系统基于java设计的各项功能,数据库服务器端采用了Mysql作为后台数据库,使Web与数据库紧密联系起来。 在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。

    全国大学生电子设计竞赛电赛经验分享与STM32应用详解

    内容概要:本文详细介绍了全国大学生电子设计竞赛(电赛)及其背景、参赛规则和流程,包括竞赛概述、认可度、竞赛历史和发展现状,尤其是针对2023年电赛的重要信息进行了阐述。竞赛设有多个赛道,涵盖了广泛的电子技术领域,并细说了各环节的时间安排及操作细节。此外,文章分享了一些参赛所需的基础材料清单和必要的准备工作建议,特别指出淘宝采购注意事项及必要器材准备;附上了两段关于STM32的学习指南视频链接供参考。 适用人群:有意参与或了解电子设计竞赛的在校本科生及研究生。 使用场景及目标:帮助潜在参赛者提前规划参赛准备工作;明确电赛的具体流程及相关要求,使得参赛者能够在规定时间内完成高质量的设计;对于初次接触此类比赛的人来说尤为有用。 其他说明:文中还提到电赛对选手综合素质和技术水平的要求极高,同时提醒参赛队伍应注意比赛过程中可能出现的一些特殊情况(例如临时采购、器材选用等)。另外,提供了具体的电赛开源项目实例和相关硬件设计细节,为有志于深入研究的参赛者提供更多指导和启示。

    欧姆龙PLC控制伺服电机及气缸项目解析:构建工业自动化架构的综合课程(学习CX调试标准流程,解析应用手册及全套项目框架),欧姆龙PLC CJ2M标准程序:控制伺服电机与气缸,模块齐全,流程清晰,含通讯

    欧姆龙PLC控制伺服电机及气缸项目解析:构建工业自动化架构的综合课程(学习CX调试标准流程,解析应用手册及全套项目框架),欧姆龙PLC CJ2M标准程序:控制伺服电机与气缸,模块齐全,流程清晰,含通讯与电路图详解,欧姆龙, PLC CJ2M标准程序,一共控制12个伺服电机 ,气缸若干,包含轴点动,回零,相对与绝对定位,整个项目的模块都有:主控程序,复位程序,手动,生产计数,只要弄明白这个程序,就可以非常了解整个项目的程序如何去编写,从哪里开始下手,可提供程序问题解答,程序流程清晰明了;程序还有与机器人通讯,包含有触摸屏与电路图 ,核心关键词:欧姆龙;PLC CJ2M标准程序;伺服电机控制;轴点动;回零定位;相对与绝对定位;主控程序;复位程序;手动操作;生产计数;程序问题解答;程序流程清晰;机器人通讯;触摸屏;电路图。,欧姆龙PLC项目:CJ2M标准程序详解,伺服与气缸控制全解析

    量子位智库2024年AI音乐应用产业报告24页.pdf

    量子位智库2024年AI音乐应用产业报告24页.pdf

    基于OpenFast与SimLink联合仿真模型的风电机组独立与统一变桨控制研究,风电机组联合仿真控制,openfast与simlink联合仿真模型,风电机组独立变桨控制与统一变桨控制 独立变桨控制

    基于OpenFast与SimLink联合仿真模型的风电机组独立与统一变桨控制研究,风电机组联合仿真控制,openfast与simlink联合仿真模型,风电机组独立变桨控制与统一变桨控制。 独立变桨控制。 OpenFast联合仿真。 ,关键词:openfast; simlink联合仿真模型; 独立变桨控制; 统一变桨控制; 联合仿真。,OpenFast联合仿真模型:独立与统一变桨控制对比研究

    机械臂-python串口编程

    本资源包旨在帮助用户学习如何使用Python进行机械臂控制。它包含了从基础的Python编程环境搭建到高级的机械臂控制原理介绍等多个方面的资料。 源代码 教程与文档: 1、python编程控制机械臂原理介绍.docx 2、windows下安装和配置pyhon环境.docx 3、安装pip工具.docx 4、安装pycharm免费编程工具.docx 5、python编程案例.docx 软件与库: 1、python-3.6.8-amd64.exe 2、python-3.10.4-amd64.exe 3、pycharm-community-2022.1.exe 4、dlib-19.24.0-cp39-cp39-linux_armv7l.whl 5、numpy-1.21.4-cp39-cp39-linux_armv7l.whl 6、numpy-1.24.2-cp39-cp39-linux_armv7l.whl 7、opencv_python-4.5.5.64-cp39-cp39-linux_armv7l.whl 8、pip-22.0.4-py3-none-any.whl

    TLF35584驱动安全包解析,《TLF35584驱动Safetypack包详解:9年汽车电子软件开发经验下的底层软件与Autosar诊断协议开发实践》,TLF35584驱动safetypack包,具

    TLF35584驱动安全包解析,《TLF35584驱动Safetypack包详解:9年汽车电子软件开发经验下的底层软件与Autosar诊断协议开发实践》,TLF35584驱动safetypack包,具体内容见图片。 9年汽车电子软件开发经验,专注于底层软件和Autosar的开发,诊断协议开发, ,TLF35584驱动;Safetypack包;9年汽车电子经验;底层软件开发;Autosar开发;诊断协议开发,TLF35584驱动与Safetypack包的详解

    基于COMSOL的岩石损伤与压裂效应研究:水力压裂多模型分析、膨胀剂作用下岩石损伤、不固结不排水三轴试验及二维钻孔封孔效果模拟,COMSOL模拟:岩石损伤与水力压裂的相场法研究及三轴试验与封孔效果模拟

    基于COMSOL的岩石损伤与压裂效应研究:水力压裂多模型分析、膨胀剂作用下岩石损伤、不固结不排水三轴试验及二维钻孔封孔效果模拟,COMSOL模拟:岩石损伤与水力压裂的相场法研究及三轴试验与封孔效果模拟,COMSOL岩石损伤、水力压裂、三轴试验 岩石在膨胀剂的膨胀作用下的损伤; 相场法与水力压裂(6个模型); 不固结不排水三轴试验; 二维钻孔封孔效果模拟。 ,核心关键词:COMSOL岩石损伤; 水力压裂; 三轴试验; 膨胀剂膨胀作用; 相场法; 模型; 不固结不排水三轴试验; 二维钻孔封孔效果模拟。,COMSOL模拟:岩石损伤与水力压裂的三轴试验研究

    能自动生成srt文件的视频硬字幕提取器

    能自动生成srt文件的视频硬字幕提取器

    基于三相PWM整流器并联仿真的零序环流抑制算法及SVPWM中零矢量作用时间调节方法,三相PWM整流器并联仿真研究:零序环流抑制算法下的零矢量作用时间调节及其参考文献概览,三相PWM整流器并联仿真,加入

    基于三相PWM整流器并联仿真的零序环流抑制算法及SVPWM中零矢量作用时间调节方法,三相PWM整流器并联仿真研究:零序环流抑制算法下的零矢量作用时间调节及其参考文献概览,三相PWM整流器并联仿真,加入了零序环流抑制算法。 对SVPWM中零矢量的作用时间进行调节,进而抑制电路的零序环流。 ,可以提供相关的参考文献。 ,核心关键词:三相PWM整流器;并联仿真;零序环流抑制算法;SVPWM;零矢量作用时间调节;电路零序环流;参考文献。,基于零序环流抑制算法的三相PWM整流器并联仿真研究:SVPWM中零矢量调节策略的探索与应用

    基于高频信号的PMSM转矩脉动抑制策略研究:谐波抑制与转矩补偿的仿真实现与优化分析,基于高频信号的PMSM转矩脉动抑制策略研究:传统方法与新型算法的仿真对比分析,基于高频信号的pmsm转矩脉动抑制 传

    基于高频信号的PMSM转矩脉动抑制策略研究:谐波抑制与转矩补偿的仿真实现与优化分析,基于高频信号的PMSM转矩脉动抑制策略研究:传统方法与新型算法的仿真对比分析,基于高频信号的pmsm转矩脉动抑制 传统的高频方波注入法,利用转子的饱和凸极效应,可提升转速控制精度,但该方法也导致电流中含有大量的谐波而产生畸变,对电机的转矩脉动产生负面影响。 该仿真包括高频注入,谐波抑制,转矩补偿 该仿真可以实现变速变负载等工况的实现 通过仿真得到该控制方法下的电机转速、电磁转矩和电流响应。 通过对A相电流的FFT变,该算法可以有效的抑制定子电流的畸变,降低转矩脉动,且具有较高的灵活性。 matlab ,高频信号; PMSM转矩脉动抑制; 高频方波注入法; 谐波抑制; 转矩补偿; 变速变负载; 仿真; MATLAB,基于Matlab仿真的PMSM转矩脉动抑制技术研究

    图像低光照增强算法与调色增强算法介绍,图像智能增强技术:基于深度学习的低光增强、调色增强与水下增强算法研究及复现实现,深度学习图像低光照增强算法低照度增强3DLUT,DeepUPT,DeepLPF,R

    图像低光照增强算法与调色增强算法介绍,图像智能增强技术:基于深度学习的低光增强、调色增强与水下增强算法研究及复现实现,深度学习图像低光照增强算法低照度增强3DLUT,DeepUPT,DeepLPF,RetinexNet,Zero-DCE,EnlightenGAN,RetinexFormer等 图像调色增强算法HDRNet,StarEnhancer,CSRNet等 水下增强算法UWGAN,UIEGAN等 pytorch架构复现,有代码和benchmark数据集 ,深度学习; 图像低光照增强算法; 3DLUT; DeepUPT; DeepLPF; RetinexNet; Zero-DCE; EnlightenGAN; RetinexFormer; 图像调色增强算法; HDRNet; 水下增强算法; UWGAN; UIEGAN; pytorch架构复现,图像处理算法复现:深度低光照增强、调色增强及水下增强

    EKF+UKF+CKF非线性卡尔曼滤波变体对比,MATLAB中三种非线性卡尔曼滤波算法的对比研究:EKF、UKF与CKF的模拟与性能评估,【EKF+UKF+CKF对比MATLAB源程序】三种非线性卡尔

    EKF+UKF+CKF非线性卡尔曼滤波变体对比,MATLAB中三种非线性卡尔曼滤波算法的对比研究:EKF、UKF与CKF的模拟与性能评估,【EKF+UKF+CKF对比MATLAB源程序】三种非线性卡尔曼滤波变体:扩展卡尔曼滤波EKF、无迹卡尔曼滤波UKF、容积卡尔曼滤波CKF三种算法的对比。 状态更新和观测更新均为非线性的,模拟一定强度的机动性,可用于卡尔曼滤波方法的对比学习,自己修改成运动模型后,可以用于组合导航(GPS+DVL形式)。 程序只有一个m文件,我没有把一个文件拆分成多个函数来写,包括各个滤波的自系统都在一个文件里,保证了一个文件运行成功就能得到仿真图像。 程序带有中文注释。 输出滤波前后的误差图像对比、误差最大值的数值对比。 成功,看到就。 ,核心关键词:EKF; UKF; CKF; MATLAB源程序; 非线性卡尔曼滤波; 对比; 状态更新; 观测更新; 机动性; 组合导航; GPS+DVL; 文件; 中文注释; 误差图像对比; 误差数值对比。,三非线性卡尔曼滤波算法:EKF、UKF与CKF的MATLAB源程序对比

Global site tag (gtag.js) - Google Analytics