起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 283|回复: 14

【结】非流程通知如何删除?**

[复制链接]
发表于 2008-9-26 14:36:35 | 显示全部楼层 |阅读模式
用代码发送的通知如何删除?
回复

使用道具 举报

发表于 2008-9-26 15:50:04 | 显示全部楼层
楼主是如何用代码发送的。
这个通知有对应的流程吗?有对应的业务数据吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-26 16:01:38 | 显示全部楼层
以下是发通知代码.
------------------------------------------
VAR
  AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField, ABizFieldValue,
  ADept, APosition, APerson : string;
begin
  try
    AFuncURL := 'Biz:\BJRLJTSBYT\BZFBFUNC.Func';                                 // 自定义任务关联功能
    ATaskTypeName := '标准发布';                                          // 自定义任务关联的任务名称
    ATaskTypeID := 'BZFB';                                    // 自定义任务关联的任务ID
    ASubject := '代码启动通知';
    ABizField := 'Biz:\BJRLJTSBYT\RLSBYTSJK.DATABASE\SB_XDSQ.Table\FGUID.Field';  // 关联字段
    ABizFieldValue := 'EE9A8FF584524EE5A24DB006C531D0C0';               // 关联字段值
    ADept := '';//dsb.DataSet.FieldByName('FDept').AsString;;                      // 接收部门
    APosition := '';//dsb.DataSet.FieldByName('FPosition').AsString;;              // 接收岗位
    APerson := 'test';//dsb.DataSet.FieldByName('FPerson').AsString;;                  // 接收人
    UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField,
      ABizFieldValue, ADept, APosition, APerson);
    jsDialogs.ShowMsg('启动 ' + ASubject + ' 成功', '');
  finally

  end;
end;
//-------------------------------------------------------------------------------------------------------------
procedure TMainForm.UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID,
  ASubject, ABizField, ABizFieldValue, ADept, APosition, APerson : string);
VAR
  lOrgURL : TOrgURL;
  lTask ,lTask1  : TTask;
  lTaskBizData : TTaskBizData;
  lTaskBizDataRec : TTaskBizDataRec;
begin
  lTask := TTask.Create;
  lTask1:=ttask.Create;

  {任务接受者}
  lOrgURl := TOrgURL.Create(ADept, APosition, APerson);

  {任务业务关联数据定义}
  lTaskBizData := TTaskBizData.Create;
  lTaskBizDataRec := TTaskBizDataRec.Create;
try
  lTaskBizDatarec.BizField := ABizField;       //业务数据的关键字段,用于检索业务数据
  lTaskBizDataRec.Value := ABizFieldValue;     //业务数据的关键字段值
  lTaskBizData.BizDataKeys.Add(lTaskBizDataRec);
  //lTaskBizData.BizDatas.Add(lTaskBizDataRec);

  {任务信息的定义}
  lTask.Subject := ASubject;
  lTask.Kind:= '';                             //无流程任务为空
  lTask.TaskType := ATaskTypeID;               //任务类型,如:工作任务:WORKTASKDEAL, WORKTASK
  lTask.TaskTypeName := ATaskTypeName;
  lTask.FuncURL := AFuncURL;                   //处理任务的功能
  lTask.SenderDeptID := ADept;
  lTask.SenderPositionID := APosition;
  lTask.SenderID := APerson;
  lTask.NeedProcess := false;
  lTask.BizDatas.Add(lTaskBizData);            //设置业务数据与任务关联关系, 保存任务业务关联信息到‘系统空间\系统数据库\任务业务数据表’
  lTask.TaskMessages.AddTaskMessage(nil, lOrgURl, TTaskmessagestate.tmsSend, 0,
    False);                                    //添加到任务列表
// business.Forms.Dialogs.ShowMessage(ltask.GUID);


  {保存任务}

  Business.Model.Flow.Flow.FlowEngine.SaveTask(lTask);             //保存任务信息到‘系统空间\系统数据库\任务表’,任务消息到‘任务消息表’
finally
  //lTaskBizDataRec.Free;
  //lTaskBizData.Free;
  lTask .Free;
  lTask1.free;
  lOrgURL.Free;
end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-26 16:03:53 | 显示全部楼层
这个是非流程通知,不涉及到流程啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-26 17:11:27 | 显示全部楼层
顶起。。。。
回复 支持 反对

使用道具 举报

发表于 2008-9-26 17:40:36 | 显示全部楼层
你直接把这个任务和它对应的任务消息状态修改成“以完成”就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-27 08:43:37 | 显示全部楼层
任务是已经结束的任务,
消息是代码发送的.
那么这个消息怎么才能定位呢?
因为我是发给多人的.
只有读过的才设置完成.
回复 支持 反对

使用道具 举报

发表于 2008-9-27 09:04:33 | 显示全部楼层
你需要在接收者读消息时,将当前任务消息的状态结束。方法有两个:
1、根据任务guid、接收者所在部门、岗位、人员ID,到任务消息表查询
2、利用平台的函数库,访问当前任务的消息列表,从中找出对应的消息(条件和1一样)
TTask.TaskMessages
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-27 10:47:57 | 显示全部楼层
不知道有没有一些代码参考,或给个连结...
回复 支持 反对

使用道具 举报

发表于 2008-9-27 11:54:31 | 显示全部楼层
不知道楼主准备在什么时机结束任务?
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 07:39 , Processed in 0.043889 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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