抢单模式的研究2

上篇对抢单模式进行了简单的总结,这篇对其中具体的流程进行进一步的说明

1.提单 100393用户提出一个问题

q表

quesiton_iduser_idassign_user_idstatustime_out
5100393 02018-02-04
q_flow表

question_idquestion_user_idanswer_user_idflow_status
    
    
    

往问题表中插入一条记录,这时的status状态为0,q_flow流转表中没有记录

2.发单,系统按照指定的分发策略将单分配到若干个回答者手中,问题表中的记录status状态不变,流转表中每个分配到的用户会插入一条记录,流转状态flow_status为0

q表

quesiton_iduser_idassign_user_idstatustime_out
5100393 00000-00-00
q_flow表

question_idquestion_user_idanswer_user_idflow_status
5100393100010
5100393100020
5100393100030
3.抢单,分配到的回答者中一个抢单后,q表中的status状态变为已经分配(抢单),同时设置超时时间,流转表中的抢单者(10002为例)的状态变为2(抢单未答),其他的分配者的状态变为1(已被抢单),状态发生变化,其他分配到的回答者不可再抢单

q表

quesiton_iduser_idassign_user_idstatustime_out
5100393 12018-02-04
q_flow

question_idquestion_user_idanswer_user_idflow_status
5100393100011
5100393100022
5100393100031
4.到抢单这里后,后续的情况分为以下几种,回复,放弃,超时,这三种情况中流转表抢单者对应的记录状态发生变化,其他的同一批次的分配者的状态不发生变化。

1)回复,若抢单者抢单后正常回答,则流转中其对应状态变为9,其他记录的状态不变,q表中的状态也不变

q表

quesiton_iduser_idassign_user_idstatustime_out
5100393 12018-02-04
q_flow表

question_idquestion_user_idanswer_user_idflow_status
5100393100011
5100393100029
5100393100031
若为超时或者放弃作答,则实质都是抢单者丧失回答机会,超时为被动丧失,放弃为主动丧失,这两种情况与作答的情况相比,多出q表中的状态都会发生变化,流转表对应记录的状态也发生变化。进入重新待发单状态

2)放弃作答,这种情况为用户通过点击放弃按钮主动触发,不需要系统来触发

q表

quesiton_iduser_idassign_user_idstatustime_out
5100393 02018-02-04
q_flow表

question_idquestion_user_idanswer_user_idflow_status
5100393100011
5100393100023
5100393100031
3)超时。这种情况不是用户手动触发,需要系统来判断超时,程序触发

在抢单动作被触发后,q表中会有一个超时时间,此时q表中对应的记录的status为1,超时时间为预先设置的超时时间,系统后台会有一个线程实时扫描这类status为1,超时时间小于当前时间的超时记录,扫描到后会将q表中的记录状态置为0,q_flow表中的对应记录的状态置为4,即也回到待发单状态

q表

quesiton_iduser_idassign_user_idstatustime_out
5100393 02018-02-04
q_flow表

question_idquestion_user_idanswer_user_idflow_status
5100393100011
5100393100024
5100393100031
小结:对于一个问题的同一批次的记录,假如有N条,则流转表中最终的记录的状态为(N-1)条状态为1,还有一条记录的状态可以为3,4,9。

关于超时,超时在这里指的有人抢单以后,抢单者一直不回答会出现超时,即问题处于已经被抢单状态以后才会出现超时,如果一个问题提出分配进入待抢单状态,这时有两种选择,一是不超时,不触发系统重新分配,问题会一直等待第一批分配者中的某个人抢单;二是超时,系统将这个问题再次分配给第二批人,第二批人和第一批的人都可以抢单,即增加抢单的人数。目前这里设置为不超时,超时仅指问题被抢单以后抢单者一直不回答导致的超时。


再次分发

如果抢单者抢到单以后,放弃或者超时,触发进入待发单状态后,系统会自动将问题再次分发,为待抢单状态,问题会被分配给下一批回答者来抢单,q表中的status状态仍为0,flow表中也会插入下一批分配到的回答者的记录

q表

quesiton_iduser_idassign_user_idstatustime_out
5100393 02018-02-04
q_flow表

question_idquestion_user_idanswer_user_idflow_status
5100393100011
5100393100024
5100393100031
5100393101110
5100393102220
5100393103330
后面的流程和首次抢单的流程一致。

二。除了按照以上的流程通过抢单方式来进行问答以为,还可以向指定的回答者提问,即不通过抢单,直接专人回答的方式,这种情况表的变动如下。

1.提问,指定专人的提问环节相当于抢单模式的提单,发单,抢单三个步骤的合并,其中第三个抢单环节只有一个抢单者。q表中的status状态置为1,同时超时时间设置为永不过期,流转表中只插入一条记录,相当于只有一个抢单者,状态置为2

q表

quesiton_iduser_idassign_user_idstatustime_out
51003932000119999-12-30
q_flow表

question_idquestion_user_idanswer_user_idflow_status
5100393200012

后面的流程和抢单模式下的流程是一致的,只是正常设置为回答者不可以放弃。也不会超时。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值