zoukankan      html  css  js  c++  java
  • 站在K2角度审视流程任务的独占与释放

    应用场景一:某件事情由A、B两人(或者更多人)完成,任务开始后,两人随时可以处理任务,只需有一人处理完成,此事情即可结束。

    应用场景二:某件事情由A、B两人(或者更多人)完成,任务开始后,两人随时可以处理任务,如果A先处理任务,则B此时不能看到此任务,反之亦然。只需任意一人处理完任务,此事情即可结束。

    应用场景三:某件事情由A、B两人(或者更多人)完成,任务开始后,两人随时可以处理任务,如果A先处理任务,则B此时不能看到此任务,反之亦然。A抢先处理任务时,如果发现任务自己无法处理,应该交由B处理,则选择释放,此时B又能看到此任务进行处理,反之亦然。

    衍生出来的场景还可以有很多,比如场景一中可以在处理任务时增加一个独占功能,在必要时将任务独占住,另外的人无法看到。多人可以同时处理任务,实现方式可以有多种:实例化多个任务,每人一个实例,单独完成。也可以只实例化一个任务,使用多个Slot(可以使用泳道概念来理解),每人一个泳道,互不干涉。好比两人游泳的比赛,可以将两人安排的两个长度一样的游泳池中(一个任务的多次实例化),同时发令开始游泳,谁先到谁赢,也可以在一个游泳池中划分出两个泳道,每人一个泳道,同时发令开始游泳,谁先到谁赢。区别在于使用的资源不一样。

    应用场景四:某件事情由A、B两人完成,任务开始后,两人可以同时处理任务,当A昨晚时,需要等待B完成才能继续做下一件事情,反之亦然。只有当两人都处理完成时,此事情才算结束。

    分为多人处理的任务:

    1. 如果这多人之间存在竞争关系(同一时刻只能有一人处理)时,K2 Destination Rule的Options必须设置为Plan just once,且Slot为1。也即任务只实例化一次,换句话说就是只有一个游泳池,一个泳道,谁先跳下去就谁来游这一次成绩,有一个人跳下去占用了泳道时,其他人就不能跳下去了。如果先跳下去的人抽筋了,则需要做一个申明(Realse),其他人才可以来竞争这个泳道。
    2. 如果多人之间不是竞争关系,则K2 Destination Rule设置方式可以多样:K2 Destination Rule的Options可以设置为Plan just once,Slot设置为Create slot for each destination。也可以K2 Destination Rule的Options设置为All at once,Slot随意设置。 Destination Rule的Options设置为Plan just once也就是用一个游泳池多个泳道方式来解决,K2 Destination Rule的Options设置为All at once也就是用多个游泳池来解决问题,至于每个游泳池多少泳道就无所谓了。
  • 相关阅读:
    101个微软提供的Visual Studio 2005示例[转贴]
    验证码的三种做法[纯数字][纯汉字][字母\数字\汉字混合]C#
    XML做数据库操作之 我浑了
    推荐几个用得上且免费的 .NET控件
    一些怪得你没想过的软件,大多还是有用的!
    ASP.NET 程序中常用的三十三种代码[转载与 aspcool]
    js入门系列演示·数组
    AJAX!?!入门之道
    js入门·移动窗体/弹出提示
    javascript入门系列演示·函数的定义以及简单参数使用,调用函数
  • 原文地址:https://www.cnblogs.com/xqyi/p/1992514.html
Copyright © 2011-2022 走看看