设为首页 收藏本站
查看: 1066|回复: 0

[经验分享] SharePoint工作流解决方案QuickFlow系列(2)--Task

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-9-24 09:20:29 | 显示全部楼层 |阅读模式
  任务是工作流的核心,一个工作流系统如何方便的表达任务分发的逻辑是衡量这个工作流系统可用性的重要标准之一.
  SharePoint默认提供了CreateTask , OnTaskChanged,CompleteTask来实现对一个任务的分配和处理.
  每次分配一个任务都要处理三个Activity,有点"麻烦",所以QuickFlow将这三个活动整合成一个活动—Task,通过单一的Task活动,即可实现任务的处理逻辑.
  将Task活动拖入Flowchart设计器后,可以发现其如下的属性:
DSC0000.png
  User : 用来指定任务的操作人,Task内部会自动给这个用户分配任务,并设置任务的操作权限。
  TaskTitle:任务的名称
  TaskType : 任务表单的ID,跟workflow.xml中的TaskX_URN配置对应。
  TaskStep : 任务所属的步骤,这个步骤会直接显示到列表中的WorkflowStep字段中.WorkflowStep是QuickFlow自动给工作流管理的列表或文档库添加的栏,用来记录当前流程步骤。 很多客户都会要求列表中能明确的现实出当前流程处于那个步骤,这是,你要你启动工作流后,修改视图,将那个WorkflowStep字段显示出来即可,你可以修改WorkflowStep的字段名。
  AutoReturn : 当为true时,任务完成后自动返回到来源的任务,可以用于多次审批拒绝时都返回给提交人,然后提交人提交或自动返回上一次的审批人。
  TaskOutcome:任务结果。可以在InfoPath表单中设置一个__TaskOutome字段,这个字段的最终值及是TaskOutcome的值。
  IncomeSync:输入同步.当上一级审批是多个同步的活动时,不要设置这个属性为true,这样,只有上一级的所有活动都执行完成后才会执行此活动。
  Task同时具有如下事件:
  Initialized :  活动初始化事件。
  TaskCreating : 任务创建事件,一般在此事件中给任务属性赋值。如:
  private void task1_TaskCreating(object sender, TaskEventArgs e)
       {
           //set infopath form field value
           e.TaskProperties.ExtendedProperties["someInfoField"] = "";
           Task t = (Task)sender;
           t.User = "domain/userAccount";
       }  
  Competed : 活动完成事件,一般在此事件中可以获取到用户的输入数据,如:
  private void task1_Completed(object sender, EventArgs e)
       {
            Task t = (Task)sender;
            string approveResult = t.TaskOutcome;
           string approveComments = t.TaskProperties.ExtendedProperties["comments"];
       }  
  
  常见开发问题:
  1)多级审批时如何将上一级审批的审批意见显示到下级审批?
  答:在上级活动的Completed事件中将审批意见保存到一个全局字段中,然后在下级审批任务的TaskCreating事件中给InfoPath赋值。如:
  string approval1Comments ; //用来保存上级审批意见的字段  
  private void task1_Completed(object sender, EventArgs e)
       {
           Task t = (Task)sender;
           string approveResult = t.TaskOutcome;
           approval1Comments = ""+t.TaskProperties.ExtendedProperties["comments"];
       }  
  private void task2_TaskCreating(object sender, TaskEventArgs e)
        {
            e.ExtendedProperties["comments"] = approval1Comments;
        }  
  2)为什么有时候直接访问Task的属性不能获取到值?
  答:为了实现一个活动可以执行任意多次,QuickFlow的Activity调度服务会在活动执行时动态创建一个活动,而不是执行原始的活动,设计器上那个活动只是一个原型 ,所以通过活动的事件访问活动时,除了通过事件参数,还可以将事件的第一个参数(object sender),进行类型转换,这个object一定就是执行中的活动。
  为了Decision活动可以直接访问”原型”活动,QuickFlow在活动执行完成后会进行属性同步,所有Decision是可以直接访问
  原型活动的TaskOutcome属性的。
  要完全避免属性访问的问题,可以将要访问的属性绑定到工作流类的字段,这样就总是可以访问了。
DSC0001.png
  示例代码下载:
  http://files.cnblogs.com/jianyi0115/QuickExample.zip

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118030-1-1.html 上篇帖子: SharePoint 2010增强后的通知功能 下篇帖子: MOSS推荐之2- Windows SharePoint Services对象模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表