驰骋工作流引擎-流程设计器操作手册

开源驰骋工作流

贡献于2012-06-21

字数:45576 关键词: 工作流引擎 手册

 做最好用的工作流程引擎,奉献社会。 驰骋流程设计器V4.5 操 作 说 明 书 济南驰骋信息技术有限公司 2011年8月修订 目录 CCFlow.org 1 1总体说明 6 1.1产品信息 6 1.2 系统对使用者要求 6 1.3 如何学习好ccflow 7 1.4关键字 7 1.5概要说明 7 1.6流程的分类 8 1.7开发模式说明 9 1.7.1独立运行模式 9 1.7.2嵌入运行模式 9 1.7.3 SDK开发模式 10 1.8 CCFlow 自带的演示环境 10 1.8.1演示的组织结构 10 1.8.2流程&表单列表 11 2 CCFlow的安装 11 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 2.1下载ccflow 11 2.2安装文件清单 12 2.3环境要求 13 2.4安装步骤 14 2.5常见安装问题 15 2.6 您的系统与ccFlow组织结构表耦合(集成) 16 2.6.1耦合说明 16 2.6.2编号规则 17 2.6.3岗位表Port_Station 18 2.6.4部门表Port_Dept 18 2.6.5人员表Port_Emp 18 2.6.6人员部门对应表Port_EmpDept 18 2.6.7人员岗位对应表Port_EmpStation 19 2.7 系统配置 19 2.7.0 WebConfig配置 19 2.7.1 PC访问主菜单配置 19 2.7.2 移动设备访问主菜单配置 20 2.8把CCFlow集成到GPM 20 2.8.1什么是GPM? 20 2.8.4如何把ccflow集成到GPM? 21 2.9 把消息写入驰骋即时通讯CCIM 22 3.流程设计 22 3.1流程创建 23 3.1.0 流程设计器的基本操作 23 3.1.1流程的基本元素 23 3.1.2 CCFlow流程模式 23 3.1.3创建简单的流程步骤 23 3.1.4 流程检查的作用 24 3.2流程属性 25 3.2.1流程属性解释 25 3.2.2流程相关功能 26 3.2.3流程的运行方式 27 3.3节点属性 27 3.3.1基本属性 28 3.3.2按钮标签 35 3.3.3考核属性 39 3.3.4相关功能 40 3.4父子流程的设计 50 3.5同步分合流程的设计 51 3.5.1设计基础 51 3.5.1如何把子线程的数据汇总到合流节点表单中去? 52 3.5.2关于合流点退回、终止、查看进度的问题处理办法 52 3.6异步分流程的设计 54 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.7 表单库 54 3.8 高级设计 55 3.8.1如何设置标题生成规则 55 3.8.2如何设置邮件模板格式? 55 3.8.3如何设置流程的自动发起? 55 4.数据查询\统计\考核\报表 56 4.1 查询数据是如何产生的? 56 4.2 查询列表字段筛选 56 4.3 列表字段显示顺序 57 4.4 查询条件设计 57 4.5 重设默认值 58 4.6数据展现的三大方式 58 4.6.1通用数据查询: 58 4.6.2数据分组分析 60 4.6.3对比分析 64 5系统维护&流程服务 65 5.0系统设置 66 5.0.1全局设置 66 5.0.2系统枚举值 67 5.0.3编码表 68 5.0.4 JS校验库 69 5.0.5全局变量 69 5.0.6功能执行 70 5.1组织结构 70 5.1.1部门维护 71 5.1.2岗位维护 72 5.1.3人员维护 73 5.2功能性执行 74 5.2.1 如何把数据批量的调度到流程数据中? 74 6高级开发(深度了解ccflow) 74 6.0类设计与数据库设计命名规则 74 6.1表结构与流程运行机制 75 6.1.1, BP框架表. 75 6.1.2, ccflow流程规则描述表. 76 6.1.3, ccflow 流程运行数据表. 77 6.1.4, 公共字典表. 77 6.2 流程生命周期(创建、运行、数据归档) 77 6.2.1流程创建时 77 6.2.2流程运行时. 79 6.2.3流程完成后(数据归档). 79 6.2.4数据查询 80 6.2.5利用ccflow流程数据,为客户开发一个高级流程查询页面。 80 6.2.5 流程发起参数传递。 81 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 6.3 功能调用(二次开发SDK) 82 6.3.0说明概要 82 6.3.1耦合案例 82 6.3.2功能列表 83 6.3.3常用的测试案例 84 6.4 采用sdk模式的开发 85 6.4.0什么是ccflow的sdk的开发模式? 85 6.4.1什么情况下用户sdk模式的开发? 85 6.4.2 SDK模式开发环境设置 86 6.4.3获取ccflow数据(SDK) 86 7演示&学习环境 87 7.0 演示环境的组织结构 87 7.1流程演示环境 88 7.1.1线性流程 89 7.1.1同步分合流 90 7.1.2异步分合流 91 7.1.3父子流程 92 7.2 表单演示环境 92 7.2.0功能展示表单 92 7.2.1企业资质申请表单 94 7.2.2经典表单 94 7.2.3航空考察表单 94 8 CCFlow技术文摘 95 8.0 经典问答 95 8.1 ccflow如何提高工作流程管理系统运行效率? 95 XML 数据的缓存 96 8.2 ccflow向流程开始节点表单传输数据方法大全 96 8.3 开源的ccflow工作流程引擎,工作流程管理系统附件功能大总结 97 8.4 使用svn下载开源驰骋工作流程管理系统,工作流程引擎 98 8.5关于ccflow事件与其它表达公式的参数 101 8.6 以子流程结束的工作流程有什么特点?设计时应注意什么事项? 102 8.6 为什么提倡采用瀑布方式的设计流程? 102 1总体说明 1.1产品信息 产品名称: 驰骋.net工作流程引擎. 英文名称: chicheng workflow engine 简 称: ccflow 版本: 4.5 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 开发历史: 2003-2012年. 性 质: 开源软件 许可协议: LGPL URL: http://www.gnu.org/licenses/lgpl.html 官方网站: http://ccflow.org 源 代 码: http://ccflow.googlecode.com/svn/ccflow/ 请用svn下载. 运行环境: bs 结构. windows XP, windows server. win7 IIS6.0以上. .net4.0. Office2007 (如果需要单据打印.) 开发语言: VS2010. .net4.0 c#.net. 客 户 端: FireFox 3.0以上. IE7+,或者使用IE内核的浏览器. 组成部分: 流程图形设计器(有:cs版本与bs版本)/流程前台运行程序(BS结构)/流程服务(CS)/web的方式的表单设计器/BRP工具 基本功能: 图形化流程设计/智能表单web定义定义免程序开发/级联下拉框/流程轨迹/单据自定义打印/邮件短信工作到达通知/自动任务分配/支持sdk模式开发/简洁集成/消息侦听/丰富事件接口/报表定义/工作量分析/绩效考核/手机访问/支持sqlserve,oracle,mysql数据库 CCFlow: 懂管理就会开发基本流程,为单位流程管理系统没问题,会SQL就能达到中级开发水平解决复杂的逻辑问题与其它系统耦合,有编程基础就可以使用ccflow的sdk做高级的开发. 1.2 系统对使用者要求 Ccflow 把使用者分为三种类型,流程基础设计人员、流程高级设计人员、流程二次开发人员,下面把不同层次的人员的知识要求与问题解决能力介绍如下。 流程基础设计人员: 知识要求:懂流程管理,流程业务知识,对信息化系统有一定的了解与掌握,能够做一些基础的维护。 流程处理能力:能够为单位建立基础的办公流程、业务流程。 说明:ccflow基本都是web界面化的操作,不需要编译、设计所见既所得。 流程高级设计人员: 知识要求:满足[流程技术设计人员]条件,会基础的SQL语法,能够编写函数,存储过程,具有一定的英文水平(因为ccflow物理表基本上按英文命名)。 流程处理能力:能够把ccflow与其它系统耦合起来工作,能够处理复杂的业务逻辑开发,能够有效的把ccflow与其它的业务系统耦合在一起。 流程二次开发人员: 知识要求:会写Javascript 脚本验证,具有一定的编程知识与能力,。 流程处理能力:能够利用API可以与其它系统耦合起来工作,能够处理复杂的业务逻辑开发,能够有效的把ccflow与其它的业务系统耦合在一起。 1.3 如何学习好ccflow ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 1.4关键字 流程、节点、连接线、标签、岗位、部门、人员、单据打印、消息侦听。 名词解释: 工作流程:就是处理一件事情的过程。现有的流程就是用计算机语言,把现实工作的过程描述出来。把手工作业下的流程通过网络与计算机实现出来,用计算机减少手工作业下的劳动强度,进而实现集团公司规范化、高效的管理。 工作节点:一条流程是由多个节点完成的,节点也是处理此事情的环节。 表单:就是一个环节上要处理的内容,也就是工作内容,也称为采集的信息。 在途工作:在途工作就是我参与的一条流程,这条流程还没有处理完。从在途流程中你可以查看这条流程运行在什么位置? 1.5概要说明 Ccflow 流程设计器概要说明: Ccflow 流程设计器上由silverlight4.0开发。 流程设计器集成了ccflow自由表单设计器、傻瓜表单设计器,关于这两类的设计器说明请参考表单设计器说明手册。 Ccflow流程设计器支持线形流程、父子流程、同步分合流、异步分合流程。足能够满足您们的业务流程应用模式。 Ccflow 流程设计器全部实现了可视化设计,设计所见既所得。 Ccflow 流程设计器可以导出xml 备份文件。 Ccflow 方便调试,流程运行前体检,方便检查流程设计的错误。 Ccflow 流程设计器概念少,名词简单通俗,好理解,上手快。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 Ccflow 支持报表定义。 1.6流程的分类 Ccflow 把流程分为公文类流程与业务类流程。 公文流程是以文档传递为基础的流程,而业务流程则是以表单数据为基础的流程。 表单区别: 公文流程的表单字段是固定的,一般不做变化,比如:文号,发文单位,收文单位,机密程度,紧急程度等等,而业务类流程表单是变化的。公文流程节点上只有一个表单,而业务流程有多个表单。 载体区别: 公文以文档为中心,公文流程表单是描述文档的属性,公文流程用户操作的前台表现形式以word 为处理工作的载体,采用了vsto技术,处理文件流转。 业务流程以IE或者cs程序为载体处理数据流转。 数据存储区别: 公文流程的数据分为三部分,流程运转记录存储在数据表里,公文模板存储在ftp服务器上,公文文档数据存储在ftp服务器上。 在本说明书中如果特别说明都是业务流程开发。 1.7开发模式说明 Ccflow 分为如下几种开发模式,您可以根据自己的需要选择合适自己的开发模式。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 1.7.1独立运行模式 与其它的系统不耦合,登陆与功能操作完全独立。 1.7.2嵌入运行模式 Ccflow的功能都是以页面体现的,你可以根据本文章中的功能调用列表处理。 1.7.3 SDK开发模式 把整个环境融入到您的解决方案里面,采取调用静态方法的方式处理。 比如:登陆,发送,撤消,删除,保存,转发。如何使用sdk模式开发流程,请参考本书的后面章节部分。 Ccflow 在演示环境中为各位准备了一个SDK表单模式的开发, SDK表单位于 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 D:\ccflow\VisualFlow\SDKFlowDemo\QingJia 1.8 CCFlow 自带的演示环境 对于自带的演示环境在本文章中第7章有详细的说明。 1.8.1演示的组织结构 No Name 密码 部门 部门名称 岗位 岗位名称 zhoupeng 周朋 pub 01 总经理室 01 总经理 zhoushengyu 周升雨 pub 0101 市场部 07 销售人员岗 zhanghaicheng 张海成 pub 0101 市场部 02 市场部经理 zhangyifan 张一帆 pub 0101 市场部 07 销售人员岗 zhoutianjiao 周天娇 pub 0102 流程引擎研发部 08 程序员岗 qifenglin 祁凤林 pub 0103 技术服务部 04 技术服务部经理 fuhui 福惠 pub 0103 技术服务部 09 技术支持工程师 guobaogeng 郭宝庚 pub 0104 财务部 10 出纳岗 yangyilei 杨依雷 pub 0104 财务部 05 财务部经理 liping 李萍 pub 0105 人力资源部 06 人力资源部经理 liyan 李言 pub 0105 人力资源部 11 人力资源助理岗 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 1.8.2流程&表单列表 1.9 关于CC论坛积分制度 建立积分制度的目的: 1, 让会员积极回答别人的问题。 2, 让会员积极共享自己的设计经验心得。 3, 让会员积极分享自己的设计成果。 如何注册CC论坛会员? 向 ccflow@ccflow.org 发邮件自动返回邀请码,如果您在1分钟内得不到邮件,请查看你的邮件垃圾箱里找。 如何获得积分? 1. 积极回答别人的问题. 2, 邀请有效的用户数. ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 在您注册成功后点邀请主栏目上的[邀请您的朋友],并生成一个url连接. 把此连接通过qq,msn,email发给您的朋友,他注册后您就可以获得积分。 3. 向ccflow反馈bug与提出修改升级建议. 4, 积极贡献自己的设计经验与设计心得. 5. 贡献自己的设计的流程模板. 6. 向ccflow提供案例. 有了积分我能做什么? 1,获得ccflow的物资奖励. 2, 获得专家的优先解决问题的权利. 3, 获得更多的流程模板的权利. 4, 获得重要的技术资料读取的权利. 5, 新功能优先通知与获取的权利。 1.10 用铁路局来比喻ccflow. 用铁路局来比喻流程管理系统,工作流引擎,表单. 我们把流程比喻成一个铁路系统,铁路局的结构设置就是ccflow的组织机构,这个组织结构是分级别的,铁道部、各个铁路局,分局。有明细的工作岗位、工作人员。大多工作人员一个一岗位、一人一部门。也有一个多部门一个多岗位的情况。这就是流程运行的组织结构基础,部门、人员、岗位。 铁路局首先要做全局的规划,根据国内对货物旅客的运输要求做一个流程设计方案(ccflow的上线调研),根据需要调整与设置相关的岗位(组织结构的确立)。 比如有一批货物要从北京到济南到上海,这就要设计三个站点(流程设计)。 首先要建立站点,都要设置站点(类于流程的节点),火车运行的目的就是拉货物(类于数据传输), 货物的载体就是车厢(类于表单)。 一列火车必须有一个火车头,这个火车头里有发动机人员驾驶,我们称呼为(系统车厢吧,类于ccflow的节点表单),它可以挂接多个车厢(类于ccflow的流程表单),这些车厢不被使用时它们放在车库里(类于ccflow的表单库)。 火车司机根据运输货物的性质不同(有的是货物,有的是旅客),来决定不同的行车方案,这就是ccflow的流程类型(普通类的、项目管理类的)。 火车在运行时要向外部发送信号,比如离站、到站。火车运行的状态不同的人员关心的内容不同。这些信息可按一定的规则发出来(类于ccflow的消息侦听)。 火车中途可以停止(流程暂停),因为其它问题可以需要倒车(流程的退回),根据不同的情况可以绕道与转向行使(流程的方向条件),需要时可以鸣喇叭(消息发送),可以换司机(工作移交)。火车司机需要经常向领导汇报火车运行情况(工作抄送),因为火车故障需要紧急停车(流程暂停),特殊情况需要撤消本次运输任务(流程撤消或删除)。 对于不同的铁路局的人员对列车(流程)的运行有不同的需求,领导需要查看不同的列车运行情况,正在运行(在途工作)与历史运行的(流程的历史数据),对于铁路服务人员,我关心的是我服务过的,以方便我的工作考核。 做为铁路局的领导,他要经常考虑合理的合理的人员配置问题,他的参考依据就是历史运行的数据。他为了提高每个岗位的运行效率,要设置不同的时限要求。这就是流程的分析与流程优化。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 2 CCFlow的安装 2.1下载ccflow 1, 请下载并安装svn软件,您可以在网络上搜索或者在ccflow官方网站上,加入qq群,在文件共享里可以下载svn。 2, 重启机器。 3, 打开资源管理器,转到d:根目录,点右键。 4, 找到svn checkout 菜单. 中文名词叫 检出。 5, 输入: http://ccflow.googlecode.com/svn/ccflow 检出地址为: D:\ccflow 其它的选项目就不要变化。 6, 点确定按钮。 7, ccflow 里面的文档与源程序,视频文件估计有140m,经常听到网友反映下载有问题您需要换一个网络环境。因为此服务器在国外,经常有dns的问题。 2.2安装文件清单 D:\ccflow\Components 组件目录. D:\ccflow\Components\BP.En30 -- 底层基类. ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 D:\ccflow\Components\BP.Web.Controls30 --bs控件层. D:\ccflow\Components\BP.WFV4 --工作流程引擎层 D:\ccflow\Components\BP.Win32.Controls --cs控件层. D:\ccflow\DLL -- 第三方组件中需要调用dll. D:\ccflow\Documents - 文档 D:\ccflow\VisualFlow --bs工作流程引擎前台. D:\ccflow\VisualWorkFlowServices - 流程服务程序. D:\ccflow\VisualFlowWebDesigner - silverlight流程设计器. D:\ccflow\CCFlowWord2007 - VSTO公文流程. D:\ccflow\ExpandingApplication 行业应用通用代码。 D:\ccflow\Tools 工具 关于: ccflow前台目录结构. D:\ccflow\VisualFlow\Comm --通用功能层. D:\ccflow\VisualFlow\Data -- 应用程序数据目录. 包含一些xml,等等。 D:\ccflow\VisualFlow\Data\Install 与安装有关系的文件 D:\ccflow\VisualFlow\Data\JSLib 系统javascript 函数库。 D:\ccflow\VisualFlow\Data\Language 语言包(完善中) D:\ccflow\VisualFlow\Data\Node cs流程设计器节点类型(cs流程设计器不在发展) D:\ccflow\VisualFlow\Data\XML xml配置文件不仅仅ccflow使用,bp框架也使用它。 D:\ccflow\VisualFlow\DataUser -- 用户数据目录。 D:\ccflow\VisualFlow\DataUser\Bill 单据打印生成数据. D:\ccflow\VisualFlow\DataUser\CyclostyleFile 单据模板数据 D:\ccflow\VisualFlow\DataUser\DtlTemplete 导入明细表模板文件. D:\ccflow\VisualFlow\DataUser\EmailTemplete 自定义邮件发送格式文件. D:\ccflow\VisualFlow\DataUser\JSLib 用户自定义函数库 D:\ccflow\VisualFlow\DataUser\JSLibData 用户自定义函数生成文件。 D:\ccflow\VisualFlow\DataUser\Log 系统日志文件 D:\ccflow\VisualFlow\DataUser\ReturnLog 退回日志文件. D:\ccflow\VisualFlow\DataUser\Siganture 签名文件. D:\ccflow\VisualFlow\DataUser\Style 用户自定义风格文件。 D:\ccflow\VisualFlow\DataUser\UploadFile 表单附件上传文件,单附件,与多附件。 D:\ccflow\VisualFlow\DataUser\XML 用户系统配置文件。 D:\ccflow\VisualFlow\WF\DocFlow -- 公文流程(目前还不是很完善) D:\ccflow\VisualFlow\OA -- 通用oa 组件(目前还不是很完善) D:\ccflow\VisualFlow\SDKFlowDemo -- sdk开发模式的案例. D:\ccflow\VisualFlow\WF\WAP -- 手机访问前台代码目录. (说明:对C级用户有效) D:\ccflow\VisualFlow\WF -- ccflow前台应用程序层(主要的功能都是在这个目录里面) D:\ccflow\VisualFlow\WF\Admin - 对ccflow的管理比如设计方向条件.报表定义... D:\ccflow\VisualFlow\WF\MapDef - 表单定义. ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 D:\ccflow\VisualFlow\ClientBin - silverlight 程序.。 CCFlowDesigner.xap流程设计器,CCForm.xap表单设计器。 2.3环境要求 Window 系列, IIS6.0以上. .net4.0 . silverlight4.0以上. 可选数据库: Oracle(各种版本), sqlsever(各种版本),MySQL(各种版本) 2.4安装步骤 安装设置CCFLOW前,为了保证显示效果,请确认已经安装了 D:\ccflow\Tools下面的iewebcontrols.msi及owc11.exe office组件 安装微软silverlight,目前微软银光的版本为4.0,可以从 http://www.microsoft.com/silverlight/ 下载并安装 ,如果你本机上是4.0以下的版本请删除它在安装它。 0, 确认升级到IE7 以上,并且做如下设置. 1, 菜单->工具->Internet 选项-> 隐私 -> 把打开弹出窗口阻止程序 关闭上,否则一些功能就不能使用. 2, 菜单->工具->Internet 选项-> 常规 -> 浏览历史记录设置-> 选中 () 每次访问此网页时. 单选按钮. 点确定,以避免缓存对程序有影响。 1,使用 svn下载源程序,请查看如下连接。 http://ccflow.googlecode.com/svn/ccflow/ 2,在IIS里面新建一个应用程序池,应用程序池ID号为:ccflow 3, 建立虚拟目录 ccflow在80 端口下 映射目录为 D:\ccflow\VisualFlow\ 执行权限为纯脚本,应用程序池选择为:步骤2新增的应用程序池。 4, 创建数据库ccflow. 1, 建立数据库(不管你用的什么数据库) 比如: ccflow 2, 请看下面第5步骤, 为数据库配置链接. 3, 执行修复&安装数据库工具: http://localhost/ccflow/WF/Admin/DBInstall.aspx 5, 修改 D:\ccflow\VisualFlow\web.config Appsetting 节点中的数据库连接。 如下:【如果使用的是MSSQL数据库,修改数据库的链接的用户名和密码即可】 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 6, 启动流程设计器 BS版本流程设计器路径, Silverlight 版本. http://localhost/ccflow 初始化密码是 pub 7, 启动流程服务: 用来发短信与邮件的服务. 路径: D:\ccflow\VisualWorkFlowServices\bin\Release\VisualWorkFlowServices.exe 把他在桌面上创建一个快捷方式. 2.5常见安装问题 1, 没有把ccflow 作为主目录, 导致一些项目文件找不到位置,强烈建议你放在d:\ccflow 下面. 2, 没有建立应用程序 /ccFlow . 导致仅仅建立了一个虚拟目录,在脚本与执行权限上没有设置<脚本与可执行程序> 3, 在internet 信息服务(iis) 中, web 服务扩展 asp.net v4.xxxxxx 的dll 没有被允许. 4, 没有注册 asp.net 到iis 上. 需要执行如下命令. cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis.exe -ua aspnet_regiis.exe -i 5, 没有配置mime 类型, 导致流程轨迹图,流程设计器不能被使用. 处理方法. 打开IIS->站点属性->HTTP头->MIME类型->新建: 扩展名: .xap MIME类型: xapapplication/x-silverlight 扩展名: .xaml MIME类型: application/xaml+xml 6. 出现用户名及密码错误,请在web.config 文件中删除 userName="administrator" password="jiaozi" ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 7. silverlight 版本不是 4.0以及4.0以上,请先卸了,重新安装。 8. 打开流程设计器时出现密钥错误。 可能有两部分原因: 1. 服务器c:\windows\temp 目录的访问权限不够. 2. 没有在网站跟目录下设置好策略文件,请把D:\ccflow\VisualFlow\clientaccesspolicy.xml 与crossdomain.xml 两个文件放在网站根目录下。 9, 在按下安装一步时,遇到创建表或者数据库的错误。 1, 指定连接里面数据库用户没有权限,导致错误。 2, web.config 中的 数据库类型设置错误. 10. 如果以上方式都不奏效. cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis.exe -ua aspnet_regiis.exe -i 重新安装,就有可能解决,此时可以寻求你的同事解决,已不属于ccflow问题范围了。 2.6 您的系统与ccFlow组织结构表耦合(集成) 组织结构表的概念: 用于控制用户的权限的表都称为组织结构表,比如:操作员、部门、岗位。与ccflow的耦合也就是组织结构表的耦合。 耦合的核心思想: 把ccflow 中的组织表删除了,换成5个数据列结构一样的视图,数据是从被耦合的系统数据库映射回来的。 这样ccflow 在工作时,仍然不会影响。 以一个sql来说明问题。 DROP TABLE Port_Emp /* 删除本机的人员表 */ GO CREATE VIEW Port_Emp /* 创建人员视图表 */ AS SELECT BH AS No, MC as Name, bumenbianhao as FK_Dept, Password as Pass FROM ERP.dbo.Yonghu ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 GO 2.6.1耦合说明 在应用过程中,您的应用系统与ccflow数据库是分开的,应用示意图如下。 应用界面是整体的通过网页框架把流程功能界面嵌入您的应用系统里面。 您的业务系统数据库 Ccflow业务系统数据库 您的应用系统 Ccflow前台应用系统 在ccflow系统中有如下5个组织结构表。 表英文名称 中文名称 字段说明 Port_Station 岗位 岗位编号No, 名称Name. 岗位级别: int枚举类型 0,高层岗1,中层岗,2执行岗 Port_Dept 部门 No 部门编号 Name 部门名称 Port_Emp 人员 No,编号 Name,名称 Pass,密码 FK_Dept,所在部门编号 SID,登陆安全ID Port_EmpStation 人员岗位表 FK_Emp 人员编号 FK_Station 岗位编号 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 Port_EmpDept 人员部门表 FK_Emp 人员编号 FK_Dept 部门编号 与驰骋工作流耦合,主要是用户表,部门表,岗位表,用户与部门对应表,用于与岗位对应表。对应的表结构。 耦合的过程就是不使用工作流引擎中的表,而使用视图数据。 2.6.2编号规则 部门编号人长度决定着数据访问权限,比如: 部门编号 部门名称 01 集团总部 0101 集团财务部 0102 公司1 010201 公司1市场1部 010202 公司1市场2部 数据访问规则是,集团总部下面的人员可以产看整体数据。公司1人员可以查看公司1人数据,不可以查看其他部门的数据与他的上一级数据。 2.6.3岗位表Port_Station 岗位表 Port_Station 编号的长度需要是2的倍数。 中文名称 英文名称 描述 编号 No 名称 Name 说明:岗位表也可以成为角色表、用户组,岗位人编号规则概念部门的编号规则长度相同。 2.6.4部门表Port_Dept 中文名称 英文名称 描述 编号 No 名称 Name 部门编号的长度需要是2的倍数。并且有清晰的隶属关系,比如:部门编号为0103的部门隶属于部门编号为01的部门。 2.6.5人员表Port_Emp 中文名称 英文名称 描述 编号 No 名称 Name ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 密码 Pass 部门 FK_Dept 与Port_Dept 对应 验证码 SID 登陆时间的随机号 2.6.6人员部门对应表Port_EmpDept 中文名称 英文名称 描述 人员 FK_Emp 对应Port_Emp.No 部门 FK_Dept 对应Port_Dept.No 2.6.7人员岗位对应表Port_EmpStation 中文名称 英文名称 描述 人员 FK_Emp 对应Port_Emp.No 部门 FK_Station 对应Port_Station.No 2.7 系统配置 2.7.0 WebConfig配置 D:\ccflow\VisualFlow\Data\XML\ WebConfigDesc.xml 里有详细的描述。 2.7.1 PC访问主菜单配置 如下图: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 文件位置:D:\ccflow\VisualFlow\DataUser\XML 显示效果 2.7.2 移动设备访问主菜单配置 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 2.8把CCFlow集成到GPM 2.8.1什么是GPM? GPM系统是cc向社会免费提供的开源的权限管理系统,它是cc家族产品与外部系统的桥梁,如果您的系统集成了GPM,那么您就可以与cc家族的其它产品都集成成功了。 CC家族产品都可以独立运行的。 关于更多的GPM系统信息请参考: D:\ccflow\BPFrameWork\驰骋权限管理系统GPM使用手册.doc 2.8.4如何把ccflow集成到GPM? 如果您已经使用上了ccflow,请先bak您的数据库,然后组织结构表导入GPM里面去。 下面以SQLSERVER 为列来说明如何集成到GPM USE ccflow GO DROP TABLE Port_Dept; DROP TABLE Port_Station; DROP TABLE Port_Emp; DROP TABLE Port_EmpStation; DROP TABLE Port_EmpDept; /* DROP VIEW Port_Dept; DROP VIEW Port_Station; ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 DROP VIEW Port_Emp; DROP VIEW Port_EmpStation; DROP VIEW Port_EmpDept; */ GO CREATE VIEW Port_Dept AS SELECT * FROM GPM.dbo.Port_Dept GO CREATE VIEW Port_Station AS SELECT * FROM GPM.dbo.Port_Station GO CREATE VIEW Port_Emp AS SELECT * FROM GPM.dbo.Port_Emp GO CREATE VIEW Port_EmpStation AS SELECT * FROM GPM.dbo.Port_EmpStation GO CREATE VIEW Port_EmpDept AS SELECT * FROM GPM.dbo.Port_EmpDept GO 2.9 把消息写入驰骋即时通讯CCIM 在ccflow运行过程中会产生很多的消息,比如:待办、退回、转发、流程侦听、抄送。这些消息需要通过一定的方式传(比如:邮件、短信、内部消息、移动设备、即时通讯)递给相关人同处理。 本章节介绍如何把ccflow的消息写入驰骋即时通讯CCIM。 步骤如下: 第一步:要把ccflow集成到GPM中,请参考上一章节。 第二步:启动流程服务,把写入CCIM的开关打开。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.流程设计&功能 3.1流程创建 3.1.0 流程设计器的基本操作 1, 连接线,把鼠标放在节点中间,按下然后拖拽,设计器就会以节点为中心画一条虚线,还有一个箭头,您可以连接到目标节点上去。 2, 在节点上可以右键执行对该节点的基础操作. 3, 在连线上右键可以设计方向条件. 4, 标签没有任何计算作用只是用来标示说明流程. 3.1.1流程的基本元素 节点、连接线、标签:构成的流程设计的界面基本元素。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 部门、岗位、人员构成了组织结构,是流程运行的基础。 流程考核,报表定义,数据查询,工作质量成本分析是流程运转的延伸应用。 3.1.2 CCFlow流程模式 流程模式就是流程运行的模式类型,ccflow 目前支持的类型有线形流程、父子流程、同步分合流、异步分合流。 我们所分析的流程一般都是从这4种流程模式上延伸出来的,或者说都是它们的变形。 3.1.3创建简单的流程步骤 第一步:画出流程图。 第二步:设计表单。 第三步:设置方向条件。 第四步:设置节点访问权限 第五步:检查并运行流程。 这类的流程被一个人发起以后,整个流程的生命周期,在同一个时间点,只能有一个人处理,不存在多线程问题。所以这类的流程的轨迹是一根线。我们称为线性流程。 3.1.4 流程检查的作用 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 在流程设计器的工具栏目中有流程【检查】按钮,此功能为我们处理如下内容。 1, 检查流程是否有基本的设计问题,比如:是否设置的岗位,人员,该岗位下是否有人员。 2, 检查是否在流程分支时增加了方向条件。 3, 为每个节点表修复字段。 4, 修复流程报表表NDxxxxRpt表。 5, 修复查询视图。 我们会在以后为此功能增加更多的用途。 3.1.5节点方向与节点的方向条件 技术信息:节点方向存储在WF_Direction表里,节点的方向条件存储在WF_Cond表里。 节点的方向条件类型分为三种分别为:按节点表单字段计算,按岗位计算,按部门计算,将来会提供按SQL计算。每种类型应用在不同的场合里。 按节点表单字段值计算:这是通用的一种常见的计算方式,比如:报销金额、请假天数、一个枚举类型的值。Ccflow在运行时判定设定的条件是否成立。 设计技巧:对于方向条件判定比较复杂的情况,你可以为表单设置一个隐藏的字段或者一个隐藏字段或者一个枚举类型的值,这个值在是动态的计算出来的,来解决转向的问题。 按岗位设置方向条件:就是按当前操作员具有什么样的岗位才能执行此操作。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 说明:上图中一个请假流程,不同岗位的人员所走的请假路线是不同的。只要当前的操作员具有该岗位这条路线对它来说是通的。 按部门计算:与按岗位计算相同。 方向条件优先级设置:因为每一个方向都已经设置上了方向条件,ccflow在执行的过程中是按一定的顺序来取这些方向条件。如果判定了这个条件成立,ccflow就会认为这条方向是通过的从而放弃判断其它的条件。 在特定的场合下,方向条件的优先级别的判断非常重要的,比如:一个人既是科长岗位,又是科员岗位,在岗位条件判定中要优先判定他的科长岗位路线。在节点表单字段判定方式也是如此。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.2流程属性 3.2.1流程属性解释 属性 说明 编号 编号从001开始,最大999,是一个三位数据的字符类型的编号。 流程类别 该流程属于那个类 名称 流程的名称,全局唯一不能重复。 是否启用 该流程是否启用它,通常用于流程的生命周期中,对有数据的并且不准备用的流程打上不能启动的标记。 运行方式 详见本章节中流程高级开发. 运行内容 配合运行方式一起工作。 是否可以独立启动 如果此流程在运行就启用它,不运行就不启用 它,可用于流程的历史版本管理,也可以因管理的需要,设置它。 备注 导航URL 是在发起流程时的要点的连接,如果为空就表示直接启动流程,MyFlow.aspx?FK_Flow=xxx&FK_Node=xxx。 如果你指定了这个连接在发起界面连接上,就直接转向您指定的连接上去,您的页面可以进行二次业务处理在转到MyFlow.aspx上来。 比如:合同修改流程,要发起这个流程首要的界面是要呈现一个合同列表,用户选择这个列表后,在转入流程发起。这个合同列表界面就是一个流程发起列表界面与流程启动界面一个缓冲。 流程应用类型 是说明流程类型,如果没有特殊的指定,就是正常的流程。 工程类型的流程是ccflow的一种特定的流程,它有项目组的概念,什么是工程类的流程请baidu ccflow 工程类型流程。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.2.2流程相关功能 3.2.2.1检查报告 检查流程的设计是否完整。如果出现红色的提示,表明流程设计错误,根据错误提示去处理。 3.2.2.2设计报表 基本知识: 视图就是把一个流程中的各个表连起来,组合成新表,提供用户查询。 视图仅仅提供对流程数据的查询、分析。用户不可以修改这些数据。 各个岗位关心的数据项目不同所以系统允许设计多个视图。 设计完成一个视图后,就可以利用4个视图组件来发挥视图的数据作用。 定义完的流程都反映在前台流程报表的菜单中。 视图的组件: 查询组件:提供给用户数据查询,双点查询的行可以实现卡片数据显示。 分组分析: 提供给用户分组分析、用户可以根据自己的需要任意组合分组条件、分析的内容。实现三种图形分析,极其方便灵活、所有的组合可能都可以完成。 对比分析:在数据分析中,我们经常遇到客户要查看一个部分的,一项数值指标升高或者降低了多少. 升高或者降低比率是多少? 这个组件,让你完成任意的可能发生的组合。满足多种对比分析的需要。 交叉报表:利用这个组件您可以完成多纬度的交叉报表,实现任意可能的分析情况。 视图的访问权限: 视图有查看的权限,所以在设计视图时,需要定义岗位访问权限与人员访问权限。 视图的设计: 选择字段:系统列举了该流程上的所有的字段,选择字段后确定。 字段派序:您可以利用向上、向下的箭头进行对字段排序。 字段命名:您可以对字段中文命名。 查询条件:用于显示在组件上的查询条件。 3.2.2.3删除数据 删除当前流程运行的数据,不删除流程。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.2.3流程的运行方式 请参考:本章节的如何设置流程的自动发起。 3.3节点属性 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.3.1基本属性 节点属性 描述 流程步骤 需要手工的维护,系统无法自动计算每个节点在流程中的步骤。 名称 节点名称。 是否允许分配工作? 发送下一步骤时,比如n个人可以处理,是否允许发送人指定人员进行处理? 是否可以强制删除子流程 对于分合流有效,如果到了规定的完成时间,对于未完成的子流程是否可以强制被合流上的操作人员强制删除。 是否可以在退回后原路返回 请参考退回规则 是否起用投递路径自动记忆功能? Ccflow具有投递路径自动记忆功能。 比如:A节点向B节点发送,B节点上有三个分管副局长可以审批,但是每个副局长分管的业务不同,所以此人需要在第一次指定一业务副局长去审批,这叫工作分配。在默认的情况下此次的分配操作会自动记忆下来,在次A向B发送时会自动投递到分配的而不用在分配了,当然A节点上的操作人员可以重新指定人员。这种功能ccflow称为自动记忆投递路径。 但是并非在所有的场合下都需要此功能,所以这里是一个开关是否要起用这个功能。 3.3.1.1焦点字段 应用场景: 如下流程图是一个典型的对附件的审批流程,起草人发起一个标准文件,经过各部门审批,意见征集(分合流),各部门汇签(分合流)。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 在工作日志中,用户希望看到日志记录每次审批意见,如果有多次退回,多次审批意见,个是什么。如下图: 如何让ccflow要知道记录表单的那个字段,这个字段可能是审批意见也可能是备注。如果您不设置它,ccflow就记录不上。 解释说明: 节点属性中的焦点字段是用来处理记录一个表单中重要的字段,比如:一个审批表单中的审批处理意见字段,对这个表单来说他非常重要,在流程中我要记录这个字段作为此节点的审核信息。 并非所有的节点都要设置焦点字段。 如下功能中用到焦点字段,工作日志、转发、退回。 在工作日志中应用: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 如果您为此节点设置了焦点字段,系统在日志记录时,就会记录到日志中去。如果没有则不记录,如果对一个审批流程来说,记录每个节点的审批意见记录工作日志非常中要。 在转发中应用: 如果设置了焦点字段,用户就可以在当前表单上在这个字段上填写意见,按下转发按钮后这个字段的数据就会被带到转发功能界面里去,符合操作习惯。 在退回中应用: 同上。 在流程检查中体现: 你在节点属性中设置了这个焦点字段A,由于当前节点的表单变更丢失了字段A,那么就会检查错误。 3.3.1.2访问规则 就是下一步工作人员的接受人范围处理规则。 如何设置下一步的接受人范围,是我们研究的难题, 到目前位置,ccflow 为您提供了如下几种模式. 说明: 1, 下列设置类型,都设置当前节点作用于下一步节点。 2, 每一种类型,都有路径自动记忆功能,所说自动记忆功能是当节点第一次向下一个节点投递时,它把要投递的人记录下来。 如果你执行了分配系统就把分配的人员,做为接受人员计算. 可以设置的投递的类型: 按岗位: 设置方法: 在下一个节点上的节点属性里,设置节点岗位。 这是默认的投递规则,他是在下一个节点设置岗位时按照岗位计算. 他的计算方式,首 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 先按照当前操作员的部门范围计算。 如果该操作员部门下没有这个工作岗位的人员,ccflow 就会把当前操作员的部门级次提高一个级别,在寻找,依次计算。 理解了这个算法,你就不难理解为什么,本部分的业务,只能让本部门的经理审批了. 举例说明: 一个省机关下面有n个县,n个市,n个县. n个所. 一个所员受理人员的业务,只能让自己的所长审批,所长的业务只能投递到本区县的相关业务部分审批,而非其它区县业务部分审批. 这就是岗位的权限与部门权限的交叉形成的被投递的人员集合. 这就是ccflow经常说的. 岗位:表示能做什么事情。 部门: 表示能做那里的事情 。 岗位+部门: 表示一个操作员能做那里的那些事情. 按部门: 设置方法: 在当前节点上的节点属性里,设置节点岗位. ccflow 会按照你指定的部门下面的人员,进行投递, 就是这个n个部门下面都可以接受这个工作. 这个类于发送邮件的按照邮件组进行发送. 按SQL: 设置方法: 在当前节点属性里 [接受人SQL]设置一个sql 语句. 这个select 查询语句有两个列. No,Name 分别表示,操作 编号, 操作员名称. 这个sql可以有参数. 比如: 1, SELECT No,Name FROM PORT_EMP WHERE FK_Dept=@WebUser.FK_Dept 查询出来当前操作员中的部门下的所有人员. 2, SELECT No,Name FROM dbo.xxxx.YourTable WHERE 字段名称=@表单字段名称. 从您的业务系统中,查找一组人员,变量可以是当前节点字段的编号,格式为 @+字段英文名称. 按指定的人员: 设置方法: 在当前节点属性的相关功能里 [接受人员]功能, 设置一批操作人员,当前节点向下一步发送时系统就会按照当前设置的范围投递。 这种场合应用于,特定的条件下, 一些特殊的临时的岗位不系统管理员不愿意去设置,而是直接选择投递到具体的人员. 由发送人选择: 设置方式: 此此节点的上一个节点中启用【接受人】按钮,本步骤设置按接受人选择,上一个用户在发送前通过点【接受人】按钮选择指定的接受人(类于发送邮件时的接受人员选择)。 选择此项后系统就会自动在功能按钮栏显示一个选择接受人功能按钮。 技术细节: 1, 当前节点的上一节点会有选择人的范围过滤问题,如果您在此节点上设置了岗位集合ccflow在上一个节点弹出选择人的对话框时,就会按当前的岗位集合来过滤人员。 2, 在当前节点的上一个节点可能存在多个节点点分支。这个时间打开选择接受人对话 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 框,就会出来首先要用户选择到那里去,然后在列出为这个节点的人员来。 按表单人员: 设置方式: 在设置节点表单时, 增加一个字段 FK_Emp, 这个下拉框中是操作人员列表。这个字段可以是隐藏的字段。 运行方式: 当前操作员进入工作操作界面时,它就会看到一个下一步人员选择的下拉框,选择期中的一个人员后,ccflow 就会按这个人员做下一步骤的工作投递. 按岗位与部门交集计算 设置方式:在节点岗位,节点部门都设置。 运行方式:ccflow会取既具备此岗位集合的又具备此部门集合的人员,做为本节点的接受人员。 按指定节点岗位计算 应用场景:为一个单位设置一个设备维修流程,此单位下分好多部门,有一个IT部门负责计算机设备维修。每个部门的成员如果有设备维护的需要,首先填写一个单子向这个IT部门的受理人员发送详细的故障说明。IT受理人员接受到此请求后,根据情况发送到该发起人的部门领导那里去。 这是简单的三个步骤,发起-》IT部门受理-》发起的部门负责人审批。 第一步骤基层人员发起,第二步骤是IT受理岗 人员受理。第三个步骤中层领导审批。在第三个节点访问规则就是按按指定节点岗位计算。因为如果按岗位计算在第二步骤就要发送给IT部门经理审批而非发起人的部门经理审批了。默认的按岗位计算就是按上一个节点的岗位计算,现在的应用场景就是要按指定的节点岗位计算了。 设置方式: 在接受对象中设置一个节点编号比如:101。 运行方式:ccflow在处理接受人时,会按指定节点上的人员身份计算,而非按上一步骤的人员身份计算了。 其它:这种方式是对按岗位计算的补充。 3.3.1.3完成通过率 对于分合流有效,分流点发送给n个人,当完成率为多少时才能够流转到下一步骤。更多的计算方式,请搜索:”ccflow 流程完成率”。 3.3.1.4运行模式 节点在流程中运行的模式:节点模式分为普通,分流,合流,分合流、子线程。 分流点:它发送时n个操作人员都可以接受。 合流点:n个操作人员把采集的数据发送到此节点上。 分合流:既是分流也是合流, 我们称为分合流。 如何设计分合流请参考录像与视频。 <> ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.3.1.5表单类型 目前为止 ccflow 流程引擎设计器支持如下几种表单类型. 傻瓜表单 自由表单 自定义表单 SDK表单 禁用(对多表单流程有效) 每种表单类型意义如下: 傻瓜表单: ------------------- 由4列与字段分组构成,它的格式固定一列说明,一列控件,一列说明一列控件。配以字段分组可以解决字段排列的问题。 详细请参考: http://tieba.baidu.com/club/10786496/tupian 傻瓜表单设计器相册 自由表单: ------------------- 可以自己按照自己的布局生成的表单,这种表单格式灵活,控件丰富. 详细请参考: http://tieba.baidu.com/club/10786496/tupian 自由表单设计器相册 自定义表单: ------------------- 这种类型是解决我自己画一个表单,如何嵌入到ccflow里工作。 如果您的系统已经有了自己的表单可以把此表单的url 输入到指定的文本框中. 比如:您输入的是 http://localhost/MySelf.aspx?aa=xxx 系统在调用时就会是 http://localhost/MySelf.aspx?aa=xxx&WorkID=123&FK_Node=101&UserNo=zhoupeng&SID=xxxxx ccflow自动的加入相关的信息传递给您,你需要获取这些参数进行处理. 你的表单需要进行如下改造. 1,接受来UserNo, 与SID 参数用来校验访问的用户是否合法. 2,在表单的主表中增加一个字段 WorkID 表示这个流程的唯一主键标识,当然你也可以保留已经有的主键。根据这个WorkID 来判 断是否需要增加、更新主表的数据。 3,接受FK_Node 参数它表示节点ID,的示流程运行到什么位置了,从而进行相关的权限判断。SDK表单 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 ------------------- 如果您采用应用dll的模式开发您的工作流程系统那就采用这种方式,这种方式的特点: 1,引用dll,调用开发接口。 2,自己编写表单格式,处理表单业务逻辑,并且自己托放发送,保存,退回,转发,删除按钮。 3,在每个流程功能按钮下填写业务逻辑外,还要编写调用流程接口方法。 比如:调用发送方法. /* string msg = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow,this.WorkID,this.GenerWorkInfo()); msg = msg.Replace("@@", "@"); msg = msg.Replace("@", "
