雪叶丹枫

这是我在网络上的统一帐号,无论在那个社区我都使用这些信息标志我自己

导航

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

Posted on 2011-03-23 14:47  雪叶丹枫  阅读(399)  评论(0编辑  收藏  举报

应用场景一:某件事情由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也就是用多个游泳池来解决问题,至于每个游泳池多少泳道就无所谓了。