起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 512|回复: 4

【搞定】再问无流程任务?**

[复制链接]
发表于 2007-1-26 16:13:33 | 显示全部楼层 |阅读模式
现象: A 执行者发送任务给B

         B看到任务的发起者是应该是A .但是现在测试的结果是任务的
提交人和处理人都是 B .

X3 2617

参考代码:

No.12  
首先在平台中定义任务关联,然后创建任务。参考代码如下:
unit TaskPubFunc;

interface

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

type
  TTaskPubFunc = class(TBizLibrary)
  private
    {private declarations}
  public
    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;

end.
// *******************************************************************************

// 创建任务

procedure TDMCJWLCRW.CreateCustomTaskClick(Sender: TObject);
VAR
  tpf : TTaskPubFunc;
  AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField, ABizFieldValue,
  ADept, APosition, APerson : string;
begin
  if dsb.DataSet.FieldByName('GUID').AsString = '' then exit;

  tpf := TTaskPubFunc.Create(Self.Context);
  try
    AFuncURL := 'Biz:\PXAL\ZDYYWGN.Func';                                 // 自定义任务关联功能
    ATaskTypeName := '我的功能';                                          // 自定义任务关联的任务名称
    ATaskTypeID := 'MYCUSTOMFUNCDEAL';                                    // 自定义任务关联的任务ID
    ASubject := dsb.DataSet.FieldByName('Subject').AsString;
    ABizField := 'BIZ:\PXAL\DEMOSJK.DATABASE\ZDYRWGLDEMOB.TABLE\GUID.Field';  // 关联字段
    ABizFieldValue := dsb.DataSet.FieldByName('GUID').AsString;               // 关联字段值
    ADept := dsb.DataSet.FieldByName('FDept').AsString;;                      // 接收部门
    APosition := dsb.DataSet.FieldByName('FPosition').AsString;;              // 接收岗位
    APerson := dsb.DataSet.FieldByName('FPerson').AsString;;                  // 接收人

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

    jsDialogs.ShowMsg('启动 ' + ASubject + ' 成功', '启动无流程任务');
  finally
    tpf.Free;
  end;
end;




向版主反映这个帖子 | IP: 已记录
回复

使用道具 举报

发表于 2007-1-29 14:23:53 | 显示全部楼层
lTask.SenderDeptID := ADept;
  lTask.SenderPositionID := APosition;
  lTask.SenderID := APerson;

把上述三句的ADept、APerson、APosition改成发送人相关信息就可以
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-29 16:44:53 | 显示全部楼层
看看你们提供代码的注释, 上述三个变量是对接受人的属性设置! 到底是接受人还是发送人??
回复 支持 反对

使用道具 举报

发表于 2007-1-30 08:48:43 | 显示全部楼层
要看procedure TTaskPubFunc.UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID,
  ASubject, ABizField, ABizFieldValue, ADept, APosition, APerson : string);
这个才是创建任务的代码,在这里把发送人和接收人定义成同一个人了。
你需要修改这个过程

procedure TDMCJWLCRW.CreateCustomTaskClick(Sender: TObject);
只是调用
回复 支持 反对

使用道具 举报

发表于 2007-2-5 11:45:34 | 显示全部楼层
楼主,还有问题吗?
没有就结贴了!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-24 07:27 , Processed in 0.036105 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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