- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
工作流设计参考包括PHP实现
工作流设计参考(包括PHP实现)?
本文关键词: php工作流设计的工作流很少有让人满意的,即便是国内用的比较多的jbpm,用起来也会觉得很便扭。再加上PHP中没有什么好用的工作流,于是干脆自己设计一个,设计的原则如下:
1 根据80/20原则,只使用wfmc模型中最符合自身应用的20%功能
2 充分吸收国内使用jbpm开发BOSS中遇到的问题,工作流引擎只负责参数的收集和流程的流转,具体和业务的控制,交给每个流程定制的控制类去实现。
3 表单采用简单的html+控制标签的方法实现
4 权限和模板引擎,以及其它辅助函数直接使用办公系统自带的框架
5 充分利用PHP语言的特点,流程设计是基于数据库的,程序上使用OO设计,但采用重对象的方法
6 不把可视化设计流程的工作交给最终客户,而且由设计时完成,因此不考虑流程版本更新的问题
一、工作流数据表设计
?
tbl_workflow_defination:工作流定义表
defination_id 流程id ? defination_name 流程名称 ? defination_handler 流程处理辅助文件,每个工作流一个文件 自定义处理文件,及其对象。例如workflow-proporsal-handler.php,其中定义对象proposal ?
tbl_workflow_node:流程结点步骤表
node_id 结点id ? defination_id 流程id ? node_index 结点序号 结点的step node_name 结点名称 ? node_type 结点类型 1人为决策,2自动处理(直接执行execute_function),3等待外部响应(例如外部WS触发),4分支,5汇总 6结束结点(此结点执行时候自动终止进程) init_function 流程初始函数 ? run_function 流程运行函数 ? save_function 流程保存函数 ? transit_function 流程流转函数 ? prev_node_index 前结点序号 例如1。开始结点没有
执行前,通过此来校验一下流程 next_node_index 后结点序号 例如[同意]3,[不同意]4。尾结点或要结束的结点没有,若没有,直接调用end executor 执行角色,组,人 role[1,2] group[1,2] user[1,2],为空由运行时决定 execute_type 执行类型 0需所有人执行 1只需一人执行 remind 提醒 0不提醒 1邮件 2短信 3邮件和短信 field 可编辑的字段 name,content max_day 最长时间(天) ? ?
tbl_workflow_process :流程执行进程表
process_id 进程id ? defination_id 流程id ? process_desc 进程描述 显示在我的工作台中 context 上下文 存放上下文变量,例如业务表的id current_node_index 当前结点序号 ? start_time 流程启动时间 如遇分支、汇合显示为:
1=》3,4=》3,5=》6 finish_time 流程完成时间 ? state 状态 1运行 2结束 start_user 发起人 发起人,用于显示自己的流程 ?
tbl_workflow_thread :流程执行线程表
thread_id 线程id ? process_id 进程id ? process_desc 进程描述 ? node_id 结点id ? node_name 结点名称 ? executor 执行人 ? start_time 线程生成时间 ? receive_time 线程接收时间 ? finish_time 线程完成时间 ? max_time 结点规定的最长时间 ? state 状态 0未接收 1已接收 2已处理 ?
二、常见流程
人工决策领导传阅部门领导审批填写表单结束放弃提交同意重填(退回)不同意完成外部响应
发送支付信息接收支付成功响应(外部WS触发该流程)三、PHP设计
运行的函数由结点在设计时候决定,如果没有设定,就使用默认的函数。利用了PHP语言的以下特性
?php
class?Foo{
function?
Variable()?{
$name?=?Bar;$this-$name();?
/ /?This?calls?the?Bar()?method
}
????
????function?Bar(){
????????echo?This?is?Bar;
?? }
}
$foo?=?new?Foo();
$funcname?=?
您可能关注的文档
最近下载
- 城市道路交通事故地点文字表述方法研究.pdf VIP
- 新能源转换与控制技术风力发电(本科)樊.ppt
- 七年级英语上册期末专题训练(任务型阅读,首字母填空,完形填空)(有答案).pdf VIP
- 学术规范与论文写作(雨课堂)研究生 全部答案.doc VIP
- 2025年耐火材料行业分析.docx VIP
- 技术咨询合同简洁版模板5篇.docx VIP
- 2025-2026学年山东省青岛市八年级上学期期中模拟英语试题(含解析).docx VIP
- 日置 BT3564电池测试仪使用说明书.pdf VIP
- 上海三菱LEHY(C)电梯安装调试培训资料.ppt VIP
- 人教版(2025)高二生物选择性必修1稳态与调节期中达标测试卷A卷(含答案解析).pdf VIP
原创力文档


文档评论(0)