对象列表的更改

  现在加了一些新的功能,获取列表这个地方又不得不再动了。

  首先是加入自定义对象,而且对象有可能是科室,组或操作员

  传来的字符窜我要先解析成成一个名单,然后再跟当前的列表比较

  比如:字符串为‘departcode:0021|opercode:0039|group:0001’

  我要解析成

        0, 0021

        2,0039

        1,0001

   然后在比较的时候的判断

  如果是科室和操作员,我可以直接跟当前的USERLIST比较,但如果是GROUP的话,我就要查询数据库,获取出这个group的操作员列表,然后再跟当前USERLIST比较,当然,直接发送也没关系,不过在优化角度上不好。

 

  然后再想一下这个自定义列表的实现流程:

       首先是客户端先把这些信息用这个函数传给我,

        function SendTextEx(MsgText,DestStr:Pansichar;Interval:integer;

                      ViewMode:integer=0;ValidDate:integer=72):bool;

       我把这些消息写入TMSG结构体中,然后添加到列表,但是这个消息是没有processcode(流程编号)的,为了跟其他的消息区分开,我可以写一个统一的值。然后就要保存在数据库,并添加到消息列表了,这里就存在一个查看模式的问题,就是VIEWMODE,如果为0,表示查看即消除,如果为1,则必须对象列表中的每个人看了才不再提醒,这就需要把哪些看了记录下来,有两种方法:

     一个是一上来保存的时候就把这个消息的对象列表保存在数据库里,这里存在一个解析的问题,如果是自定义列表,我是该在前台解析还是后台呢,如果是前台,保存到数据库的时候有点麻烦,如果是数据库中解析,那么我将消息保存其中的时候,列表也保存了下来,然后在分发的时候,我只需要在数据库中获取操作员代码列表,然后直接跟前台比较就可以了,倒是简单了一些。

    一个是上来后不保存列表,只是哪个操作员处理了,会在数据库中记录一下,然后我获取列表后会跟数据库中的列表比较一下,提取出还没发送的列表,然后进行分发,这个难度差不多,而且前面获取列表的部分,两种模式是一样的。只是后面VIEWMODE为1时,会跟数据库比较一下。

      这两种方法都可行,,数据库中可以用临时表,DELPHI中我要建一个结构体数组,其实差不多,获取列表的时候,第一种只要跟数据库比较就OK了,第二种,则需要先获取列表,再跟数据库进行比较,其实从性能上来,第一种更好一点,但第一种的问题在于,数据库中保存的数据可能较多,但两者都要将全部的消息写入,所以也不存在了。这里还有一个问题,还要考虑VIEWMODE为0的情况,这种情况下如果果都在数据局获取列表,性能上不是最好的,所以最好还是从当前列表中获取。

    然后就是保存到临时列表的问题,VIEWMODE为0,肯定是保存在列表中的,那么为1的情况呢?如果保存在列表里,也是可行的,做一个判断,然后在获取列表时才读取数据库

     OK,就采用第一种,然后消息同样保存在消息列表中,获取列表时,对VIEWMODE为1的,尽量跟当前列表进行比较。

 

      一边写一边理清思路,写出来的东西也比较乱,有点自问自答的样子, 大家看了一笑置之则可

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值