起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 578|回复: 22

【搞定】关于删除流程业务数据后删除流程、任务信息的问题**

[复制链接]
发表于 2008-1-7 15:26:56 | 显示全部楼层 |阅读模式
流程的启动模式设置为“处理时”,重复处理数据范围的模式设置为“新建”;在流程功能中删除了业务数据,写代码代码删除了相关流程、任务的数据,保存后会启动一个新的流程实例,其业务数据是空的,现有如下问题:
1、平台内部是如何根据业务数据生成流程实例的?
2、怎样才能使平台在上述条件下不再生成新的流程实例?
回复

使用道具 举报

 楼主| 发表于 2008-1-7 16:22:25 | 显示全部楼层
请帮忙解决一下!等待中。。。。
回复 支持 反对

使用道具 举报

发表于 2008-1-7 17:25:41 | 显示全部楼层
没有看懂你的意思
你意思“流程的启动模式设置为“处理时”,重复处理数据范围的模式设置为“新建””这样设置后,进入流程的入口功能,录入一些数据没有保存(提交到后台数据库),然后删除业务数据,保存,此时发现启动一个新的流程实例,流程字段值是空的,是这样吗?还是进入流程的入口功能,录入一些数据保存(提交到后台数据库),然后删除业务数据,再保存,此时发现启动一个新的流程实例,有流程字段为空值的流程实例?
如果都不是,
1、请先按我的描述,描述一下操作,
2、帖一下你看到的效果图,以及描述一下你要实现的效果。
回复 支持 反对

使用道具 举报

发表于 2008-1-7 17:27:39 | 显示全部楼层
在流程功能中删除了业务数据,写代码代码删除了相关流程、任务的数据,保存后会启动一个新的流程实例

在哪个流程功能中写代码删除?

保存后会启动一个新的流程实例? 删除了后保存什么?

看不太懂。

请再详细描述一下您已经实现的功能和想要实现的功能。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-7 17:31:32 | 显示全部楼层
最初由 atiger 发布
[B]没有看懂你的意思
你意思“流程的启动模式设置为“处理时”,重复处理数据范围的模式设置为“新建””这样设置后,进入流程的入口功能,录入一些数据没有保存(提交到后台..

以下省略...... [/B]

是后者,是进入流程的入口功能,录入一些数据保存(提交到后台数据库),然后删除业务数据,再保存,此时发现启动一个新的流程实例,有流程字段为空值的流程实例。
回复 支持 反对

使用道具 举报

发表于 2008-1-8 08:34:16 | 显示全部楼层
应该不会这样的,
1、告知你使用的版本号(Studio的版本),我们重现看看。
2、最好楼主做个简单重现的例子,省的来来回回确认细节,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-8 08:47:44 | 显示全部楼层
1、版本是2819;
2、我们在客户现场实施时间比较紧张,所以一时抽不出时间来做例子,请见谅!不过我可以截一些图片穿上来。
回复 支持 反对

使用道具 举报

发表于 2008-1-8 09:12:21 | 显示全部楼层
那好,
1、把代码代码删除了相关流程、任务的数据,的代码帖出来,
2、并告知代码放在哪个事件上,
3、你是怎么保存的?是用数据导航的保存按钮来保存的吗?如果不是,请告知如何保存,如果是代码也把代码帖出来,并告知代码放在哪个事件上,
4、效果图
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-8 09:20:02 | 显示全部楼层
try
      sComStr := 'begin ';
      sComStr := sComStr + 'DELETE FROM tflow where FGUID=''' + sFlowGUID + '''; ';
      sComStr := sComStr + 'DELETE FROM tflowid where fflowguid=''' + sFlowGUID + '''; ';
      sComStr := sComStr + 'DELETE FROM ttask where fflowguid=''' + sFlowGUID + '''; ';
      qFlowProc := TQuery.Create(nil);
      qFlowProc.ConnectionString := 'DATABASEURL=Biz:\SYSTEM\SYSTEM.DATABASE';
      with qFlowProc do
      begin
        Close;
        CommandText := 'SELECT fguid FROM ttask WHERE fflowguid = ''' + sFlowGUID + ''' ';
        Open;
        for iIdx := 0 to RecordCount - 1 do
        begin
          sTaskComStr := sTaskComStr + 'DELETE FROM ttaskbizdata where ftaskguid=''' + FieldByName('fguid').AsString + '''; ';
          sTaskComStr := sTaskComStr + 'DELETE FROM ttaskmessage where ftaskguid=''' + FieldByName('fguid').AsString + '''; ';
          Next;
        end;
        if sTaskComStr <> '' then
          sComStr := sComStr + sTaskComStr;
        sComStr := sComStr + ' end;';
        Close;
        CommandText := sComStr;
        Execute;
      end;
    finally
      if Assigned(qFlowProc) then
        qFlowProc.Free;
    end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-8 09:23:02 | 显示全部楼层
我们的保存是自己写的代码实现的,分为提交前的处理,数据的提交和提交后的处理,这三步处理放在了同一事务中,我将删除流程的代码放到了提交后的处理中。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-4 21:42 , Processed in 0.040240 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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