起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 161|回复: 9

【结贴】流程通知处理后,待办任务中还有显示?紧急!!!**

[复制链接]
发表于 2008-1-2 11:57:26 | 显示全部楼层 |阅读模式
流程通知 是通过论坛里提供的函数代码实现的;代码如下:
unit TaskPubFunc;

interface

uses
  Business.System, Business.Model, Business.Model.Flow, Business.Model.Org;

type
  TTaskPubFunc = class(TBizLibrary)
  private
    {private declarations}
  public
    procedure UserStartFlow(AFlowUrl,ADept,ARole,APerson,AStartProc,AFlowID,
      ASubject,ADescription:string);
    procedure UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID, ASubject,
      ABizField, ABizFieldValue, ADept, APosition, APerson : string);
  end;

implementation

{无流程任务
任务表,任务业务数据表,业务数据表: 通过任务guid, 业务数据guid关联}
procedure TTaskPubFunc.UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID,
  ASubject, ABizField, ABizFieldValue, ADept, APosition, APerson : string);
VAR
  lOrgURL : TOrgURL;
  lTask   : TTask;
  lTaskBizData : TTaskBizData;
  lTaskBizDataRec : TTaskBizDataRec;
begin
  lTask := 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.BizDatas.Add(lTaskBizData);            //设置业务数据与任务关联关系, 保存任务业务关联信息到‘系统空间\系统数据库\任务业务数据表’

  lTask.TaskMessages.AddTaskMessage(nil, lOrgURl, TTaskmessagestate.tmsSend, 0,
    False);                                    //添加到任务列表

  {保存任务}
  Flow.FlowEngine.SaveTask(lTask);             //保存任务信息到‘系统空间\系统数据库\任务表’,任务消息到‘任务消息表’
finally
  //lTaskBizDataRec.Free;
  //lTaskBizData.Free;
  lTask .Free;
  lOrgURL.Free;
end;

end;

{流程表,流程ID表,任务表,任务消息表}
procedure TTaskPubFunc.UserStartFlow(AFlowUrl, ADept, ARole, APerson, AStartProc, AFlowID,
  ASubject, ADescription:string);
var
  lBizURL: TBizURL;
  lFlowValue: TFlowValue;
  lFlowControl: TFlowControl;
  lExecutor: TOrgURL;
begin
  lBizURL := TBizURL.Create;
  lFlowValue := TFlowValue.Create;                    //流程实例
  lFlowControl := TFlowControl.Create(Self.Context);  //流程控制组件
  lExecutor := TOrgURL.Create(ADept, ARole, APerson); //执行者
  lBizURL.URL := AFlowUrl;                            //流程url
  try
    lFlowValue.IDs.Add(AFlowID);                      //流程ID
    lFlowValue.Subject := ASubject+AFlowID;          //流程主题
    lFlowValue.Description := ADescription;           //流程描述
    //启动流程实例           过程url  环节ID      执行者     流程实例值
    lFlowControl.StartupFlow(lBizURL, AStartProc, lExecutor, lFlowValue);
    //流程发送者信息
    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SenderDeptID := ADept;
    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SenderPositionID := ARole;
    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SenderID := APerson;
    //流程实例数据保存到数据库
    lFlowControl.FlowRunnerbyIndex[0].CurrentTask.SaveToDB;
  finally
    lFlowControl.Free;
    lFlowValue.Free;
    lBizURL.Free;
  end;
end;
回复

使用道具 举报

 楼主| 发表于 2008-1-2 12:00:08 | 显示全部楼层
功能调用的代码如下:
var
  tpf : TTaskPubFunc;
  AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField,
  ABizFieldValue,ADept, APosition, APerson : string;
begin
    tpf := TTaskPubFunc.Create(Self.Context);
    try
      AFuncURL := 'Biz:\ZHJHGL\BMNDJHXDGN.FUNC';
      ATaskTypeName := '部门年度计划修订';
      ATaskTypeID := 'WORKTASKDEAL';
      ASubject := '通知:' + DataSetBroker.DataSet.FieldByName('FTopic').AsString + '修订';
      ABizField := 'Biz:\ZHJHGL\ZHJHSJK.DATABASE\GZD.TABLE\FID.Field';
      ABizFieldValue := DataSetBroker.DataSet.FieldByName('FID').AsString;
      ADept := DataSetBroker.DataSet.FieldByName('FPostDept').AsString;;
      APosition := DataSetBroker.DataSet.FieldByName('FPostPtm').AsString;;
      APerson := DataSetBroker.DataSet.FieldByName('FPoster').AsString;;

      tpf.UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField,
        ABizFieldValue, ADept, APosition, APerson);

      jsDialogs.ShowMsg('启动 ' + ASubject + ' 成功', '启动无流程任务');
    finally
      tpf.Free;
    end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-2 12:02:55 | 显示全部楼层
运行后,待办任务处理进去,流传后待办任务中还是存在,看系统数据表:任务表-状态 为 “尚未处理” ,任务消息表-状态  为 “未接收” , 该如何修改?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-2 13:14:31 | 显示全部楼层
自己顶
回复 支持 反对

使用道具 举报

发表于 2008-1-2 13:28:41 | 显示全部楼层
无流程任务不能流转,不知楼主怎么做的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-2 13:42:33 | 显示全部楼层
Biz:\ZHJHGL\BMNDJHXDGN.FUNC   该功能为流程入口功能
回复 支持 反对

使用道具 举报

发表于 2008-1-2 13:55:25 | 显示全部楼层
应该用UserStartFlow函数吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-2 13:56:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2008-1-2 14:40:37 | 显示全部楼层
要启动流程,用7楼的函数。楼主1楼有2个函数的,用第二个函数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-2 15:53:46 | 显示全部楼层
先结贴吧
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-4 13:56 , Processed in 0.037196 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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