@"); this.Alert("发送提示", msg); */ 事例路径: D:\ccflow\VisualFlow\SDKFlows\QingJia 禁用(对多表单流程有效) 也叫禁用节点表单, 就是不使用节点表单仅使用流程表单。 3.3.1.6成功发送后转向方式 在节点成功发送后有如下处理方式: 0 提示ccflow默认信息 系统提示详细的发送信息,包括下一步的接受人。。。 1 提示指定信息 按照您定义的信息提示给用户。此选项需要在[转向处理内容]文本框里输入提示内容。 2 转向指定的URL 按照您定义的url转向,此选项需要在[转向处理内容]文本框里输入url。 3 按照条件转向 在相关功能里定义转向条件。 其它: 利用此属性您可以个性化提示信息。可以在流程处理完成后转向指定的url,也可以根据表单的字段的值转向指定的url。 比如:父子流程,当子流程启动起来之后,就可以利用此项功能转到父流程节点上去。 在子流程完成后,从子流程转向父流程配置案例: 1, 打开子流程的最后一个节点属性界面,设置成功发送后转向方式,为3,既:转向指定的url ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 2, 在转向处理内容输入一个url MyFlow.aspx?WorkID=@FID&FK_Flow=021&FK_Node=2116 , 当这个节点完成后,它就会转向这个url。 启动一个新流程的事例: MyFlow.aspx?FK_Flow=021&FK_Node=2101 , 当前节点上所有的数据将会根据同名字段,进行copy过去,包括明细表、附件信息。 经过如上的配置,子流程在完成后就转向父流程的节点了。 3.3.2按钮标签 为什么要控制前台的标签按钮? 我们知道按钮的标签文字都是一个名字,但是这个名字不一定适合用户的要求。 比如在请假流程有三个点,发起流程,部门经理审批,人事备案。 1, 在开始节点的 [发送] 按钮名词就比较专业化,如果修改成[发起请假流程]就比较贴切。 2, 在第二个节点 [退回] 如果修改成[退回给发起人] 就比较让人容易看懂。 3, 在人事备案节点上,如果不需要[退回]按钮,可以禁用它。 特别说明:以上设置对于采用潜入方式开发有效,如果采用sdk模式开发,这些设置不起作用。 有两个重要的权限控制,分配是退回规则与附件权限,请参考下章节。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.3.2.1退回规则 退回规则在节点按钮标签栏目中的退回标签设置。 不能退回: 当前节点不能执行退回功能。 只能退回上一个节点: 只能退回上一个节点,从那里发送来的,就退回到那里去。 可以退回以前任意节点: 不限制退回的节点,但是退回的节点必须是当前节点以前的节点。 可退回指定的节点: 退回指定的节点,此功能需要在流程属性中的可退回的节点中设置它。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 其它: 执行退回后,系统都会向执行人发送消息,发送对象仅限于上一节点的执行人员。Ccflow如何处理流程退回过程的数据的完整性? 流程在退回时,有一段流程数据就是从当前点到退回点的所做的工作,这部分节点的数据如何处理成为了我们要探讨与取舍的难点。 以请假流程为例,申请人发起,部门经理审批,总经理审批,人力资源归档。如果总经理退回到第一个点,可以解释为,部门经理做的无效的工作,此部分工作需要删除,在3.0以前的版本,ccflow都是这样的处理的,这样的解释也是用户所接受的。 但是在其它的流程就不能这样解释了,因为他需要保留历史痕迹,并且在退回后有如下可能要发生。 1, 退回到指定的点后,发起人删除流程。 2, 退回到退回节点后,发起人修改表单后发送,按原节点发回来。 3, 退回到退回节点后,发起人修改表单后发送,经历与其它的路线步骤到当前点。 4, 退回到退回节点后,发起人修改表单后发送,该走其它的路线不经当前点。 基于如上可能性的发生ccflow,做了如下处理。 1, 退回阶段流程数据写入txt 文件里,放在D:\ccflow\VisualFlow\DataUser\ReturnLog 2, 增加了流程报告与节点的焦点字段功能,系统把每一步骤的操作都记到日志表里了,通过焦点字段的配合,可以让操作员方便明晰的看到轨迹。 Ccflow4.5通过如上两个方法解决退回数据的完整性问题。 与节点属性中的 [是否可以退回并原路返回?] 配合使用 应用场景:一个流程走过了ABCDEFG几个节点,在G节点上发现要退回给B节点上去,还期望B节点的人员完成后直接发送给G节点上来,这种应用场景就是是否可以在退回后原路返回。如果是直接退回并不原路返回,那么ccflow将会删除退回点与退回到点中间的数据,否则就不删除它。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 -- OVER --- 3.3.2.2跳转规则 应用背景: 对于一个各项制度未成熟的单位,各种随机发生违反流程规则的都有可能存在,但是这种行为在当时的管理条件下也是不得已的。流程设计人员在流程设计中未考虑到,或者认为非法的路径在现实的管理活动中需要体现出来。 这就要求流程引擎能够运行指定的节点在可以跳转到指定的位置中去。 跳转规则: 1, 不允许跳转。 2, 只能向后跳转 3, 只能向前跳转。 4, 任何节点跳转。 5, 跳转指定的节点。 目前ccflow支持以上5种跳转规则,跳转指定的节点,可以在节点的基本属性里书写一个sql表达式。查询的结果必须有两列,节点编号,与节点名称,顺序不能变化。 如何设置跳转规则? 第一步:在允许跳转的节点打开节点属性,如下图: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 根据自己的业务需要选择一种跳转规则: 显示效果: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 按下跳转按钮,系统自动显示出来根据跳转规则能要跳转的节点。 跳转操作界面: 3.3.2.3抄送规则 关键字:工作流引擎 抄送规则设计 需求背景:在流程运转过程中,把关心流程数据的人员分为流程内部人员,与流程外部人员。流程内部人员就是参与流程的工作人员,流程外部人员就是关心流程运行的人员。比如:低于于5000元的报销单据不需要董事长审批,但是董事长如果要求需要知道。这就需要ccflow在总经理审批后向董事长抄送一份,这就是抄送。董事长不参与整个流程的运转。 ccflow设计:根据用户的需求抄送的内容为:标题、信息内容、工作报告、流程轨迹图。 操送规则:不抄送、手工抄送、自动抄送、手工与自动抄送并行。 在节点属性里设置抄送规则 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 说明: 不能抄送:就是不显示抄送按钮。 手工抄送:可以打开抄送功能界面填写信息进行抄送。 自动抄送:需要设计抄送规则才可以进行。 手工与自动:两者并行。 自动抄送设置(在节点属性的相关功能里): 控制方式: 按岗位:抄送的范围设置岗位内的人员。 按部门:抄送的范围是设置的部门人员。 按人员:抄送的范围是指定的人员。 按SQ: 在sql表达式里设置一个对操作员查询语句包含No,Name两个列,ccflow就会认 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 为这是您的抄送范围。 抄送标题与抄送内容:就是信息标题,与信息内容,支持变量表达式。其中@Accepter 就是接受人,这是特殊的变量。 操作效果 发送时: 进入看到抄送界面: 打开详细信息数据: 抄送执行顺序: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 在工具栏点抄送按钮,选择抄送人,填写抄送信息,点执行抄送按钮。 3.3.2.4文件附件(对傻瓜表单有效) 略 3.3.3考核属性 以上是对考核信息的设置,因为考核来说各个单位规则都不相同,模式也不想同。所以ccflow只记录此部分的设置。具体的时效考核与质量考核的开发由二次开发人员来决定。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.3.4相关功能 相关功能:请看左边的菜单栏目,以下是分别介绍与当前节点有关系的相关功能。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 节点岗位 用来控制可以访问以节点的工作岗位,那些岗位可以访问此节点处理此节点的工作任务。如果此节点是开始节点,那就是那些人员可以发起工作。 注意:当投递规则中,设置按岗位投递才有效。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 节点部门 用来控制可以访问以节点的部门,那些部门可以访问此节点处理此节点的工作任务。如果此节点是开始节点,那就是那些人员可以发起工作。 注意:当投递规则中,设置按部门投递才有效。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 接受人员 用来控制可以访问以节点的人员,那些人员可以访问此节点处理此节点的工作任务。如果此节点是开始节点,那就是那些人员可以发起工作。 注意:当投递规则中,设置按人员投递才有效。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 可调用的子流程 处理父子流程时用到 现有一个主流程,一个或者多个小线程流程. 主流程在运行到指定节点时,它可以停留在这里可以一次或者多次唤起其它的流 程。我们把这样的流程称呼为主副流程. 唤起流程的节点,我们称为唤起节点. 如何设置这样的流程,你可以在节点属性里, 选择要关联的子流程. 关联之后,需要诊断一下. 这个调用链接就会显示在表单的下方. 如何进行二次开发对于这样的流程, 请等待一下二次开发问题. 要想进行二次开发你需要很熟悉ccflow的运行表结构. 开发注意事项: 1, 唤起节点的表单数据可以copy 到被唤起流程的第一个节点上. 2, 如果以前已经唤起过的流程没有运行下去,那么这个调用就会把上次没有发起的子流程掉起来。 3, 如果没有的话就可以看到已经发起的流程列出来. 4, 被调用起来的流程不能是多线程流程,(其实这个是不合理的约定), 因为FID 已经被占用了. ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 可退回的节点 一个节点的退回,是具有一定的规则的。这个规则在节点属性里可以设置。当节点的退回规则定义为可以退回指定的节点时才效。 关于节点的退回规则,请参考节点属性章节。 在这里是定义当前节点可以退回到的节点集合,在实际应用中,并不是所有的节点都可以退回。 其他:如果指定的退回此节点以后的节点会无效,比如你指定了未到达的节点。 关于退回规则请参考: 本章节的节点属性-》按钮标签-》退回规则。 单据打印 什么是单据打印? 需要制作一个单据模板,通过上一个界面绑定在节点上才能实现单据打印。 1, 一个节点表单可以打印多个单据。 2, 单据必须是 rtf 格式的文件。 单据模板. 单据模板的制作方式,与单据规则我们先看一个描述就明白了。 此模板位于:D:\ccflow\VisualFlow\DataUser\CyclostyleFile\单据打印样本.rtf 单据模板事例 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 以下是基本的字段输出 ------------------------------------------------------------------------- 普通类型字段输出: 文本输出 : 输出内容: 按文字输出. 文本输出 :<RDT> 输出内容: 2011-05-11 日期文本输出 :<RDT.NYR> 输出内容: 2011年05月11日 金额文本输出 :<baoxiaojine> 输出内容: 101.123 金额人民币输出 : <baoxiaojine.RMB> 输出内容: 101.12 金额人民币大写输出 :<baoxiaojine.RMBDX> 输出内容: 壹百零壹元壹角贰分 布尔类型数据输出: <IsPass> 输出 0 布尔类型数据转意输出: <IsPassText> 输出 否 布尔类型数据转意输出: <IsPass.Yes> 输出 [X] 布尔类型数据转意输出: <IsPass.No> 输出 [V] 以性别为例 枚举类型输出: <XB> 直接输出 1 枚举类型输出标签: <XBText> 直接输出 男 以部门为例 外键类型输出: <FK_Dept> 直接输出 01 外键类型输出标签: <FK_DeptText> 直接输出 总经理室 签名:<Rec.Siganture> 以下是表格的明细输出: 报销内容 单价 数量 小计 <Dtl.BXNR> <Dtl.danjia> <Dtl.shuliang> <Dtl.xiaoji> ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 合计 <Dtl.shuliang.SUM> <Dtl.xiaoji.SUM> 单据打印的调用方式 默认调用方式: 在节点发送成功后,ccflow就会生成表单单据,发送提示界面就会提示单据打印连接。 外部接口调用方式: 对于傻瓜表单来说可以通过,写一个调用外部接口的方式调用表单。对于自由表单来说可以增加一个button 让这个button 执行一段js脚本调用。 调用URL : ./WorkOpt/PrintDoc.aspx?FK_Node=@FK_Node&OID=@WorkID。 单据打印常见问题 1, 乱码. 输出的格式是乱码。 原因:是你的格式文件中有西文字符。 解决办法:全选模板数据,字体,选择宋代或者其它的中文字段。 2, 字段没有别替换掉。 原因:两个尖括号的标记中间有其它的字符,导致ccflow未识别你的标记。 解决办法:用写字本打开模板文件,搜索字段名,定位到节点标记位置。原来可能是< MyField > 替换成 <MyField>。 就可以解决问题了。 3, 明细表未输出。 原因: 解决办法: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 调用外部接口(傻瓜表单有效) 特别说明: 对傻瓜表单有效:如果在当前的节点执行相关功能时,可以配置功能连接在这上面。 外部接口的定义是什么? 在自由表单设计器中,已经有了按钮元素,可以替代此部分的功能。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 消息收听 什么是消息收听? 消息收听,在流程运行时,向指定的节点处理人发送消息。收听消息的点叫做侦听点.被收听的点叫发送点。消息接受有三种方式:短信、邮件、邮件+短信. 比如:财务报销流程中, 发起流程人要在第一时间知道部门经理审批内容、总经理审批内容. 如果财务审批通过了,我就可以第一时间到出纳那里领取报销款。 流程引擎中贯穿了这样的消息机制,就可以把每个岗位上的人员有机的连通起来,协调起来,使整个单位的整体工作效率更高。 此消息收听机制就可以解决此问题。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 如何设置消息收听? 1, 选择侦听节点,找节点属性 (在节点属性里,点消息收听按钮,系统弹出消息收听设置的对话框。) 2,点设置消息收听。 3,设置收听内容格式. 4, 在当前节点设置收听的节点,意义是当前人员收听指定节点发送来的信息。 消息设置内部支持系统参数,类似于单据设置。 比如: 标题设置: 您的借款申请已经被总经理@Rec审批通过,核准借款金额为@JieKuanJier。 @Rec, @JieKuanJier 就是变量。 发送成功转向条件 3.4父子流程的设计 一个流程的一个节点,因工作的需要调起另外的n个子流程时。 现有一个主流程,一个或者多个小线程流程. 主流程在运行到指定节点时,它可以停留在这里可以一次或者多次唤起其它的流程。我们把这样的流程称呼为主副流程,也叫父子流程。唤起流程的节点,我们称为唤起节点。 调用子流程有两种方法: 1, 手工设置连接: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 在表单中增加一个Linke ,指向工作发起界面,事例: MyFlow.aspx? FromNode=403&FromWorkID=@OID&FK_Flow=001&FK_Node=101 以上事例说明了,在节点403上启动流程001。 父亲流程的ID用@OID 获取。 2, 关联流程: 如何设置这样的流程,你可以在节点属性里, 选择要关联的子流程。关联之后,需要诊断一下。 这个调用链接就会显示在表单的下方。 如何进行二次开发对于这样的流程, 请等待一下二次开发问题. 要想进行二次开发你需要很熟悉ccflow的运行表结构。 开发注意事项: 1, 唤起节点的表单数据可以copy 到被唤起流程的第一个节点上. 2, 如果以前已经唤起过的流程没有运行下去,那么这个调用就会把上次没有发起的子流程掉起来. 3, 如果没有的话就可以看到已经发起的流程列出来. 如果要实现自动转向,或者带有条件的转向,子流程你需要查看节点属性,如何配置它,请参考节点属性。 3.5同步分合流程的设计 3.5.1设计基础 设置步骤: 在节点1设置节点类型为分流,节点3设置节点类型为合流。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.5.2如何把子线程的数据汇总到合流节点表单中去? 对于分合流程来说,一般的模式就是分流 – 子线程 – 合流。通常是分流点与合流点是同一个人处理。比如:事例中的部门负责人启动分流让本部门的成员填写同一格式的工作日志,然后汇总到部门经理身上。 现实的业务需求是合流点要看到每个子线程的工作内容,如何处理把子线程的数据汇总到合流节点表单中去? CCFlow 为您提供如下两种方案: 1, 使用ccflow内部的约定规则:在合流点上创建一个明细表,明细表的字段与子线程节点表单字段对应,这样才确保可以复制,在合流节点表单上的明细表的属性里设置是分流节点汇总表. 这样的话每一个字线程完成后就向这个明细表中插入一条数据,并把子线程节点表单的数据按照字段对应关系copy到明细表的一行记录中。(在案例库中有这个事例) 2, 利用子线程的节点事件:在了线程发送成功与撤消的两个节点事件中向指定的表写入数据,一般是向合流节点表单写入,以满足您的特殊要求。在发送成功时插入数据,在撤消时删除数据。 第一种方案适用于大众情况,第二种方案需要写存储过程可以处理复杂的业务逻辑。 3.5.3 如何把子线程明细表数据汇总到合流明细表数据上去? 关键字: ccflow 合流数据汇总 合流明细表数据汇总。 应用场景:标准制修订流程,步骤说明:请见流程图。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 设计步骤: 1, 子线程明细表属性默认值不需要特殊的设置。 2, 合流点上设置为如下图。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.5.2关于合流点退回、终止、查看进度的问题处理办法 需求背景: 在分合流流程中,对于合流点或者分合流点,操作员要看到上一个子线程进展情况,可以根据需要退回、或者终止指定的子线程。 实现方法: 对于自由表单使用者来说,你可以在表单上增加一个连接或者,一个按钮如下图。 只要在表单上进入: HeLiuDtl.aspx?WorkID=xxxxxxxx 功能界面,就有对该合流节点上的子线程的操作。或者打开流程: D:\ccflow\VisualFlow\Data\FlowDemo\Flow\02.同步分合流\同步分合流(二).xml 模板装载上在第3个节点表单中可以看到。在节点属性中,如果你启用了强制删除子流程功能,那么在这个合流点上会出现终止子线程的功能。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3.6异步分流程的设计 设计步骤大多与同步分合流相同。 3.7表单库 关于表单的设计基础知识请参考《驰骋工作流引擎-表单设计器操作手册.docx》。 3.7.1节点表单与流程表单的概念 1,在表单库中的表单就称为流程表单。 2,一个节点可以绑定多个流程表单。 3,一个节点必须有一个节点表单,但是这个节点表单可以隐藏起来,不使用它。 4,方向条件的判断是根据节点表单进行,不依据流程表单元素。 5,节点表单就是火车头,流程表单就是火车的车厢,一列火车必须有一个火车头。火车头+车厢才组成一列火车,一个车厢可以与其它的火车头挂接。这就是节点表单与流程表单的关系。 6,每个流程表单对应一个表或视图,也可以多个流程表单对应一个表或视图。 7,流程表单的主键是OID,它是一个int类型的由BP框架控制的增长的数值,你不用考 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 虑它的重性问题,如果把流程表单绑定到节点上,这个ID就是WorkID。 3.7.2 创建流程表单 在表单库中增加点新建表单: 点保存以后,其它的都与ccform设计一样了。 3.9 高级设计 3.9.1如何设置标题生成规则 标题:是流程标题,一个流程在开始节点是必须有一个标题字段Title ,并且这个字段不可别删除,默认为隐藏的。 标题字段用于待办、在途的工作列表上,是能让使用者知道这是那一条流程。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 标题字段不能修改,它是系统根据一定的规则自动生成的。 默认生成规则为:"@WebUser.FK_DeptName,@WebUser.No,@WebUser.Name在@RDT发起."; 解析为: 财务部,zhangna,张娜在11月12号10:20发起。 流程设计人员可以根据自己的需要设计自己的规则,规则表达式中支持节点表单字段。 比如:"@wenjianmingcheng在@RDT发起."; 其中@wenjianmingcheng是节点表单的数据库字段。 对于线性流程来说,只有一个标题,您只要为开始节点表单的Title字段设置默认值中中填写规则就可以了。 对于分合流程来说,流程发起后,开始节点的标题规则都是一样的,只是在分流节点中也要个性化设置子线程标题,所以子线程的标题生成规则设置在分流节点表单Title隐藏字段的默认值中。 3.9.2如何设置邮件模板格式? 请打开D:\ccflow\VisualFlow\DataUser\EmailTemplete 模版文件里您可以定义字段变量。 3.9.3如何设置流程的自动发起? 流程的自动执行包括,流程的自动发起与节点的自动执行两大部分。 下面分别介绍这两种的实现方法. 流程的自动发起. 流程的发起包含如下几种模式: @0=手工启动 默认的模式,就是手工的发起流程。 @1=指定人员按时启动 指定特定的人在特定的时间发起流程比如 zhangshan@01:01@12:01 让张三在每天的 1点零1分,与12点零1分发起此流程。 @2=数据集按时启动 为流程设置一个数据源,系统按时读取这个数据源发起流程。 @3=触发式启动 第三方软件向特定的表(WF_Task)中写入数据,ccflow就会读取这张表来完成流程的发起. (备注:目前不支持从表的数据填充,但是您可以在节点发送后,或者发送前事件里处理从表的数据).Paras 是主表参数,格式为: @字段名1=值1@字段名2=值2@字段名n=值n 设置数据集按时启动的方法 1, 在流程属性中的运行方式设置启动的顺序。 当运行方式为: 按天启动 执行内容 @01:01@02:01 表示01点:01分,与02点01分分别执行一次. 当运行方式为: 按小时启动 执行内容 @:01@:10@:20@:30@:40@:50 表示每间隔10分钟执行一次. 2,流程属性-》设置自动发起数据源,为开始表单设置数据源,(如果有从表也会让你设置从表的sql)。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 主表集合中必须包含如下几个列: Starter 发起人 MainPK 主键(唯一的主键,是为了不重复调度.) 从表数据集合要求: RefMainPK 关联主键的值. 特别说明: 两个SQL都是查询出来的集合. 3, 在开始节点属性中增加一个MainPK隐藏字段. 这个隐藏字段是用来保证数据发起不会重复。 4, 启动调度程序. 让其按时执行。 4.数据查询\统计\考核\报表 一条流程从发起,经历发起、运行、退出三个阶段,在流程运行过程中都要对流程数据进行查询统计与分析。 4.1 查询数据是如何产生的? 流程数据是流程运行的副产品,是在整个管理活动中最后的结果。我们知道所有的流程数据在流程运行的过程中,都会把数据copy到流程数据表即:NDxxRpt , (xx 为转化成int类型的流程编号)。 关于运行的表机制结构请参考第6章。 报表的查询也是基于这个表的进行设计与查询的。 4.2 查询列表字段筛选 用来移除或者添加查询要显示的列。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 选择要显示字段,然后点保存按钮。 4.3 列表字段显示顺序 在执行查询字段筛选后,系统就会让您开始执行列的显示顺序,如下图。 移动方向箭头,就可以改变顺序 ,本功能没有保存按钮。 4.4 查询条件设计 查询条件,就是在查询与分析时的条件,凡是外键、枚举、Boolen类型的字段都可以做为查询条件,如果不设置系统默认为部门与年月,为查询条件。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 选中字段,点保存按钮。 4.5 重设默认值 清除以上设计,恢复默认值。 恢复默认值后,查询条件为:部门与年月,查询列为流程的基本属性列(流程状态 标题 操作员部门 发起人 发起时间 参与人 跨度(天) 结束人 结束时间 年月 单据文号)。 4.6数据展现的三大方式 Ccflow对流程运行的数据处理分为流程查询,统计分析,对比分析3大固定的通用的操作模式。 4.6.1通用数据查询: 是对数据结果的查询,是通用的查询方式,有三大部分组成。查询条件,显示区域,翻页区域。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 4.6.1.1表格展现 4.6.1.2工作报告 工作报告是对流程轨迹的详细描述,它是用表格的方式展现出来的。 点日志连接就可以进入该工作的节点表单中去。 4.6.1.3工作轨迹 打开工作轨迹图, ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 4.6.1.4流程附件 如果流程中有具有附件字段的流程才能显示流程附件。 4.6.2数据分组分析 有5大部分组成、查询条件、显示内容、分析内容、图形显示控制、数据区域。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 4.6.2.1数据表格分组分析 点详细信息就是对数据的挖掘分析。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 4.6.2.2柱状图数据分析 此类图形形象的多用于分析数据的多少。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 4.6.2.3丙状图形分析 此类图形形象的多用于分析数据的组成部分。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 4.6.2.4折线图分析 此类图形形象的多用于分析数据增长变化以及数据的波动情况。 4.6.3对比分析 略 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5系统维护&流程服务 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5.0系统设置 5.0.1全局设置 修改D:\ccflow\VisualFlow\web.config中的配置,现在把其界面化了。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5.0.2系统枚举值 全局的枚举值维护. ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5.0.3编码表 系统中的编码表,也称为字典表,是用户在设计表单中维护的。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5.0.4 JS校验库 《省略》 5.0.5全局变量 用于表单中的全局变量。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5.0.6功能执行 独立执行一个功能,每个功能后都有详细的功能执行说明,仔细的阅读这些功能说明它会对您的流程设计有帮助。 5.1组织结构 主要是对部门、岗位、人员、人员与部门、人员与岗位之间的关系维护。 这些维护是在ccflow独立运行的模式下才可以使用的。在非独立模式下,这些用户、部门、岗位都来自于OA,ERP,GRP…. 系统,这些维护功能都在主系统中。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5.1.1部门维护 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5.1.2岗位维护 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5.1.3人员维护 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 5.2功能性执行 5.2.1 如何把数据批量的调度到流程数据中? 应用背景: 在系统实施中,已经有了一批流程已经在机器外走完了。如何把这些流程记录到系统中去以方便统计与查询,如果让用户在走一遍流程显然是不合理的。这是就要用户流程导入功能。 这种数据分为两种情况:已经走完的流程与指定走到一个节点的流程。流程导入以上excel数据为载体导入到ccflow系统中去。 实现方式: 6高级开发(深度了解ccflow) 6.0类设计与数据库设计命名规则 总体规则 1, 以英文命名,每一个字母大写,提倡用简写。比如Emp 人员 Dept 部门 Station 岗位。 2, 如果英文名称太长,或者不常用可考虑用中文命名,建议用中文的缩写。比如管理机关GLJG。 3, 对于类与表的命名必须有前缀,比如BP.Port.Dept 类名, 表名为Port_Dept.。 4, 前缀命名尽量简单。比如考核命名空间英文名称为Check 空间可以命名为CH。共用的类英文名称为Public 可简写为 Pub. 类库设计规则: 1, 格式为 BP+前缀+类名。比如:BP.Port.Emp 人员类。 2, 属性命名与字段命名相同。特殊属性可以遵守总体命名规则。 3, 类库的倒数第一个命名空间要与要与物理表的前缀一致。比如:物理表考核项目。 BP.CH.CheckIiems。物理表为 CH_CheckItem。 4, 如果一个属性是外部实体或者枚举类型,以His 开头。 比如在类人员中的部门类HisDept. 5, 方法命名规则,遵守总体命名规则的 第1,2条。 6, 变量的命名规则,字母小写,以下划线开头。比如: age 年龄。addr 地址。要求每一行都要有注释。 数据库设计命名规则: 1, 物理表命名格式 前缀+“_”+对应的类名。部门操作员 Port_Emp, Port_Dept ,CH_CheckItem. WF_Flow, 2,视图命名格式。 “V_” + 前缀 + “_” +对应的类名。V_CH_CheckItemExt。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 3, 存储过程命名规则“Pro_” + 前缀 + “_”+过程名称. 比如Pro_Sys_Init. 4, 函数命名规则 “Fun” + + 前缀 + “_”+函数名. 比如:Fun_Sys_GenerOID. 5, 外键字段命名规则 “FK_” +对应的物理表类名. 比如:在人员表(Port_Emp)中表示部门的字段 FK_Dept. 同事一看就知道,这个字段是外键,并且它的对应到Dept这个类的物理表上。 6.1表结构与流程运行机制 1, ccflow 有自动修复数据表功能, 所以表的字段的变化不需要用户干预由ccflow自动完成. 所以如果你看到sql的错误,在执行一般就可以解决,如果解决不了,就执行一次数据库修复工具。 2, ccflow 有自动增加字段备注功能,所以每个字段的中文名称都已经增加了数据表的字段的备注属性上了,请注意对照,以方便您阅读ccflow. 3, 了解ccflow 的表结构是您二次开发的基础,所以ccflow的高级用户需要熟悉每个表,掌握必要的表结构. 但是没有必要全部掌握。 4, ccflow 表命名规则是 前缀+"_"+表名. 大多以英文缩写或者,拼音大写组成. 比如: Port_Emp 人员表. WF_Flow 流程表。 ccflow 表分为框架表、流程规则描述表、流程数据运行表、公共表4大类: ------------------------------------------------------------------- 6.1.1, BP框架表. 通常以Sys_ 与 Port_ 开头. 也可以称为ccflow系统表. 它是存储系统运行的基础信息. 没有必要多了解它们. 列举如下: Port_Emp: 操作员表. Port_Station: 岗位表 Port_Dept: 部门表 Port_EmpStation: 人员岗位表. Port_EmpDept: 人员部门对应表. Port_Unit: 集团公司表,对于集团类的用户有效. Sys_MapData: 映射主表 Sys_MapAttr: 字段表 Sys_MapDtl: 表单映射明细表. Sys_MapExt : 表单映射扩展信息表 Sys_MapFrame :表单框架表 Sys_MapM2M: 多对多的关系表 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 Sys_FrmAttachment: 表单附件表 Sys_FrmImg: 表单图片表 Sys_FrmImgAth: 图片附件表. Sys_FrmLab: 表单标签表 Sys_FrmLine: 表单线表. Sys_FrmLink: 表单连接. Sys_FrmRB: 表单单选按钮. Sys_GloVer: 全局变量表. Sys_GroupField: 表单字段分组表. Sys_Log:日志表 Sys_Serial : 序列号生成记录表. Sys_Enum: 枚举信息表. SELECT * FROM SYS_ENUM WHERE ENUMKEY='WFState' Sys_EnumMain: 枚举信息主表. Sys_SFTable :自定义表 Sys_UserRegedit : 用户注册信息表. Sys_CField: 查询字段选择信息存储表. Sys_Config: 系统配置表. Sys_Contrast: 统计分析表: Sys_DefVal: 默认值表,快速填写大块文本时临时信息存储. 6.1.2, ccflow流程规则描述表. 用来存储流程配置的基础信息。 以 WF_ 开头. 列举如下: WF_FlowSort : 流程类别表. WF_Flow : 流程表. WF_FlowStation: 流程完成操送的岗位表. WF_FlowEmp : 可控制流程的人员表. WF_FlowNode : 流程的节点表. WF_Node : 节点表 WF_NodeStation : 节点岗位(能够访问该节点的岗位.) WF_NodeDept : 节点部门表(能够访问该节点的部门) WF_NodeEmp : 节点人员表(能够访问该节点的人员) WF_NodeFlow: 节点了流程表(在此节点上能够调起的子流程) WF_NodeReturn : 可退回到的节点(一个节点能够退回的节点,多对多的关系.) WF_BillTemplate 单据表 WF_BillType 单据类型表 WF_Cond :条件表 (方向条件,流程完成条件,节点完成条件) WF_Direction :方向表 WF_Event : 事件表(节点事件,流程事件) WF_FAppSet : 应用配置表(可以配置调用第三方的数据) ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 WF_Frm 流程表单. WF_FrmNode : 流程表单与节点对应关系表. WF_LabNote : 标签用在流程设计器的标签. WF_Listen : 消息收听配置表. 详细请 baidu "ccflow 消息收听" WF_Rpt : 流程报表设计 WF_RptAttr : 流程报表属性 WF_RptEmp : 报表可访问的人员 WF_RptStation : 报表可访问的人员 WF_RunRecord : 运行记录表 WF_SelectAccper : 选择接受人 6.1.3, ccflow 流程运行数据表. WF_GenerFH : 分合流信息注册表,对于是分合流的流程才有效,发起一条分合流,就多一条数据在此。WF_GenerWorkFlow : 流程注册表 WF_GenerWorkerlist : 节点工作人员表.(流程运行完成后此记录就被删除了) WF_Track : 运行轨迹表. WF_Bill : 单据信息存储表. WF_CHOfFlow : 流程考核信息表. WF_CHOfNode : 节点考核信息表. WF_Emp : 流程人员配置信息表 WF_FileManager :流程附件信息存储表 WF_ForwardWork : 转发信息存储表. WF_RememberMe : 投递路径记忆表, 请baidu "ccflow 智能投递" WF_ReturnWork : 退回信息存储表 WF_M2M : 一对多的关系存储表. 6.1.4, 公共字典表. 大多以Pub CN开头。 比如: 城市,省份,片区,年月,工作日. 这里不介绍了. 如果您对以上的表结构在大概的认识,您可以阅读如下文件了. 了解ccflow数据表运行机制,为自己项目做高级的查询与二次开发(开发进阶篇). 6.2 流程生命周期(创建、运行、数据归档) 6.2.1流程创建时 流程表 WF_Flow, 节点WF_Node. ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 第1步:, 流程自动生成一个三数数的流程编号. 比如: 001. 第2步:, ccflow自动生成开始与结束两个节点. 节点编号为 101 与 199. 如果在有创建节点时,节点编号就为 102, 103 .... 第3步:, ccflow 会为每个节点生成一个物理表,这个节点的信息存储这个表里,格式为 “ND” + 节点编号,比如:ND101,ND199. 每个节点表都有相同的字段. 比如: OID工作ID, RDT记录日期, Rec记录人,CDT,完成时间. NodeState 节点状态. 开始节点比较特殊, 它多一个 WFState 字段. 就是流程状态,用来记录流程运行的状态. 第4步:, 建立一个流程 WF_Flow,插入一条流程数据. WF_Node 插入n条节点数据. 第5步:, ccflow会产生一个流程数据表,系统产生一个"ND" + 流程编号+"Rpt" 命名的表, 比如:ND1Rpt 它是流程数据表。 它把所有节点字段的汇总集合形成的一个表.流程在启动后,运行中,完成后,这个表的数据一直跟随流程运转而更新.所以你可以查询到该流程的任何数据在这个流程表中。 这个流程的扩展字段有。 字段英文名称 中文名 说明 OID 工作ID FID 流程ID Title 标题 BillNo 单据编号 一个流程的顺序号 WFState 流程状态 流程状态 CDT 当前日期 Emps 当前可操作人员 FK_Dept 发起人部门 FK_NY 年月 FlowDaySpan 流程时间跨度 从开始发起到流程结束 FlowEmps 参与的流程人员 参与整条流程上的人员,人员编号用逗号分开。 FlowEnder 结束人 最后处理流程的人 FlowEnderRDT 结束日期 流程的结束日期 FlowStartRDT 发起流程日期 发起流程日期 MyNum 个数 恒等于1,用于分析。 第6步:, ccflow 会产生一个节点视图,V+流程编号. 比如:V001. 这个视图就是把本流程中的各个节点数据,相同的字段都汇总出来。 事例如下: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 CREATE VIEW [dbo].[V001] /* WorkFlow:测试流程 Date:2011-07-30 */ AS SELECT '101'+'_'+CAST(OID AS varchar(10)) +'_'+CAST(FID AS VARCHAR(10)) AS MyPK, '101' AS FK_Node,OID,FID,RDT,substring(RDT,1,7) AS FK_NY,CDT,Rec,Emps,NodeState,FK_Dept, 1 AS MyNum FROM ND101 UNION SELECT '199'+'_'+CAST(OID AS varchar(10)) +'_'+CAST(FID AS VARCHAR(10)) AS MyPK, '199' AS FK_Node,OID,FID,RDT,substring(RDT,1,7) AS FK_NY,CDT,Rec,Emps,NodeState,FK_Dept, 1 AS MyNum FROM ND199 GO 对于开发时效考核的朋友大用用处,可以统计每个节点用的天数,规定完成的天数,完成的工作量。 第7步:, ccflow会修复流程数据视图。V_FlowData 。 这个视图就是union 所有的流程数据表,形成的视图,如果要对全体流程执行查询,统计与分析用这个视图非常方便。 6.2.2流程运行时. 分合流流程注册表: WF_GenerFH 流程注册表: WF_GenerWorkFlow 工作人员表: WF_GenerWorkerlist 1. 启动一个流程后,ccflow自动产生一个WorkID, 一个流程一个WorkID, 并且处开始节点表(ND101)中插入一条数据, WFState=0 流程状态=0 表示运行中. 2. 启动一个流程后,就产生一条数据,放在WF_GenerWorkFlow , 3. 发送一个步骤后,就把接受的工作人员放入WF_GenerWorkerlist . 4. 流程运行完成后,就把两个表中的这个 WorkID 的数据清除. 5, 在流程数据表里(ND1Rpt)中, 每个节点有新采集的数据就会copy到此表中. 所以结合流程数据表,与当前的这两个表,你可以查询出来想要的数据满足二次开发. 6.2.3流程完成后(数据归档). 流程完成后,就与 WF_GenerWorkFlow ,WF_GenerWorkerlist 没有关系了。 所以查询流程数据从,流程数据表里,或者从节点数据表里查询. 比如: ND101, ND102, ND199, NDRpt. V001 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 。 开始节点的流程状态=1 , 表示此流程已经完成。 6.2.4数据查询 我们知道了ccflow的数据产生规则,以下是经常用到的ccflow数据查询方法 要想二次开发你需要熟悉如下查询方法。 查询待办一个人的待办工作: SELECT * FROM WF_GenerWorkerList WHERE FK_Emp='zhoupeng' and IsPass=0 AND IsEnable=1 查询在途工作: SELECT * FROM WF_GenerWorkerList WHERE FK_Emp='zhoupeng' and IsPass=1 AND IsEnable=1 查询一个人的一个流程的历史处理工作。 SELECT * FROM V_FlowData WHERE FlowEmps LIKE ',zhoupeng,' and WFState=1 如果对于整个流程的查询那就查询视图。 SELECT * FROM V_FlowData 6.2.5利用ccflow流程数据,为客户开发一个高级流程查询页面。 如果通用查询界面满足不了你的要求,你需要自己开发一个查询界面来完成用户的查询需要,下面讲解如何开发一个高级个性化的查询界面。阅读如下内容,需要您了解了ccflow的数据表结构,流程数据存储结构基础之上。 如果你是独立运行模式,使用的ccflow的整体界面,那就修改ccflow主菜单文件D:\ccflow\VisualFlow\DataUser\XML\BarOfTop.xml 1, 设置Url=””, 2, 在OnClick=”” 增加一段js代码让其转入你的查询界面中去。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 在做您个性化的查询时,你可能需要调用如下接口: 流程轨迹图: http://youserverIP/ccflow/WF/Chart.aspx?WorkID=943&FK_Flow=008&FID=0 流程工作报告: http://youserverIP/ccflow/WF/WFRpt.aspx?WorkID=943&FK_Flow=008&FID=0 表单附件 如何打开表单附件需要你查询了解表单设计器,多个附件的存储。在这里简述如下: 1, 首先要明确要查询那个节点上的附件,你能明确节点ID。 2, 查询物理表 SELECT * FROM Sys_FrmAttachmentDB WHERE RefPKVal=工作ID AND FK_MapData='ND'+节点编号 6.2.5 流程发起参数传递。 流程发起节界面(MyFlow.aspx,MyFlowSmall.aspx, MyFlowSmallSingle.aspx)会经常被如下功能调用。 1, 一个流程被集成的系统调用。 2, 一个流程结束后,唤起另外一个流程。 调用方式传递: 发起一个流程 MyFlow.aspx?FK_Flow=流程编号&FK_Node=开始节点编号。 如果向这个流程的节点表单的文本框内,传递一些预订的数据就按如下格式。 MyFlow.aspx?FK_Flow=流程编号&FK_Node=开始节点编号&Fields=值。 比如:从项目列表中增加一个连接发起项目施工流程就按如下约定。 MyFlow.aspx?FK_Flow=001&FK_Node=101&PrjNo=GC001&PrjName=我的项目。 这样用户在发起这个流程时就会把项目编号,项目名称传递到用户的表单上去,你可以解决主表的参数传递问题,但是ccflow没有解决如何把数据传递到明细表,如果需要明细表的数据预制就需要根据表单事件来完成。 其它: 用户在第一个节点保存后,ccflow把记录表单采集的数据到草稿里,每个人,每条流程只有一个草稿,如果你要想删除这个草稿,就如下规则。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 MyFlow.aspx?FK_Flow=001&FK_Node=101&IsDeleteDraft=1 如果你想删除草稿还想传递参数,按照如下格式。 MyFlow.aspx?FK_Flow=001&FK_Node=101&IsDeleteDraft=1&PrjNo=GC023&PrjName=我的项目。 Ccflow节点完成后转向: 6.3 功能调用(二次开发SDK) 6.3.0说明概要 1, 您的系统与ccflow交互是通过Url 与参数约定的,比如:要在你的系统里登陆ccflow里面的某些功能。就需要按照一定的约定规则执行。 2, 参数分为基本参数、必用参数与可用参数,基本参数有三个 UserNo,(用户编号) SID(登陆ID号). DoWhat(执行标记). 比用参数是根据DoWhat 来确定的,比如您要启动一个流程就需要FK_Flow这个参数。可用参数是根据。 3,根据您需要的功能,查询参数列表。 访问位置: http://yourServerIP/ccFlow/WF/Port.aspx . 6.3.1耦合案例 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 6.3.2功能列表 编号 名称 可选参数 说明 内容说明 Login 登陆 无 Port.aspx?UserNo=001 &SID=123323 &DoWhat=Login 系统登陆 LoginSmall 精简界面 同上 Port.aspx?UserNo=001 &SID=123323 &DoWhat=LoginSmall 同上 Start 发起 无 Port.aspx?UserNo=001 &SID=123 &DoWhat=Start 调用发起工作界面,显示当前用户能够发起的工作列表。 StartSmall 发起指定 的流程 FK_Flow Port.aspx?UserNo=001 &SID=123 &DoWhat= StartSmall &FK_Flow=001 调用简洁的流程发起界面,没有头部与尾部。 Emps 通讯录 无 Port.aspx?UserNo=001 &SID=123323 &DoWhat=Emp 调用通讯录 EmpsSmall 精简界面 无 Port.aspx?UserNo=001 &SID=123323 &DoWhat=EmpSmall 调用通讯录 EmpWorks 待办工作 FK_Flow (可选) Port.aspx?UserNo=001 &SID=123 &DoWhat=EmpWoks 打开我的工作列表。 没有FK_Flow列出全部,有就列出指定的流程。 EmpWorksSmall 待办工作(精简界面) 同上 Port.aspx?UserNo=001 &SID=123 &DoWhat=EmpWoksSmall 同上 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 Runing 在途工作 FK_Flow (可选) Port.aspx?UserNo=001 &SID=123 &DoWhat=Runing 打开我的在途工作列表。 没有FK_Flow列出全部,有就列出指定的流程。 RuningSmall 精简界面 同上 同上 同上 FlowSearch 流程查询 FK_Flow (可选) Key查询关键字(可选). 流程表里外键、枚举字段(可选)。 Port.aspx?UserNo=001 &SID=123 &DoWhat= FlowSearch &FK_Flow=006 (可选) &Key=文本框中的关键字 (可选) &枚举字段n=值n (可选) &外键字段n=值n (可选) 调用流程数据查询功能。 如果FK_Flow为空就调用流程查询主界面。否则调用指定流程编号的流程。 在调用指定流程查询功能时,可以传入按照关键字查的参数Key, 与外键,枚举值指定的参数,作为查询条件。 FlowSearchSmall 精简界面 同上 同上标记修改成FlowSearchSmall 同上 FlowFX 流程分析 同上 同上 同上 DealWork 处理 指定 的工作 FK_Flow WorkID 字段值(可选) Port.aspx?UserNo=001 &SID=123 &DoWhat=DealWork &FK_Flow=001 &WorkID=10001 &字段名称=字段值 处理工作ID为10001的工作。 字段值参数是可选的。 DealWorkInSmall 处理 指定 的工作 (简洁窗口) 同上 同上 同上只是调用简洁窗口。 6.3.3常用的测试案例 --调用待办工作. http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=EmpWorks&FK_Flow=006 --调用发起工作主要界面. http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=Start --发起指定的流程. 没有参数. http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=Start&FK_Flow=006 --发起指定的流程. 并且传入参数,比如目的地字段. 也可以是合同编号...... http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=Start&FK_Flow=006&mudedi=shandongjinan ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 --发起指定的流程(简洁页面). http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=StartSmall&FK_Flow=006 --发起指定的流程(简洁页面). 并且传入参数,比如目的地字段. 也可以是合同编号。 http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=StartSmall&FK_Flow=006&mudedi=shandongjinan --调用流程查询 无参数。 http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&FK_Flow=006&DoWhat=FlowSearch --调用流程查询 带有关键字的。 http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&FK_Flow=006&DoWhat=FlowSearch&Key=11233 --调用流程分析. http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=FlowFX&FK_Flow=016 --处理指定的工作, http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=DealWork&FK_Flow=006&WorkID=48 --处理指定的工作,带有参数 http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=DealWork&FK_Flow=006&WorkID=48&mudedi=jinan --处理指定的工作(利用简洁界面), http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=DealWorkInSmall&FK_Flow=006&WorkID=48 --处理指定的工作(利用简洁界面),带有参数 http://127.0.0.1/ccFlow/WF/Port.aspx?UserNo=hq&SID=123&DoWhat=DealWorkInSmall&FK_Flow=006&WorkID=48&mudedi=jinan 6.4 采用sdk模式的开发 CCFlow已经足够强壮与强大,不建议采用SDK的模式开发。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 6.4.0什么是ccflow的sdk的开发模式? Sdk的开发模式就是应用ccflow 的DDL类库,或者是项目工程集成于自己项目中的一种开发模式。 在项目中直接调用ccflow类库开发接口的一种设计模式,而非采用调用ccflow功能模块的操作方式。 6.4.1什么情况下用户sdk模式的开发? 如下情况可用到sdk的开发模式: 1, 表单超级复杂ccform满足不了用户的应用需求,也不能使用嵌入方式的表单实现。 2, 业务逻辑超级复杂,ccflow的事件也不能满足用户的需要(一般情况不存在)。 6.4.2 SDK模式开发环境设置 BS模式下环境设置: 第1步:引用类库 引用BP.En30, BP.WFV4, BP.Web.Controls30 类库,这些类库位于D:\ccflow\Components 第2步:整理前台资源 把ccflow Web工程下的重要文件目录copy您的项目中去。 D:\ccflow\VisualFlow\ClientBin D:\ccflow\VisualFlow \App_Code D:\ccflow\VisualFlow \Data D:\ccflow\VisualFlow \DataUser D:\ccflow\VisualFlow \Images D:\ccflow\VisualFlow \WF 第3步:整合配置文件 把web.config 中的 <appsetting> 节点之间的部分copy到你的 web.config中去。 CS模式下环境设置: 第1步:引用类库 引用BP.En30, BP.WFV4, 类库,这些类库位于D:\ccflow\Components 第2步:整合配置文件 把web.config 中的 <appsetting> 节点之间的部分copy到你的项目配置文件中去。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 第3步:装载配置文件 参考D:\ccflow\VisualWorkFlowServices\Glo.cs 方法把配置信息调入到ccflow系统中去。 6.4.3获取ccflow数据(SDK) 获取数据是如何根据您自己的需要,通过ccflow的接口获取想要的数据。 比如:发起流程,待办工作,在途工作。 类名:BP.WF. Dev2Interface 名称 静态方法 参数 返回值 获取当前操作员可以发起的流程集合 DB_GenerCanStartFlowsOfEntities 无 BP.WF.Flows 同上 DB_GenerCanStartFlowsOfDataTable 无 DataTable 获取当前操作员的待办工作 DB_GenerEmpWorksOfDataTable Fk_flow 流程编号 DataTable 获取当前操作员的在途工作 DB_GenerRuningOfEntities 无 GenerWorkFlowExts 同上 DB_GenerRuningOfDataTable 无 DataTable 7演示&学习环境 演示&学习环境是入门ccflow的基础,本章节系统的讲述的ccflow演示环境中的各个应用场景与类型。 请按如下步骤创建这个演示&学习环境: 第一步:更新最新的代码到本机。特别说明这些表单模板位于D:\ccflow\VisualFlow\Data\FlowDemo 下。 第二步:建立一个空白的数据库,比如:CCFlowDemo。 第三步:修改D:\ccflow\VisualFlow\Web.config 中的AppCenterDSN数据库连接设置,让其连接到CCFlowDemo. 第三步:输入:http://localhost/ccflow/, 系统就会进入数据库初始化化界面,点下一步就可以了(系统默认是安装演示环境,当然也可以不选择安装)。 7.0 演示环境的组织结构 以下组织结构可以通过SQL来获得: SELECT * FROM Port_Dept SELECT * FROM Port_Station order by StaGrade SELECT A.*,B.Name FROM Port_Emp a, Port_Dept b WHERE A.FK_Dept=B.No ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 SELECT a.FK_Emp, b.Name , a.FK_Station, c.Name FROM Port_EmpStation a, Port_Emp b, Port_Station c WHERE A.FK_Emp=B.No and a.FK_Station=c.No 部门: 编号 部门名称 01 总经理室 0101 市场部 0102 研发部 0103 服务部 0104 财务部 0105 人力资源部 岗位: 编号 岗位名称 01 总经理 02 市场部经理 03 研发部经理 04 客服部经理 05 财务部经理 06 人力资源部经理 07 销售人员岗 08 程序员岗 09 技术服务岗 10 出纳岗 11 人力资源助理岗 01 总经理 02 市场部经理 人员信息: 成员编号 成员名称 岗位编号 岗位名称 fuhui 福惠 09 技术服务岗 guobaogeng 郭宝庚 10 出纳岗 guoxiangbin 郭祥斌 04 客服部经理 liping 李萍 06 人力资源部经理 liyan 李言 11 人力资源助理岗 qifenglin 祁凤林 03 研发部经理 yangyilei 杨依雷 05 财务部经理 zhanghaicheng 张海成 02 市场部经理 zhangyifan 张一帆 07 销售人员岗 zhoupeng 周朋 01 总经理 zhoushengyu 周升雨 07 销售人员岗 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 zhoutianjiao 周天娇 08 程序员岗 7.1流程演示环境 Ccflow 根据流程模式为类别,为您制作了各式各样的流程。在您设计流程需要帮助时您就可以把您的需求与这些流程模式进行对照,比着葫芦画葫芦就可以轻松完成了,在以后ccflow为继续修改、完善这些流程应用 ,它就是各位学习ccflow的样本。 7.1.1线性流程 财务报销流程: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 请假流程: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 7.1.1同步分合流 7.1.2异步分合流 部门年计划提交:中具有一个子线程节点。 新航线考察: 具有多个子线程类型的流程 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 7.1.3父子流程 父子流程是线形流程的一种,将来后会去掉父子流程的概念。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 7.2 表单演示环境 在演示&学习的表单库里,CCFlow 提取了各种类型的应用模式,要想全面的掌握与学会CCForm要从这里入手。了解与应用每一种应用模式您就会成为CCForm的高手。 7.2.0功能展示表单 表单元素: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 在这个表单中,您可以了解到每个表单元素(也叫表单控件)是如何展示的,熟悉每个表单元素的特征,在以后表单的设计中,您都会用到。 主从表: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 主从表是表单中经常用到的数据采集与展现模式,对于主从表的数据自动填充功能是您必须要熟悉的。 Ccform 是利用字段的扩展功能利用ajax技术实现主从表的自动填充,有助于解决数据采集用的重要问题。 7.2.1企业资质申请表单 省略 7.2.2经典表单 省略 7.2.3航空考察表单 省略 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 8 CCFlow技术文摘 8.0 经典问答 问:ccflow有没有草稿? RE: 草稿的概念是对开始节点来说的,一个人一个流程只有一个草稿。 比如:在启动一个流程时,现在ccflow就检查开始节点是否有NodeState=0的记录,如果没有就ccflow就产生一个workid然后插入一条数据NodeState=0放入开始节点表单表里,如果有就调出来这条记录。 这时如果用户不发送直接关闭退出,下一次在进入ccflow就把这个数据调出来,发送了这个NodeState=1。 8.1 ccflow如何提高工作流程管理系统运行效率? 关键字:工作流程管理系统,workflow,bpm,执行效率,缓存. Ccflow 通过如下方提高业务流程系统执行效率。 缓存机制 1, 什么情况下用到缓存? 有以下几条缓存数据的规则。 1, 数据被频繁利用,但是不经常更新,数据量不太大. 比如人员、岗位、部门。 2, 数据在同一个过程中经常利用,比如:流程对一个实体进行运算. 它经常被各个方法所使用. 比如纳税人流程中: 纳税人的信息 \ 土地流程中的土地信息. 3, 用户的个人信息,比如他的岗位集合,部门集合..... 2 , 缓存分类. 全局级的: 在application 中应用. 比如:部门、岗位、人员、持久化存储的映射. 用户级的. 在session 中应用. 一个操作员的个人信息. 临时级的. 临时应用,在各个过程中应用,一个操作中消亡。 3, 缓存怎么在 ccflow 工作流引擎中表现? ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 1, 系统启动时,自动的把一个常用的数据调入到 全局级的缓存区。 2, 用户登陆后,把该用户的岗位、部门集合放入到 用户级的缓存区. 3, 系统在运算时,大部分数据已经被加工处理好, 大大减轻了服务器的负担. 事先计算: 事先计算就是把能够计算得到的属性在流程设计时提前计算出来,比如:节点的位置,它是一个枚举类型,开始节点、中间节点、结束节点。如果在运行中计算会消耗服务器的资源,如果在设计阶段计算好,就会节省这笔开销。 这些事先计算包含多个方面,比如:表单是否有明细、是否有框架、是否有扩展应用。。。。。 XML 数据的缓存 系统启动起来后就会把xml数据调入到缓存处理,节省了大量的IO 操作。 参数执行: 多达95%以上的sql 都是用参数执行的,您可以通过监控工具捕获到它们。Ccflow是运行在bp框架上的,所有的实体类,都是放在SQLCash 这个类中,所有的update,delete,insert,select 操作都是采用的参数执行,生成的sql放入缓存里。 8.2 ccflow向流程开始节点表单传输数据方法大全 在启动开始节点时,通常会向其发起点(流程的第一个点)传输一序列值,来减少用户的输入或者处理特定业务。下面把这些特定的方法总结汇总如下。 利用url传输数据给表单: 事例:MyFlow.aspx?FK_Flow=001&FK_Node=101&PrjNo=GB1002&PrjName=项目名称. 解释:利用Url的方式传递值,Key就是表单的字段名,如果一致ccform 就是自动获取它们把值放入表单控件里。 这种方式适用于数据量比较少,没有明细表的值。 把指定物理表的一列值传递给表单: 事例: MyFlow.aspx?FK_Flow=001&FK_Node=101&FromTableName=Prj_Main&FromTablePK=No&FromTablePKVal=GB1001 解释:利用特定的标记传递table名称,这个table的主键列名称,指定的行数据。 系统就会自动的生成一个sql 查询到这个行数据。 Select * from FromTableName where FromTablePK =’ FromTablePKVal’. 如果查询不到数据,就会抛异常。 查询到数据就会把这一行的数据根据列名与表单属性名称相对应的copy上去。 这种方式适用于数据量比较大数据传递。 其它流程节点通过url转向,转向到开始节点: 应用背景:一个流程A结束后,根据条件它要启动另外一个流程B,对于A流程结束点的数据(主表数据,明细表数据,附件数据)都要传递到B流程的第一个节点上去,类 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 于ccflow节点之间数据传递。 事例: 在A流程节点属性中->配置 ->成功发送后转向方式:转向指定的url 转向处理内容:MyFlow.aspx?FK_Flow=001&FK_Node=101 这种方式系统就会直接把A流程结束节点的数据复制到B流程的开始节点上去。这些数据包括: 主表、多个从表、附件数据。Ccflow采用静默的默认的传递。实现这些方法请参考BP.WFV4 中的Flow.cs 类中的NewWork() 方法。 删除草稿: ccflow草稿的概念: 当启动一个流程时,ccflow就会为当前操作人员第一个节点表单插入一条数据,用户点保存时,就会更新这条数据,这个NodeState=0,做为草稿,如果发送出去了,NodeState=1,就变成了节点表单的历史数据了。 如果有了草稿ccflow就会把这个草稿调出来显示给用户。也就是说当前打开当前点时草稿就产生了。 草稿的产生是因为用户在开始节点时,数据了数据,保存了但是没有发送。 如何删除草稿: 事例: MyFlow.aspx?FK_Flow=001&FK_Node=101& IsDeleteDraft=1 说明:删除主表草稿数据,从表草稿数据,附件数据。 8.3 开源的ccflow工作流程引擎,工作流程管理系统附件功能大总结 流程引擎运输的不仅仅是表单数据,而且还是有附件数据,附件数据是ccflow的重要处理部分,本文介绍ccflow在流程管理系统中怎么处理附件数据的。 单个附件: 是上传一个附件,有文件名称。如果该附件是只读的就不显示编辑按钮。 多个附件: 可上传多个附件,也可以多个类型,可以有分组,也可以无分组。如果该附件是只读的就不显示编辑按钮。多个附件上传时可以有分组功能,也可以无分组功能。 图片附件: 图片的展示,需要放在表单上,如果该附件是只读的就不显示编辑按钮。 表单设计界面: ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 表单预览界面: 8.4 使用svn下载开源驰骋工作流程管理系统,工作流程引擎 1,请加入ccflow技术支持群,下载一个svn 安装文件(也可以在网上搜索一个svn) ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 2, 按装上 TortoiseSVN-1.7.1.22161-win32-svn-1.msi 安装后需要重启,转入D: 根目录下,在空白处右键。 点SVN checkout 菜单。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 点ok 后就可以下载ccflow源程序了。 下载后,您可以看到如下文件 在: D:\ccflow\Documents 找到安装文档,进行ccflow的安装。 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 8.5关于ccflow事件与其它表达公式的参数 在整个流程设计过程中,经常用到表达式,有表达式都要有参数,这里总结ccflow的中的参数格式与参数约定。 Ccflow的参数有三种类型:全局参数、表单字段参数、传递参数。 全局参数: @WebUser.No 当前操作员编号 @WebUser.Name 当前操作员名称 @WebUser.FK_Dept 当前操作员部门. @WebUser.FK_DeptName 当前操作员部门名称 表单字段参数: 获取方式是: @+字段名,比如:@WenJianMingCheng 获取文件名称。 传递参数: 获取方式是: @+参数用 注意:目前不支持exe与webservices 的调用,但是可以支持url,您可以在url里调用webservices. ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 8.6 以子流程结束的工作流程有什么特点?设计时应注意什么事项? 我们知道ccflow有同步分合流,与异步分合流,与这之相对应的以子流程结束的流程也是有两种:以子流程结束的同步分合流,与以子流程结束的异步分合流程。 对于这两类流程做如下特别说明: 1, 都是有多个线程,与一个主线程的流程。 2, 每个子线程在流程结束后就要检查,当前的子线程是不是最后一个?如果是最后一个就在结束主流程。 3, 主流程完成的时间跨度是按所有的子流程都完成来计算。 8.6为什么提倡采用瀑布方式的设计流程? 瀑布的方式就是一个主流向分出多个细流,这种方式也叫树形的方式。 例如:http://bbs.ccflow.org/showtopic-156.aspx 所说有瀑布的方式设计流程就是尽可能的减少合并分支,或者不用合并。因为每个路径 ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 做最好用的工作流程引擎,奉献社会。 所填写的表单是不同的,在每个节点上如果有单据打印,把打印的内容也是不同的。 优点:条理清晰,每个节点表单填写内容明确,在节点单据打印时数据清晰。 缺点:节点太多、 让人感到流程复杂。 瀑布方式的流程设计是规范的流程设计,流程的复杂与否与节点多少没有直接关系。 8.7 关于工作流引擎考核的二次开发 8.8 ccflow流程设计技巧大全(总结篇) 1, 采用瀑布方式的设计。 2, 尽量采用傻瓜表单。 3, 先设计最后一个表单里所有的字段,然后向前copy。 未完待续 =============OVER============= ------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。 </div> </div> </article> <div id="reader-more"> <p class="title">下载文档,方便阅读与编辑</p> <p class="gray"> 文档的实际排版效果,会与网站的显示效果略有不同!!</p> <p class="download-info"> <span style="font-size: 14px;color: #888888">需要</span> <span style="font-size: 24px;">8</span> <span style="font-size: 14px;padding-right: 20px;color: #888888">金币</span> <a href="javascript:void(null);" onclick="JC.redirect('/create')" style="color: #cf6a07"> [ 分享文档获得金币 ] </a> <br/><span class="fcff">1 人已下载</span> </p> <p> <a class="button-warning ut-mt20 pure-button download buy circle80 fs30" href="javascript:void(null);" data-type="3" data-num="8" data-download="true"><i aria-hidden="true" class="fa fa-yen"> </i> 下载文档</a> </p> </div> <section class="mip-box ut-mt10"> <section class="mip-box-heading"><h3> 相关文档</h3></section> <section class="mip-box-body"> <ul class="list-unstyled clearfix"> <li class="ellipsis"><a href="/doc/68ad0482f45042b1a879e1340336f772.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  驰骋工作流引擎-流程设计器操作手册</a></li> <li class="ellipsis"><a href="/doc/ba02d695f6714e92ab63316e543e1691.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  驰骋工作流引擎-表单设计器操作手册</a></li> <li class="ellipsis"><a href="/doc/d46c80a3384a4d25bdd922399081c514.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  驰骋工作流引擎-前台用户使用手册</a></li> <li class="ellipsis"><a href="/doc/4c35a818bd774f66813ac9d3790d0c37.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  工作流引擎设计说明书</a></li> <li class="ellipsis"><a href="/doc/c9721ce582884a5fa4f61dab08c65522.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  Joinwork 工作流引擎总体设计</a></li> <li class="ellipsis"><a href="/doc/e5868563dc2a4353a1a83bf186959958.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  工作流设计器</a></li> <li class="ellipsis"><a href="/doc/a6a98521e6fa44e899c7b028dd22c429.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  ofbiz的工作流引擎</a></li> <li class="ellipsis"><a href="/doc/fa6a245c79904707af831f3a55e891e2.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  工作流引擎讲解</a></li> <li class="ellipsis"><a href="/doc/97d0d9ccf8334f7ea5c9d45c3bf460ef.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  工作流引擎的选择</a></li> <li class="ellipsis"><a href="/doc/6e138ed1322f45bba728204b2406d2d5.html"><i class="fa fa-file-word-o" aria-hidden="true"></i>  基于Spring创建工作流引擎</a></li> </ul> </section> </section> <footer class="bs-docs-footer"> <div class="container"> </div> </footer> <mip-fixed type="gototop"><mip-gototop threshold='300'><i class="fa fa-arrow-up" aria-hidden="true"></i></mip-gototop></mip-fixed> <!--mip 运行环境--> <script src="https://c.mipcdn.com/static/v1/mip.js"></script> <script src="https://c.mipcdn.com/static/v1/mip-sidebar/mip-sidebar.js"></script> <script src="https://c.mipcdn.com/extensions/platform/v1/mip-cambrian/mip-cambrian.js"></script> <script src="https://c.mipcdn.com/static/v1/mip-form/mip-form.js"></script> <script src="https://c.mipcdn.com/static/v1/mip-gototop/mip-gototop.js"></script> <script src="https://c.mipcdn.com/static/v1/mip-history/mip-history.js"></script> <script src="https://c.mipcdn.com/static/v1/mip-semi-fixed/mip-semi-fixed.js"></script> <script src="https://c.mipcdn.com/static/v1/mip-scrollbox/mip-scrollbox.js"></script> <script type="text/javascript" src="https://static.open-open.com/js/m-lib.js?v=1.01"></script> <script type="text/javascript" src="https://static.open-open.com/assets/jquery-confirm/jquery-confirm.js?v=4.7.0"></script> <script type="text/javascript" src="https://static.open-open.com/assets/jquery.modal.min.js?v=1.01"></script> <script type="text/javascript" src="https://static.open-open.com/js/m-base.js?v=1.01"></script> <script src="https://static.open-open.com/assets/jquery/jquery.min.js"></script> <script src="https://static.open-open.com/assets/jquery.modal.min.js"></script> <script type="text/javascript" src="https://static.open-open.com/assets/jquery-confirm/jquery-confirm.js?v=3.3.2"></script> <script type="text/javascript" src="https://static.open-open.com/js/m-base.js?v=1.01"></script> <script src="https://static.open-open.com/js/v.js?v=1.01"></script> <script src="https://static.open-open.com/js/cload.js?v=1.01"></script> <script> var consume_gold_cost = 8, uId = "", cId = "26403", slug = "68ad0482f45042b1a879e1340336f772", title = "驰骋工作流引擎-流程设计器操作手册", summary = " 流程图形设计器(有:cs版本与bs版本)/流程前台运行程序(BS结构)/流程服务(CS)/web的方式的表单设计器/BRP工具 基本功能: 图形化流程设计/智能表单web定义定义免程序开发/级联下拉框/流程轨迹/单据自定义打印/邮件短信工作到达通知/自动任务分配/支持sdk模式开发/简洁集成/消息侦听/丰富事件接口/报表定义/工作量分析/绩效考核/手机访问/支持sqlserve,oracle,mysql数据库 CCFlow: 懂管理就会开发基本流程,为单位流程管理系统没问题,会SQL就能达到中级开发水平解决复杂的逻辑问题与其它系统耦合,有编程基础就可以使用ccflow的sdk做高级的开发. "; var category_name = ""; var tagList = [{id:108, name: "工作流引擎"}, {id:20049, name: "手册"}]; var num_page = "1"; var jc = {}, fav = []; $(function () { JC.init("", "26403", "doc", 4, false); var a=$("#reader_content").cload({offsetTop:-80,total:112, slug:"68ad0482f45042b1a879e1340336f772", api:"doc/public/v1.0/doc/load",num_can_preview:10}); window._bd_share_config = {"common": {"bdSnsKey": {}, "bdText": "", "bdMini": "2", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "32"}, "share": {}}; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'https://static.open-open.com/assets/baidushare/js/share.js?v=89860593.js?cdnversion=' + ~(-new Date() / 36e5)]; }); </script> </body> </html>