起步软件技术论坛-X3

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

[]搞定[在待办任务列表中显示非流程任务

[复制链接]
发表于 2008-1-11 10:07:29 | 显示全部楼层 |阅读模式
现在情况是,非流程任务已经在待办任务中显示,右击菜单中只有“详细”/“刷新”按钮,没有“处理”功能;
代码如下:
procedure TMainForm.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;


procedure TMainForm.DataNavigatorBeforeAction(Sender: TObject; var Accept: Boolean);
var
  lRegPerson: string;
  lMsg: string;
  ds: TDataSet;
  i: Integer;
begin
  AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField, ABizFieldValue,
  ADept, APosition, APerson : string;
ds := TDataSet.Create(nil);
ds.Data := DSGoWherePersons.DataSet.Delta;
for i:=0 to ds.RecordCount - 1 do
begin
  if ds.FieldByName('ID').AsString = '' then exit;
  AFuncURL := 'Biz:\TZERP\TZOA\RYDXGN.Func';   // 自定义任务关联功能
ATaskTypeName := '动向提醒';     // 自定义任务关联的任务名称
ATaskTypeID := 'MYCUSTOMFUNCDEAL';        // 自定义任务关联的任务ID
  ASubject := '动向提醒:请在人员动向中设置返回。';

ABizField := 'Biz:\TZERP\TZOA\TZOADB.DATABASE\OA_GoWherePersons.Table\ID.Field';  // 关联字段

ABizFieldValue := ds.FieldByName('ID').AsString;              // 关联字段值
ADept := dsb.DataSet.FieldByName('FDept').AsString;// 接收部门
APosition := dsb.DataSet.FieldByName('FPosition').AsString; //接收岗位
APerson := ds.FieldByName('PersonId').AsString;           // 接收人

UserStartTask(AFuncURL, ATaskTypeName, ATaskTypeID, ASubject, ABizField, ABizFieldValue, ADept, APosition, APerson);
  ds.Next;
end;
end;
回复

使用道具 举报

发表于 2008-1-11 12:04:27 | 显示全部楼层
1楼能编译过去吗?怎么在begin后面还有变量申明呢?

楼主运行任务关联管理设置了任务后再执行有什么问题?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-21 14:55:27 | 显示全部楼层

如何删除任务提示消息呢?

现在该非流程任务在待办任务中已经出现提示消息了,当业务员已经完成相关处理后,如何在待办任务栏中取消提示的消息呢?
回复 支持 反对

使用道具 举报

发表于 2008-1-23 10:41:29 | 显示全部楼层
删除任务:
TFlowEngine.DeleteTask(ATask: TTask);

修改任务
TFlowEngine.SaveTask(ATask: TTask);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-23 15:11:49 | 显示全部楼层

如何取ATash参数?

Feng: TFlowEngine;
  fparam:TLoadFlowParam;
  iquery: TQuery;
  guid: string;
  tparam: TLoadTaskParam;

Feng:=TFlowEngine.Create();
           fparam:=TLoadFlowParam.Create();
           tparam:=TLoadTaskParam.create();
           iquery:=TQuery.Create(nil);
        try
           iquery.ConnectionString:=BizObjConsts.cSysDatabaseConnectionString;
           iquery.CommandText:='select FFlowGuid from TFlowID where FID='''+DataSetBroker1.DataSet.FieldByName('MeetingID').AsString+'''';
           iquery.Open;
           guid:=iquery.FieldByName('FFLowGUID').AsString;
           fparam.GUIDs.Add(guid);
           tparam.FlowGUIDs.Add(guid);
           Feng.DeleteFlows(fparam,tparam);
           Feng.DeleteTasks(tparam);
  。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-23 15:15:57 | 显示全部楼层

如何取ATask参数?

Feng: TFlowEngine;
  fparam:TLoadFlowParam;
  iquery: TQuery;
  guid: string;
  tparam: TLoadTaskParam;

Feng:=TFlowEngine.Create();
           fparam:=TLoadFlowParam.Create();
           tparam:=TLoadTaskParam.create();
           iquery:=TQuery.Create(nil);
        
           iquery.ConnectionString:=BizObjConsts.cSysDatabaseConnectionString;
           iquery.CommandText:='select FFlowGuid from TFlowID where FID='''+DataSetBroker1.DataSet.FieldByName('MeetingID').AsString+'''';
           iquery.Open;
           guid:=iquery.FieldByName('FFLowGUID').AsString;
           fparam.GUIDs.Add(guid);
           tparam.FlowGUIDs.Add(guid);
           Feng.DeleteFlows(fparam,tparam);
           Feng.DeleteTasks(tparam);
  。。。。。
对于非流程任务,如何获取tparam参数?
回复 支持 反对

使用道具 举报

发表于 2008-1-24 09:14:05 | 显示全部楼层
创建对象之后,为tparam赋值就可以了。
回复 支持 反对

使用道具 举报

发表于 2008-5-15 10:31:00 | 显示全部楼层
一楼的
搞定了没??
能够打个包给我瞧瞧啊?
回复 支持 反对

使用道具 举报

发表于 2008-5-15 11:00:07 | 显示全部楼层
呵呵,应该搞定了,
1楼是在数据导航的BeforeAction生成一个非流程任务,不知道jianth2005遇到啥问题,http://bbs.justep.com/forum.php?mod=viewthread&tid=23187  这个帖子是你们同事问的,应该是一个问题吧,你们讨论一下,然后跟那个帖子吧
回复 支持 反对

使用道具 举报

发表于 2008-5-16 12:00:53 | 显示全部楼层
看看先
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 01:53 , Processed in 0.038747 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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