代码改变世界

[置顶]工作流模式与K2实现- (1)

2012-11-22 17:10 by 空新蔡, 432 阅读, 0 推荐, 收藏, 编辑
摘要:背景 工作流产品众多,而它们之间又缺乏统一的标准,使得不同的产品之间很难实现协同工作。为了解决这一问题,工作流管理联盟(WFMC)于1993 年成立,并提出了工作流参考模型,制定了五个标准接口。其中有一个接口是过程定义接口。几乎每个工作流产品都有自己的过程定义语言(也称为工作流语言),可以从四个方面(控制流、数据流、资源、操作)来研究流程,工作流模式(Work Flow Pattern)只是涉及到其中的控制流部分。控制流(control flow)描述了活动在不同结构中的执行顺序。控制流对我们有效认识、理解工作流规范具有很大帮助。工作流规范需要不断地扩展,以便满足新的需求,因此有必要对控制流进 阅读全文

[置顶]工作流模式与K2实现--(2)

2012-11-22 17:06 by 空新蔡, 294 阅读, 0 推荐, 收藏, 编辑
摘要:结构化过程这两个模式的共同点在于:模式所涉及流程的执行路径是由运行时决定的,而非设计时确定。包括:Arbitrary cycles(强制循环模式) 、Implicit termination(隐式终止模式)。² 11 任意循环(Arbitrary Cycles)l 描述:工作流中的一个点可以让一个或多个活动反复的执行。l 案例:“修改提交”后进入“经理审批”,但未通过,又回到“修改提交”。l K2实现:² 12 隐式终止(Implicit Termination)l 描述:在一个流程中,如果没有活动可执行了那么流程就会终止。换句话说,在工作流中没有active 状态的活动了 阅读全文

[置顶]SharePoint Designer + InfoPath 可循环回退工作流

2012-01-29 15:46 by 空新蔡, 1548 阅读, 4 推荐, 收藏, 编辑
摘要:实现可以循环回退的工作流,我们使用到Task Action->Start Custom Task Process(点击可见前一篇描叙Custom Task)使用到Task Behavior Action->Append Task.故名思意 Append Task 表示给某某用户追加一个任务,追加什么Task呢,追加当前Task.它会给追加的用户在本任务完成但未结束的时候添加一个相同的任务,但是新产生的任务的生命周期和父Task(姑且这么称呼)生命周期不太一样。它会重复父Task的三个阶段Before a Task is Assigned -> When a Task Pend 阅读全文

[置顶]SharePoint Designer 2010 - Start Custom Task Process

2012-01-29 14:21 by 空新蔡, 1348 阅读, 0 推荐, 收藏, 编辑
摘要:作为SharePoint Designer 2010的新推出的action, 它究竟有什么功能。在进入新的公司第一工作流项目里,对它做了一些研究。结果是让人惊喜的,这个工作流项目是要求用InfoPath & SPD不借助其他开发工具的条件下实现一个可回退的采购申请单工作流。最后感谢Start Custom Task Process这个Action.(注 Start Approval Process 这个Action也是在本Action上添加一些逻辑实现的)首先我们新添加一个Start Custom Task Process活动。会出现三个选项需要填写,具体需要什么简单点击一下就了解了。 阅读全文

站在K2角度审视流程--任务的独占与释放

2013-06-20 15:28 by 空新蔡, 294 阅读, 0 推荐, 收藏, 编辑
摘要:应用场景一:某件事情由A、B两人(或者更多人)完成,任务开始后,两人随时可以处理任务,只需有一人处理完成,此事情即可结束。应用场景二:某件事情由A、B两人(或者更多人)完成,任务开始后,两人随时可以处理任务,如果A先处理任务,则B此时不能看到此任务,反之亦然。只需任意一人处理完任务,此事情即可结束。应用场景三:某件事情由A、B两人(或者更多人)完成,任务开始后,两人随时可以处理任务,如果A先处理任务,则B此时不能看到此任务,反之亦然。A抢先处理任务时,如果发现任务自己无法处理,应该交由B处理,则选择释放,此时B又能看到此任务进行处理,反之亦然。衍生出来的场景还可以有很多,比如场景一中可以在处理 阅读全文

K2 blackpearl 中的业务规则(Rules)

2012-11-22 17:19 by 空新蔡, 307 阅读, 0 推荐, 收藏, 编辑
摘要:在K2流程系统中,流程中的任何一个执行节点(一个节点可以包含多个事件)都可能包含客户端事件,服务器端事件,以及子流程(IPC,Inter Process Communication)事件,或者其他事件。通常情况下,我们需要在流程节点中包含大量的业务逻辑,比如:流程节点的执行者是谁?在执行者启动流程节点任务之前哪些前提条件必须要满足,等等。流程节点是流程中的关键元素,任务执行者在流程节点做出审批、输入数据或者提取数据。 为了实现各种复杂的业务逻辑,K2提供了以下的业务规则: 1. Preceding Rule(前置规则) Preceding Rule是一种逻辑表达式,当表达式为真时,一个流程节点 阅读全文

将数据库中的表注册到K2服务中,并封装为SmartObject

2012-11-22 17:16 by 空新蔡, 347 阅读, 0 推荐, 收藏, 编辑
摘要:K2 blackpearl项目中经常需要将其他数据中的表注册到K2服务中,然后使用Smart Object进行封装,在Project或K2 Process中直接访问封装好的Smart Object中的字段,这样十分方便使用。例如,在K2 Process中,配置Activity对应的审批人(Destination Users),根据需求,这里需要从HR的数据库中的表EmployeeInfo中取得字段EmployeeName,而且这一过程是实时取数据,不需要周期性的同步,那么我们就可以把HR数据库注册到K2中,然后使用Smart Object予以封装,在配置时从Smart Object中获取数据。 阅读全文

Update Created By field

2012-04-17 18:06 by 空新蔡, 388 阅读, 1 推荐, 收藏, 编辑
摘要:今天遇到一个奇怪的问题,在更新文档库创建者字段的时候我使用item["Created By"] = user.ID;item.UpdateOverwriteVersion();总是更新不了但是在列表中,运行确很正常。折腾了大半天,终于找到一个解决方法,在更新Createdy By的时候,同时也要更新Modified By,这样才能够起到效果。只能够说变态,所以记录一下。item["Created By"] = user.ID;item["Modified By"] = item["Modified By"];ite 阅读全文

如何在Task InfoPath Form里面取到申请表单的信息

2012-01-29 14:36 by 空新蔡, 455 阅读, 1 推荐, 收藏, 编辑
摘要:通过上一篇Start Custom Task Process的介绍,其实想实现该功能很简单。首先, 我们增加一个Task Field然后在分配任务产生之前,设置该task field的值,如下:(当你对custom task的生命周期熟悉后,其实有多个地方都可以给task field赋值)。最后我们便可以在task 的InfoPath Form上看到该值。默认在Task Form上会以TextBox输入框形势显示出来,这样看上去感觉并不太好。用InfoPath打开该表单删除该输入框,添加计算值,设置默认值为该field。于是出现了上图的效果。定制好InfoPath表单后,如果你在修改workf 阅读全文

SPQuery查询用户方法

2009-04-28 10:58 by 空新蔡, 675 阅读, 0 推荐, 收藏, 编辑
摘要:用户字段类型 <where><eq><fieldrefname="PersonFieldName"/><valuetype="User">UserDisplayName</value></eq></where>这是LOOKUP字段的查询方式<where><eq><fieldrefname="PersonFieldName"LookupId="TRUE"/><valuetype="i 阅读全文