起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 2045|回复: 47

【结贴】寻找一种解决方案

[复制链接]
发表于 2009-9-30 09:12:26 | 显示全部楼层 |阅读模式
发给某人的代办任务,如果他正好有事,不处理的话,那么整个流程就在他那儿停滞下来了。
我想实现,如果一定的时间段内他没有处理,那么这些代办任务就取消掉,并通知给他的领导,或者通知给发代办任务给他的人。也就是说,如果他不处理,总得让别人知道,也好让别人采取别的处理措施。
我看流程环节的执行规则上都有“限定时间”,能不能在这个时间上触发个事件什么的呢?
还有一点:最好是能找个统一通用的方法,对所有的代办任务都适用
回复

使用道具 举报

发表于 2009-9-30 09:24:36 | 显示全部楼层
http://bbs.justep.com/forum.php?mod=viewthread&tid=30251
跟楼主提的这个问题类似,处理方式如4楼。
查任务表和任务消息表,依据任务的限定时间,然后做出相对应的处理。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-30 09:32:18 | 显示全部楼层
两个帖子都是我发的,针对目前我的系统来说,一个人的业务数据是非常多了,也涉及到很多张表,我要是过一段时间,就遍历一次数据库中的众多表,那该多麻烦啊。况且组织机构中人员也不是一个,每一个人所要处理的业务数据也是不同的,可以说,这种实现方式的工作量是浩瀚的,并且效率也很低。能不能避过这种方法呢?
所以很想寻求一种简单点的方法。
回复 支持 反对

使用道具 举报

发表于 2009-9-30 09:37:56 | 显示全部楼层
没有更简单的方法。
你可以通过查找任务数据中(任务表和任务消息表)符合条件的数据(限定时间、处理人为当前登陆账号的),然后去任务业务数据表中查找该任务所对应的业务数据,然后发起自己定义的某种任务类型(任务关联进行相关配置)发给对应的通知对象。同时对该任务的状态做出修改。基本思路还是这样的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-30 10:06:08 | 显示全部楼层
ok ,我就按这种思路做,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-30 16:40:01 | 显示全部楼层
出现了一个问题,如下图所示,错误出现在:clr:= lTasks.Items[0].TaskMessages[j].ReceiverName;  这句话上,一开始这段程序没有出错,后来我换了个人登录,把zs换成了ls,然后这句话就出错了,后来发现,如果还换做zs登录,这句话就不报错,不知道什么原因。

qq2.png

23.39 KB, 下载次数: 430

回复 支持 反对

使用道具 举报

发表于 2009-9-30 16:43:13 | 显示全部楼层
调试跟踪一下,看看对象是否为空,如果为空,那么加上判断
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-30 17:00:38 | 显示全部楼层
果然是空对象的原因。
回复 支持 反对

使用道具 举报

发表于 2009-10-9 08:42:39 | 显示全部楼层
ok,有问题继续反馈。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-10 13:31:18 | 显示全部楼层
把一条任务回退给它的发送者,该如何实现呢?

目前的情况是,我已经把过期任务给查出来了,主要代码如下:
try
         DoGetFlowGUIDs(flow_field_value,lFlowParam.GUIDs);
         lTaskParam.States := [TTaskState.tsStarted, TTaskState.tsProcessing, TTaskState.tsWaiting];
         //以给定的条件查询任务(这里给定的条件由lFlowParam给出,根据流程Guid值查询,lTaskParam条件是按照任务状态,只查询出需要处理的任务)
         Flow.FlowEngine.GetTasks(lFlowParam, lTaskParam, lTasks);
        if lTasks.Count<>0 then
        begin
               fsr:=(lTasks.items[0] as TTask).SenderName; //发送人
        dialogs.ShowMessage(fsr);
        lTasks.Items[0].TaskMessages[j].State := TTaskMessageState.tmsCanceled;
        lTasks.Items[0].State := TTaskState.tsCanceled;
        lTasks.Items[0].SaveToDB;
        end;
       finally
         lFlowParam.Free;
         lTaskParam.Free;
         lTasks.Free;
       end;
想在此基础上把过期任务回退给它的发送者。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-15 01:46 , Processed in 0.046482 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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