??xml version="1.0" encoding="utf-8" standalone="yes"?>
(tng)
(tng)
是否启用Q?/span>如果此流E在q行启用它Q不q行׃启用它,可用于流E的历史版本理Q也可以因管理的需要,讄它?/span>
q行方式Q?/span>是ؓ(f)程的自动做的标讎ͼ自动q行的流E,可以用户?/span>sdk的方式开发?/span>
是否可以独立启用Q如果是一个独立启用的程可以显C在发v程列表里,否则׃昄Q如果该程是一个子程q且该流E不能被独立发vQ只能被调用Q就讄他ؓ(f)不可独立L(fng)?/span>
Durl:是在发v程时的要点的连接,如果为空pC直接启动流E,MyFlow.aspx?FK_Flow=xxx&FK_Node=xxx?/span>如果你指定了(jin)q个q接在发L(fng)面连接上Q就直接转向(zhn)指定的q接上去Q?zhn)的页面可以进行二ơ业务处理在转?/span>MyFlow.aspx上来?/span>
比如Q合同修Ҏ(gu)E,要发赯个流E首要的界面是要呈现一个合同列表,用户选择q个列表后,在{入流E发赗这个合同列表界面就是一个流E发起列表界面与程启动界面一个缓册Ӏ?/span>
标题生成规则Q?/span>
标题Q是程标题Q一个流E在开始节Ҏ(gu)必须有一个标题字D?/span>TitleQƈ且这个字D不可别删除Q默认ؓ(f)隐藏的?/span>
标题字段用于待办、在途的工作列表上,是能让用者知道这是那一条流E?/span>
标题字段不能修改Q它是系l根据一定的规则自动生成的?/span>
默认生成规则为:(x)"@WebUser.FK_DeptName,@WebUser.No,@WebUser.Name?/span>@RDT发v.";解析为:(x)财务?/span>,zhangna,张娜?/span>11?/span>12?/span>10Q?/span>20发v?/span>
程设计人员可以Ҏ(gu)自己的需要设计自q规则Q规则表辑ּ中支持节点表单字Dc(din)?/span>
比如Q?/span>"@wenjianmingcheng?/span>@RDT发v.";其中@wenjianmingcheng是节点表单的数据库字Dc(din)?/span>
程应用cdQ?/span>
是说明流E类型,如果没有Ҏ(gu)的指定,是正常的流E?/span>
工程cd的流E是ccflow的一U特定的程Q它有项目组的概念,什么是工程cȝ程?/span>baidu ccflow (tng)工程cd程?/span>
设计步骤Q在工具栏点多附件按钮:(x)
(tng) (tng)
附g名称Q就是ؓ(f)控g起一个名Uͼ附g~号需要全局唯一。保存到是文件要保存的位|?/span>
cd可以为空Q如果不为空时系l就?x)自动?f)它附件按U定的格式分cR?/span>
(tng)
比如Q在每条数据更新前后都要做安全性校验?/span>
以下界面从从表设计界面进入:(x)
(tng)
(tng)
对于明细表保存前Q保存后两个事gQ用@其它的事件是明细表的字段?/span>
@WebUser.No,@WebUser.Name@WebUser.FK_Dept (tng)
(tng)关键字:(x)工作程理pȝ,workflow,bpm,执行效率,~存.
(tng) (tng) (tng) (tng) (tng)Ccflow通过如下Ҏ(gu)高(sh)务流E系l执行效率?/span>
~存机制
1,什么情况下用到~存?
(tng) (tng)有以下几条缓存数据的规则?/span>
(tng) (tng)1,数据被频J利用,但是不经常更?/span>,数据量不太大.
(tng) (tng) (tng) (tng) (tng) (tng)比如人员、岗位、部门?/span>
(tng)
(tng) (tng) (tng)2,数据在同一个过E中l常利用,比如:程对一个实体进行运?/span>.它经常被各个Ҏ(gu)所使用.
(tng) (tng) (tng) (tng) (tng)比如U税人流E中:U税人的信息\土地程中的土地信息. (tng)
(tng) (tng)3,用户的个Z息,比如他的岗位集合Q部门集?/span>..... (tng) (tng)
(tng)
2 ,~存分类.
(tng)
(tng) (tng)全局U的:?/span>application中应?/span>.比如:部门、岗位、h员、持久化存储的映?/span>.
(tng) (tng)用户U的.?/span>session中应?/span>.一个操作员的个Z?/span>.
(tng) (tng)临时U的.临时应用Q在各个q程中应用,一个操作中消亡?/span>
(tng)
3,~存怎么?/span>ccflow工作引擎中表现?
(tng)
(tng) (tng) (tng)1,pȝ启动Ӟ自动的把一个常用的数据调入?/span> (tng)全局U的~存区?/span>
(tng) (tng) (tng)2,用户登陆后,把该用户的岗位、部门集合放入到用户U的~存?/span>.
(tng) (tng) (tng)3,pȝ在运时,大部分数据已l被加工处理?/span>,大大减轻?jin)服务器的负?/span>.
(tng)
事先计算:
事先计算是把能够计得到的属性在程设计时提前计出来,比如Q节点的位置Q它是一个枚丄型,开始节炏V中间节炏V结束节炏V如果在q行中计会(x)消耗服务器的资源,如果在设计阶D计好Q就?x)节省这W开销?/span>
q些事先计算包含多个斚wQ比如:(x)表单是否有明l、是否有框架、是否有扩展应用。。。。?/span>
(tng)
XML数据的缓?/span>
(tng) (tng)pȝ启动h后就?x)?/span>xml数据调入到缓存处?/span>,节省?jin)大量?/span>IO操作?/span>
(tng)
(tng)
参数执行Q?/span>
(tng) (tng) (tng)多达95%以上?/span>sql都是用参数执行的Q?zhn)可以通过监控工具捕获到它们?/span>Ccflow是运行在bp框架上的Q所有的实体c,都是攑֜SQLCashq个cMQ所有的update,delete,insert,select操作都是采用的参数执行,生成?/span>sql攑օ~存里?/span>
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) W一ơ接触工作流pȝQ可能会(x)对一些基本的术语和名词有误解。如程实例Q流E模版,程版本{,以及(qing)q些名词之间的关p,需要有一个学?fn)和理解的过E。这些名词和术语也是工作系l中的通用名词Q通过学习(fn)和理解后Q会(x)对这些术语和名词有一个共同的认识和理解?/span>
如下面的词语
工作引擎:(x)抽象的业务流E设计模型,负责业务程的定义,解释和运转?/span>
工作模版:(x)用工作流引擎的基本概念和路由q程表示Z个业务办理过E,q个q程通常是用xml格式的文件来记录的,q个xml文gQ就是工作流模版Q也可以说是程模版?/span>
工作名Uͼ(x)是工作模版文件的名称。也可以叫流E名U?/span>
工作版本:(x)工作模版的版本Q也可以叫流E版本。在工作系l中Q对工作模版有个版本管理,新徏一个工作流模版时候,它的工作模版是.1。当再次做修改的时候,可以选择创徏新的版本Q如.2?/span>
(tng) (tng) (tng) (tng) (tng) (tng) (tng) 因ؓ(f)一旦业务流E模版投入用了(jin)Q有?jin)运行的程实例了(jin),再次对业务流E做的修改,需要更新到新的版本中,原来的流E版本还需要存在,原来的流E定义信息,按版本仍然能查询到。新的修改在新的版本中?/span>
(tng) (tng) (tng) (tng) 程名称Q流E版?是唯一标识一个业务流E的?/span>
工作徏模:(x)利用程设计器将业务处理q程用工作流的节Ҏ(gu)式表C出来,是工作徏模,也可以说是流E徏模?/span>
工作节点:(x)是工作流引擎的设计基本节点,一个节点表CZ个业务处理过E,在流E设计器中,?x)有相应的表C方式?/span>
程实例Q?/span>按照工作模版定义的处理q程启动q行的业务处理过E,x(chng)E实例。利用徏立好的业务流E模版,可以多次启动程实例Q一个流E实例即一个业务处理过E。如请假审批的流E,张三填写他的请假单,启动一个审Ҏ(gu)E实例。李四也填写一个自q清单单,也是启动?jin)一条流E实例?/span>
程实例idQ每条启动的程实例Q在工作引擎中Q都?x)对应一个流E实例idQ来唯一标识q条程实例?/span>
(tng)
业务数据Q?/span>程中每个节点上处理的业务记录等。通常程数据和业务数据是有关联的?/span>
程设计?/span>Q利用工作流引擎的设计基本节点和概念l业务流E徏模的可视化编辑工P是程设计器?/span>
当前步骤Q?/span>程实例未结束前Q正q行到的当前节点Qؓ(f)当前步骤?/span>
历史步骤Q?/span>程实例q行完成的节点,都认为是历史步骤?/span>
程实例q行轨迹Q?/span>每条程实例在工作流模版的节点上q行的轨qV?/span>
程实例监控Q?/span>监控每个程实例在各个节点的q行情况?/span>
dQ?/span>每条程实例在运行到程的各个节Ҏ(gu)Q会(x)产生一些待执行的Q务信息。有d名称Q描qͼ和参与hQ完成h{Q务的基本信息。通过d链接到待处理的业务过E?/span>
d参与人:(x)d信息的参与hQ能够查看到d的相关h?/span>
d执行人:(x)可执行Q务的操作人?/span>
(tng)
d工单Q?/span>dz֏下来的工单?/span>
UŞ程(串行路由)Q?/span>业务建模中,节点按顺序一个一个的往后串联的方式?/span>
分合?q行路由)Q?/span>业务建模中,节点q行的方式往后链接?/span>
(tng)
分支Q?/span>业务建模中,q分支的节点\由方式?/span>
合ƈQ?/span>业务建模中,^行分支的节点路由再合qv来的路由方式?/span>
子流E:(x)Z个独立的业务程Q嵌入到LE中?/span>
(tng)
q里只是列出一些常用的工作系l中的术语,不体现流E引擎的设计基本概念?/span>
特别是流E模版,程实例Q业务数据这之间的关联和区别Q?/span>
程模版Q是业务处理过E用工作引擎的支持的方式表C出来的一个模版文件?/span>
程实例Q按照工作流模版定义的处理过E启动ƈq行的业务处理过E,通常对应一条主业务数据?/span>
(tng) (tng)
(tng)
(tng)
2, 目?hu)程权限控制比较?gu)Q比如一个h在a目中是目l理Q在b目中是工程师。这cȝ程在节Ҏ(gu)限控制时?x)遇到局限在本项目中{?/span>
3Q一个项目会(x)有资料树(wi)的概念,每一个有关项目的程h一些文档,q些文档?x)于目兌?/span>
4Q项目流Eccflow在表单设计中有一个约定。每个节点表单中Q流E表单除外)(j)都必LPrjNo,PrjName两个属?
(tng) (tng) 在流E设计时必须指明此流Eؓ(f)目cd的流E?/span>
环境搭徏
----------------------------------------
1. (tng) D:\ccflow\ExpandingApplication\Prj\Prj 复制?D:\ccflow\VisualFlow\ 中去.
2. (tng) 在ccflow webapplication 中引?D:\ccflow\ExpandingApplication\Prj\Components\BP.PRJ\BP.PRJ.csproj
3. 在目? D:\ccflow\VisualFlow\DataUser 下创Z个Prj.Data 目录. q个目录会(x)放资料树(wi)。?/span>
(tng) (tng) (tng) D:\ccflow\VisualFlow\DataUser\PrjData\Data 资料?wi)数据?/span>
D:\ccflow\VisualFlow\DataUser\PrjData\Templete 资料?wi)模板数?
(tng)
3. ~译该项?
创徏(zhn)的W一个工E项目流E?
----------------------------------------
1, 在流E设计器中徏立一个项? 该项目的~号?0001.
2, 目设计目?wi)模?
(tng) (tng) 2.1 创徏目录: D:\ccflow\VisualFlow\DataUser\PrjData\Templete\001
(tng) (tng) 2.2 在以上目录下创徏目录模板, pȝ中读取文件名.文g里面可以没有M内容. (Z(jin)方便期间你可以把 D:\ccflow\ExpandingApplication\Prj\Templete\*.* copy 里面试)
(tng) (tng) (tng) (tng) (tng) (tng) 目前只支持一U的资料?
(tng) (tng) 2.3 说明:在?zhn)上传资料后,pȝ׃(x)自动的把文g上传?D:\ccflow\VisualFlow\DataUser\PrjData\Data\001 下面?/span>
(tng)
3. 目设计岗位与h?设计资料?wi)节点访问规?
4. 新徏一个流E,在流E属性中讄该流Eؓ(f)目cd的流E?
5. 程的每个节点表单都要增加一个PrjNo,PrjName字段.
6, 在表单上Q增加一个超q接 q接地址?=当前节点ID. pȝ׃(x)打开目?wi)?jin).
(tng)
(tng) (tng) ============== over (tng) =================
如果以上有变动,请参考ccflow程设计器说明书 .http://ccflow.org下蝲.
(tng)
(tng) (tng)
(tng)
(tng)
(tng) (tng) (tng) 1, 撤销abcU用L(fng)限制?/span>
(tng)
(tng) (tng) (tng) 2Q开放手问源代码Q表单设计器源代码。分别是:
(tng) (tng) (tng) (tng) (tng) (tng) D:\ccflow\CCForm
(tng) (tng) (tng) (tng) (tng) (tng) D:\ccflow\VisualFlow\WF\WAP
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
(tng) (tng) (tng) 到目前ؓ(f)止,ccflow 的源代码完全开放了(jin)Q欢q各位潜?j)研IӞ?j)诚则灵?/span>
(tng) (tng) (tng) 以下是给学习(fn)使用ccflow的一些徏议?/span>
(tng) (tng) (tng) 1, 多看看两个重要的操作手册?/span>
(tng) (tng) (tng) (tng) (tng) (tng) (tng) D:\ccflow\Documents\驰骋工作程引擎-自由表单设计器操作说明书.doc
(tng) (tng) (tng) (tng) (tng) (tng) (tng) D:\ccflow\Documents\驰骋工作程引擎-程设计器操作说明书.doc
(tng)
(tng) (tng) (tng) 2, 多看操作录像.
(tng) (tng) (tng) 3, 按操作录像模仿徏立一个简单的程Q流E的一些基本元素概c(din)?/span>
(tng) (tng) (tng) 4, 加入ccflow的qq讨论? q把问题攑֜论坛上?/span>
(tng) (tng) (tng) 其它:
(tng) (tng) (tng) (tng) (tng) (tng) ccflow 更新通知
(tng) (tng) (tng) (tng) (tng) (tng)http://hi.baidu.com/ccflow/blog/item/039ec84744bde0146a63e573.html
(tng) (tng) (tng) (tng) 关于发布ccflow 程设计器源代码与ccflow未来产品U的声明.
(tng) (tng) (tng) (tng) (tng)http://hi.baidu.com/ccflow/blog/item/d70431df1932394895ee3755.html
(tng) (tng) (tng)
C?!
(tng) (tng) (tng) (tng) ccflow.org
(tng)
(tng)
(tng) (tng) (tng) 本次更新内容:
(tng) (tng) (tng) ------------------------------------
(tng) (tng) (tng) 1, 目录l构做了(jin)调整 原来 visualflow/*.* 重要的文件移?visualflow/WF/Admin/Xap 里面?
(tng) (tng) (tng) 2, 把原来cU用L(fng)wap模块加入?visualflow/WF/WAP目录?
(tng) (tng) (tng) 3, 删除?jin)各个层是间的隐藏文? 一些排除的文g都被删除? (tng) (tng)
(tng) (tng) (tng) d的升U办?
(tng) (tng) (tng) ----------------------
(tng) (tng) (tng) 1, 重命名本Z的D:\ccflow, 比如QD:\ccflowBak
(tng) (tng) (tng) 2, 重新下蝲 ccflow ?D:\ccflow (tng) (tng) svn 地址 (tng)http://ccflow.googlecode.com/svn/ccflow/
(tng) (tng) (tng) 3, 修改本机上的 IIS 虚拟目录名称 Flow ?ccflow.
(tng) (tng) (tng) 4, 启动D:\ccflow\VisualFlow\BP.Web.CCFlow.sln
(tng)
?!!
(tng) (tng) (tng) ccflow.org
(tng)
各位ccflow爱好者:(x)
(tng) (tng) (tng) 最qccflow 要做一些调整与变动Q会(x)l各位的升与正怋用带来问题。遇到问题,h如下步骤解决?/span>
(tng) (tng) 1Q全部更?更新内容(BP.En30,BP.WFV4, VisualFlow整个目录)
(tng)
(tng) (tng) 2Q提交错误与截图到群论坛?
(tng) (tng) q段旉估计要持l?天左?
(tng)谢谢(zhn)对ccflow的支?
(tng) (tng) (tng) (tng) (tng) 南驰骋信息技术有限公?/span>
(tng) (tng) (tng) (tng) (tng) 2011/11/21
在启动开始节Ҏ(gu)Q通常?x)向其发L(fng)(程的第一个点)传输一序列|来减用L(fng)输入或者处理特定业务。下面把q些特定的方法ȝ汇d下?/span>
(tng)
利用url传输数据l表单:(x)
事例Q?/span>MyFlow.aspx?FK_Flow=001&FK_Node=101&PrjNo=GB1002&PrjName=目名称.
解释Q利?/span>Url的方式传递|Key是表单的字D名Q如果一?/span>ccform是自动获取它们把值放入表单控仉?/span>
q种方式适用于数据量比较?yu),没有明细表的倹{?/span>
(tng)
把指定物理表的一列g递给表单Q?/span>
事例Q?/span>
MyFlow.aspx?FK_Flow=001&FK_Node=101&FromTableName=Prj_Main&FromTablePK=No&FromTablePKVal=GB1001
解释Q利用特定的标记传?/span>table名称Q这?/span>table的主键列名称Q指定的行数据?/span>pȝ׃(x)自动的生成一?/span>sql查询到这个行数据?/span>
Select (tng)* from FromTableName (tng)where FromTablePK =?FromTablePKVal?
如果查询不到数据Q就?x)抛异常?/span>
查询到数据就?x)把q一行的数据Ҏ(gu)列名与表单属性名U相对应?/span>copy上去?/span>
q种方式适用于数据量比较大数据传递?/span>
(tng)
其它程节点通过url转向Q{向到开始节点:(x)
应用背景Q一个流E?/span>Al束后,Ҏ(gu)条g它要启动另外一个流E?/span>BQ对?/span>A程l束点的数据Q主表数据,明细表数据,附g数据Q都要传递到B程的第一个节点上去,cMccflow节点之间数据传递?/span>
事例Q?/span>
?/span>A程节点属性中->配置->成功发送后转向方式:转向指定?/span>url转向处理内容:MyFlow.aspx?FK_Flow=001&FK_Node=101q种方式pȝ׃(x)直接?/span>A程l束节点的数据复制到B程的开始节点上厅R这些数据包?/span>:主表、多个从表、附件数据?/span>Ccflow采用?rn)默的默认的传递。实现这些方法请参?/span>BP.WFV4中的Flow.cscM?/span>NewWork()Ҏ(gu)?/span>
(tng)
删除草稿Q?/span>
ccflow草稿的概?/span>:当启动一个流E时Q?/span>ccflow׃(x)为当前操作h员第一个节点表单插入一条数据,用户点保存时Q就?x)更新这条数据,q个NodeState=0Q做E,如果发送出M(jin)Q?/span>NodeState=1Q就变成?jin)节点表单的历史数据了(jin)?/span>
如果有了(jin)草稿ccflow׃(x)把这个草E调出来昄l用戗也是说当前打开当前Ҏ(gu)草稿׃生了(jin)?/span>
草稿的生是因ؓ(f)用户在开始节Ҏ(gu)Q数据了(jin)数据Q保存(sh)(jin)但是没有发送?/span>
如何删除草稿Q?/span>
事例Q?/span>MyFlow.aspx?FK_Flow=001&FK_Node=101& IsDeleteDraft=1
说明Q删除主表草E数据,从表草稿数据Q附件数据?/span>
程在退回时Q有一D|E数据就是从当前点到退回点的所做的工作Q这部分节点的数据如何处理成Z(jin)我们要探讨与取舍的难炏V?/span>
以请假流Eؓ(f)例,甌人发P部门l理审批Qȝ理审批,人力资源归档。如果ȝ理退回到W一个点Q可以解释ؓ(f)Q部门经理做的无效的工作Q此部分工作需要删除,?/span>3.0以前的版本,ccflow都是q样的处理的Q这L(fng)解释也是用户所接受的?/span>
但是在其它的程׃能这栯释了(jin)Q因Z需要保留历史痕q,q且在退回后有如下可能要发生?/span>
1Q?/span> (tng) (tng)退回到指定的点后,发v人删除流E?/span>
2Q?/span> (tng) (tng)退回到退回节点后Q发起h修改表单后发送,按原节点发回来?/span>
3Q?/span> (tng) (tng)退回到退回节点后Q发起h修改表单后发送,l历与其它的路线步骤到当前点?/span>
4Q?/span> (tng) (tng)退回到退回节点后Q发起h修改表单后发送,该走其它的\U不l当前点?/span>
(tng) (tng)Z如上可能性的发生ccflowQ做?jin)如下处理?/span>
1Q?/span> (tng) (tng)退回阶D|E数据写?/span>txt文g里,攑֜D:\ccflow\VisualFlow\DataUser\ReturnLog
2Q?/span> (tng) (tng)增加?jin)流E报告与节点的焦点字D功能,pȝ把每一步骤的操作都记到日志表里?jin),通过焦点字段的配合,可以让操作员方便明晰的看到轨qV?/span>
(tng)
Ccflow4.5通过如上两个Ҏ(gu)解决退回数据的完整性问题?/span>
(tng)
ccflow焦点字段:
http://hi.baidu.com/ccflow/blog/item/af7fa2580a0a26362834f0ff.html
的整体界面,那就修改ccflow
1Q?span> (tng) (tng) (tng) (tng)?/span>OnClick=”?代码让其转入你的查询界面中去?/span>
(tng) (tng) (tng)
程轨迹图:(x)
首先要明要查询那个节点上的附gQ你能明节?/span>ID查询物理?/span>SELECT*FROMSys_FrmAttachmentDBWHERERefPKVal=工作ID (tng) AND (tng) (tng) FK_MapData='ND'+节点~号?/span>
Ҏ(gu)你的需要生成客h需要的样式?/span>
(tng)
(tng)
要知道记录表单的那个字段Q这个字D可能是审批意见也可能是备注。如果?zhn)不设|它Q?/span>ccflow解释说明Q?/span>
q所有的节点都要讄焦点字段?/span>
在工作日志中应用Q?/span>
在{发中应用Q?/span>
在退回中应用Q?/span>
业务背景:
case1: 父流E在特定的节点启动子程后,在子程完成后,需要{到父程的发起子程的发起子程的节点上?
(tng) (tng) (tng) (tng) (tng) 在父程的节点上可以在启动子程Q或者处理父程上的以后节点?/p>
case2: 一个节点完成后Q需要按照指定的条gQ一般就是表单中的一个字D늚|(j)q行转向?/p>
(tng) (tng) (tng) 要满以上功能,q里需要熟(zhn)与灉|q用节点属性的[成功发送后转向方式] ?/p>
(tng)
在节Ҏ(gu)功发送后有如下处理方?
(tng) (tng) 0 提示ccflow默认信息
(tng) (tng) (tng) (tng) pȝ提示详细的发送信息,包括下一步的接受人。。?br> (tng) (tng) 1 提示指定信息
(tng) (tng) (tng) (tng) 按照(zhn)定义的信息提示l用戗此选项需要在[转向处理内容]文本框里输入提示内容?br> (tng) (tng) 2 转向指定的URL
(tng) (tng) (tng) (tng) 按照(zhn)定义的url转向Q此选项需要在[转向处理内容]文本框里输入url?br> (tng) (tng) 3 按照条g转向
(tng) (tng) (tng) (tng) 在相兛_能里定义转向条g?br> (tng)
(tng) (tng) 利用此属性?zhn)可以个性化提示信息。可以在程处理完成后{向指定的url,也可以根据表单的字段的D{向指定的url?/p>
(tng) (tng) 在父子流E中Q当子流E启动v来之后,可以利用此功能{到父程节点上去?/p>
在子程完成后,从子程转向父流E配|案例:(x)
1Q?tng)打开子流E的最后一个节点属性界面,讄成功发送后转向方式Qؓ(f)3Q既Q{向指定的url
2Q?tng)在转向处理内容输入一个url
(tng) (tng) (tng) (tng) l过如上的配|,子流E在完成后就转向父流E的节点? 其中: FK_Flow 是父流E的~号QFK_Node 是父流E启动子程?/p>
节点~号?子流E的FIDQ就是父程WorkID.
(tng) (tng) 其它Q在ccflow中, OID 是WorkID. WorkID是OID . 他们两个在ccflow中是一个概念,一直被沿用下来?jin),不要h.
(tng) (tng)
(tng)
采用?c)表单和自p单设计审Ҏ(gu)E时到以下问题该如何解冻I(x)
采用?c)表单设计审批程存在的问?
样式固定Q无法调整文本框的宽度和高度.
re: ?c)表单里的文本框,有三U类型,大块文本Q整行显C,半行昄的?br>宽度与高度是固定的?/p>
字体无法调整Q控件的布局只能是两列;无法调整背景Q?
re:
1,背景不能调整?
2, 控g默认是四列显C,可以整行昄, q就?friendly form 的特炏V?br> (tng)
当文本框未激zL无法调整框内字体颜色?br>re: 可以考虑Q增加激zȝ效果Q等待升U吧?br> (tng)
设计时指定文本框的长度ؓ(f)整行Q显C时却显CZ段?br>re: 此属性对?c)表单无效Q对自由表单Q与明细表有效?/p>
(tng)
采用自由表单设计审批程存在的问?
样式固定Q无法调整文本框的高度;不可~辑的文本框无法调整Q?br>RE: 对于文本狂,明细表,多选,控gQ选择该控Ӟshift+ 方向键可实现?/p>
字体无法调整Q控件的M布局无法调整Q无法调整背景;
REQ?字体大小可调整的, 背景不能调整Q需要二ơ开发它?/p>
U条_细调整没有合理的分U功能?br>re:选择U条 按下 A+ A- 可实现线条的_细?/p>
当控件ؓ(f)日期控gӞ无法调整控g的宽度和高度?br>re: 日期cȝtextbox 是固定的?/p>
(tng)
(tng) 要想二次开发你需要熟(zhn)如下查询方法?br> (tng) (tng) (tng) 查询待办一个h的待办工?
(tng) (tng) SELECT * FROM WF_GenerWorkerList WHERE FK_Emp='zhoupeng' and IsPass=0 AND IsEnable=1
(tng) (tng) 查询在途工?
(tng) (tng) SELECT * FROM WF_GenerWorkerList WHERE FK_Emp='zhoupeng' and IsPass=1 AND IsEnable=1
(tng) (tng) 查询一个h的一个流E的历史处理工作.
(tng) (tng) SELECT * FROM V_FlowData WHERE FlowEmps LIKE ',zhoupeng,' and WFState=1
(tng)
(tng)
公文程中只有一个类?/span>: 01只要~号不是01在创建流E时Q?/span>ccflow如果是就按照公文cȝ程创徏否则按照业务cȝ程创徏?/span>
公文程的表单字D|固定的,一般不做变化,比如Q文P发文单位Q收文单位,机密E度Q紧急程度等{,而业务类程表单是变化的。公文流E节点上只有一个表单,而业务流E有多个表单?/span>
为处理工作的载体Q采用了(jin)vsto业务程?/span>IEE序体处理数据流转?/span>
服务器上Q公文文档数据存储在ftp
应用需求特?
1, 在开始节点生?
2, 生成后会(x)自动传递到其它的节点上?
实现Ҏ(gu):
1, 创徏一个生成自动编h者时间戳的函? 比如: GenerMyNo
2, 建立一个string字段Q设|ؓ(f)只读属?
3, 在这个字D中的属性的扩展讄中,数据获取-> 方式2Q利用sql 自动填充.
(tng) (tng) 填写一个sql
(tng) (tng) (tng) for sqlserver:
(tng) (tng) 比如: SELECT dbo.GenerMyNo()
(tng) (tng) (tng)
(tng) (tng) (tng) for oracle:
(tng) (tng) 比如: SELECT dbo.GenerMyNo()
(tng) (tng) (tng)
(tng)
设计一个好的工作流引擎Q就像设计一部汽车,必须有发动机提供动力Q轮子提供行赎ͼ车灯提供照明Q喇叭提供提C,刹R提供停止Q倒挡提供后退QR门提供钥匙进入系l?/span> (也可以说是安全验?/span>)Q导航器提供方向。现在试想一下:(x)我们拿着钥匙Q用户名与密码)(j)Q进入汽车(工作引擎前台操作)(j)Q先看看仪表有多水与a(b)料(待办工作Q。好Q现在我们开始进入发动引擎(启动程Q,看看前面是否有障物Q采集信息)(j)Q挂挡,采a(b)门(点击发送流E按钮)(j)Q松dQ前q。。。。。。{弯时要看前面的条件是怎样的(方向条gQ,停RQ是否有情况Q,到达目的圎ͼ程l束Q,中途情늉D(程完成的条Ӟ(j)提前q回Q意外情冉|锚(程体检Q需要检修?/span>
一个好的工作流引擎h以下几个要素Q?/span> 1. 节点 2. 节点完成的条?/span> 3. 方向 4. 方向条g 5. 程完成的条?/span> 6. 文书、单?/span> 7. 岗位 8. 部门 9. 操作员?br />
Ƣ迎参考开源的ccflow.
http://ccflow.org
关键?ccflow,workflow,bpm,pȝ集成.
我们知道如果要把ccflow集成C的系l中(如果你不明白你可以看看相关的文档)Q?是
采用L(fng)换柱的概忉|ccflow 原来讉K物理表,现在改写成访问视图这个视图数据是从你
的业务系l中映射而来Q所以ccflow在运行时5大组l结构表数据权限体系都可以成功的?/p>
你的pȝ集成在一起了(jin)?/p>
我们知道Qccflow被集成到你的pȝ后,用户d首先是从应用pȝ(?/p>
?OA,ERP,CRM) q入的,在登陆时,p向用戯SID裂上写入一个随机的字符丌Ӏ?br />
在采用嵌入方式工作时Q每个功能都需?UserNo ?SID 两个参数。在讉K功能之前ccflow 需要对来访者进行n份验证。如果能够匹配了(jin)Qccflow׃(x)认ؓ(f)是合法的用户?/p>
在是否验证时有一个开兛_在web.config 中配|的,
IsAuth=1 需要验证,IsAuth=0 不需要验证?/p>
Z(jin)E序调试方便Q请把IsAuth 讄??/p>
更多的帮助信息请讉K http://ccflow.org/Help.aspx.
Ƣ迎使用开源的工作程引擎 ccflow.
各位ccflow的爱好?
期待已久的函数验证库功能与大家见面了(jin)Q经q多ơ的修改与设计,最后改成现在的操作与实现模式?br />目前已经提供部分pȝ函数验证库,q些通用的函数库?x)慢慢丰富v来。同时也提供?jin)用戯定义函数功能?/p>
x(chng)Q希望各位能够在使用q程中:(x)
1Q提出更多更好的修改意见Q尤其是不能满你需求的地方?br /> 2, 提供ccflow 自己使用的通用数据输入校验函数?br /> 3, 期待着?提出在用过E中遇到的bug?br />
更如下内?
D:\ccflow\VisualFlow\DataUser\
D:\ccflow\VisualFlow\Data
D:\ccflow\VisualFlow\bin
D:\ccflow\VisualFlow\WF
操作步骤:
字段属?> 扩展讄-> js验证.
更详l的操作说明?lt;<自由表单设计器表单操作手?gt;>?
更多的帮助文?http://ccflow.org/Case.aspx
你使用愉快Q谢?
ccflow.org 2011/8/27
在个人配|里q行Q如下图?/span>
存储q程的参数说明:(x)
@Sender nvarchar(100), -发送h?/span>
@Receivers nvarchar(2000), -接受人,如果多个中间以逗号隔开?/span>
@Title nvarchar(100), -消息标题
@Context nvarchar(max) ?/span>消息内容?/span>
1,.
2,.
3,.
4,.
5,.
6,.
,ccflow.
--------------------------------
1,.
RE::.
1..
,.
2,.
2,.
:
1,.
2,.
3,.
RE:.
:
1,.,.
2,..,..
,:
1,.
2,.
.
3,.
RE:.
4,.
RE:.
5,.
RE:. .
6,.
RE:.
表单扩展有那些类型?
---------------------------------------
1, U联下拉?
可以实现N个下拉框的数据联动?比如Q片区,省䆾Q洲地市(jng)Q区ѝ之间的联动?/p>
2, 自动完成&自动填充.
自动完成:cMbaidu, google搜烦(ch)的自动完成?br> 自动填充:比如输入一个商品编Ppȝ׃(x)把这个商品的相关属性绑定到其它的控件上厅R?/p>
3, 输入验证.
对于一些文本框数据采集的格式有特定的要求,比如Q电(sh)话号码,手机P邮g有特定的采集格式Q输入验证就解决?jin)这个问题。即使你Ҏ(gu)则表辑օ不熟(zhn),pȝ自带的这些就可以满(zhn)的需要?/p>
4, popH返回倹{?br> 文本框的数据采集如果需要高U的查找查询Q需要个性化的定义这个窗体,此扩展设|就可以满(zhn)的要求?/p>
如何讄Q?br>---------------------------------------
1Q在?wi)的左边选择要设|的cd?br> 2Q根据系l的提示q行讄?/p>
cdQ?/b>默认分类 查看评论
B现在以流E事例说明:(x)比如B,()q种以岗位确定接受h员的模式是最常用的模式?/span>
():
A()BABBq种方式与上一个模式有惛_的地方,但是应用场景是不同的?/span>
()在表单中讄一个字D,接受人的下拉列表。指定这个hL受下一步的工作。这是最直接的一U模式,但是只能指定一个hd理。这U模式用来处理每ơ不能确定h的工作h员,q且只有一个工作h员的模式?/span>
()?/span>B
.//.,,.递归在工作流E引擎中有广泛的应用Q以以下事例来说明:(x)
/// <summary> /// ÌYt¦¦?y¢??t²Ì???Ì?ºyY /// </summary> /// <param name="nds">Ì?ä?Ì?t²Ì?¡¥?</param> publicvoid DeleteToNodesData(Nodes nds) { /*aº?Àt¦]t²Ì?ä?Ì?t²Ì?¡¥?*/ foreach (Node nd in nds) { Work wk = nd.HisWork; wk.OID = this.WorkID; if (wk.Delete() == 0) { wk.FID = this.WorkID; if (wk.Delete(WorkAttr.FID, this.WorkID) == 0) continue; } /*¦Ì¡Â:?-¦?y?t²Ì?ºyY¡^*/ DBAccess.RunSQL("DELETE WF_GenerWorkerList WHERE (WorkID=" + this.WorkID + " OR FID=" + this.WorkID + ") AND FK_Node=" + nd.NodeID); //¦?yy¡^Ì?]??ºyY¡^ DBAccess.RunSQL("DELETE WF_GenerWorkFlow WHERE WorkID NOT IN (SELECT WorkID FROM WF_GenerWorkerList )"); DBAccess.RunSQL("DELETE WF_GenerFH WHERE FID NOT IN (SELECT FID FROM WF_GenerWorkerList)"); DeleteToNodesData(nd.HisToNodes); } }
/// <summary> /// t¢º?¢¡Ât¬ /// </summary> /// <returns></returns> publicstring DoFlowOver() { // ¡¢¡é¢¡Ât¬º?]y¡^ GenerWorkFlow gwf = newGenerWorkFlow(this.WorkID); Node nd = newNode(gwf.FK_Node); string msg = this.BeforeFlowOver();
//ttt?t¹Ì?Át®¢¡Ât¬t¢º?¡^ WorkerLists wls = newWorkerLists(); wls.Retrieve(WorkerListAttr.FID, this.WorkID); foreach (WorkerList wl in wls) { WorkFlow wf = newWorkFlow(wl.FK_Flow, wl.WorkID); wf.DoFlowOver(); } 。。。。。。。。。。。。。?/span> ?/span> |
:ID,
/// <summary> /// ?t?t¹Ì?¦???Ì?]?¢¡ÂÌ? /// </summary> privateNode _GetHisPriFLNode(Nodes nds) { foreach (Node mynd in nds) { if (mynd.IsHL) return mynd; else return _GetHisPriFLNode(mynd.HisFromNodes); } returnnull; } /// <summary> /// t¹Ì?¦???]?¢¡Ât²Ì? /// </summary> publicNode HisPriFLNode { get { return _GetHisPriFLNode(this.HisFromNodes); } }
在撤消时Q是当前的操作员撤消本次发送,但是他有可能自己的错误,也有可能不需要自己处理需要其它的同岗位同节点上的人员处理?jin),所以撤消回来的工作应该?/span>1的关p,回复到工作强办的状态。以便可以让其它的同事也有机?x)参与处理这件工作。实现这个的状态就要上ơ的发送轨qw扑ֈ可以处理当前节点的工作h员,q行对他们执行工作分配?/span>
0-1000100= /*100%.
<=
应用案例Q一个工作h员受理了(jin)一件工作,当这件工作运行了(jin)n (n>2)有两U方式:(x)
1.Q向理员申请强制撤消功能?/span>
ID.
W二U类型:(x)分发式流E,也可以叫它ؓ(f)分发式多U程程。这cȝ程开始节点必L分流节点。结束节点可以是合流节点Q也可以是普通节炏V比如:(x)周例?x)流E,销售周ȝ汇报程。以“销售部周ȝ汇报程”ؓ(f)例来说明Q第一部系l定期在?/span>1W三U类型:(x)汇流式流E,也可以称为汇d多线E流E。这cLE的特点是发hE的人员是不定的,但是处理q个事务是成批的。用现实的生zMD例:(x)区门口的邮政信,邮寄信g的h是不固定的,我们把每个客L(fng)作一个工作线E,邮递员可以Ҏ(gu)需要在规定的时间去收取一ơ。如果没有一个信件要邮寄Q他׃收取为空Q也是不进行下一步。这U类型的l束点,也是不确定的可以是汇ȝ合流Ҏ(gu)受,也可以普通点l束。但是开始点必须是普通的节点?/span>{订合同-=
在实施工E这个点上,可以延很多的子程比如Q催ƾ流E,zַ程Q设计流E。等{。项目经理可以根据需要在M旉唤醒子流E。工E管理流E叫LE,催款程Q派工流E。。?/span>唤醒的子程与手工发L(fng)程的区别是它有一个流E?/span>IDID.lg所qͼ(x)大千世界Q各U流E都可以被提|归纳Q分c,抽象出来q四U模式。你可以把你分析与设计的程对号入Q驰骋业务流E引擎已l把完全实现q四U工作模式,q且0如果你是一个工作流E引擎设计h员,分析q四U模式是必须的?/span>?什么应用背景需要用到定时启?
当一个流E是定期的Q务需要手工作需要定期的启动?它就需要定时的来启?
比如:
在办公流E中:
月䆾销售例?
销售部门需要每个月定期启动一ơ月份销售例?
周工作ȝ程:
每个周需要基层h员向上部门负责h提交工作ȝ.
定期起动有几U时间模式?
定期启动的模?
手动启动:
按年启动: 讄格式:@MM-dd,hh:mm CZ:@05-01,12:01 每年???2?1分执?
按月启动: 讄格式:@dd,hh:mm CZ:@01,12:01 每月??2?1分执?
按周启动: 讄格式:@X,hh:mm (X代表周几, x=0 周末, x=1 ? ...... )
按天启动: 讄格式:@hh:mm CZ:@12:01 每天?2?1分执?
CZ:@1,12:01 每周1?2?1分执?
按小时启?讄格式:@mm CZ:@1,12:01 每周1?2?1分执?
格式说明:
多个旉点以@W号分开.
它能形象的反应出来,一个h的工作内容,l合日历面板的方式呈玎ͼ让用户对数据的感知更加直观?/p>
驰骋工作程引擎, ?x)?.0 为新老用h供这个功能,老用户将获取免费升?/p>
ccflow 工作月日?/span>
工作周日?/span>
公文菜单-利用vsto技术,因ؓ(f)没有发v程Q所以一些菜单是灰色的?/p>
发v程选择一个流E模板,公文模板是显C在下面的?/span>
{֏程
切换登陆用户