起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 810|回复: 1

用无流程消息启动功能

[复制链接]
发表于 2004-9-4 11:33:41 | 显示全部楼层 |阅读模式
操作步骤:
1、生成一种特殊类型的消息并且加入到任务列表中
VAR
  lOrgURL: TOrgURL;
  lTask: TTask;
begin

  lTask := TTask.Create;

  lOrgURl := TOrgURL.Create('BM1','GW1','RY1');  

  lTask.Subject:='启动无流程任务' ;
  lTask.Kind:='aaaa';
  lTask.SenderDeptID := 'BM1';
  lTask.SenderPositionID := 'GW1';
  lTask.SenderID := 'RY1';

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

  Flow.FlowEngine.SaveTask(lTask);      //保存任务
   lTask .Free;
end;
2、修改工作任务中的《任务处理》按钮,添加自己的调用函数

   在工作任务中引入:业务模型\系统空间\用户界面基础\库\公共组件库
begin
  if actProcTask.Enabled then
    if SelectedTask.Kind= 'aaaa' then
    begin
      //调用启动窗体
      TaskRunFunc(); //自己调用的功能
    end
  else
  begin
      OpenTask(SelectedTask);
  end;
end;

procedure TMainForm.TaskRunFunc();
var
  lFuncItem: TOperatorFuncItem;
begin
  lFuncItem := CommonComponentLibrary.TCommonComponentLibrary.UserSystem.FindFuncItem('Biz:\CSMX\FUNC\LCGN1.Func');
  if lFuncItem <> nil then
    Systemcore.TSystemCore.FuncManager.RunFunc(lFuncItem, '')
  else
    Dialogs.ShowMessage('找不到功能');
end;
3、修改处理任务的Enabled属性,使自己的特殊类型消息可以执行
function TMainForm.TaskCanExecute(ATask: TTask): Boolean;
begin
  if ATask.Kind = 'aaaa' then
  begin
    Result := True;
  end
  else
  begin
    Result := (ATask.ProcURL <> '') and
      (GetTaskKind(ATask) in Flow.SFlowCanExecuteTaskKinds);
  end;
end;
回复

使用道具 举报

发表于 2004-9-6 12:00:18 | 显示全部楼层
如果在任务中运行这个功能需要定位到某一条特定的数据记录上,需要一下几步:
1、定义业务参数组1并且隔离级设置为全局,定义业务参数。
2、在数据集中添加数据条件,数据表1.字段1 = &[业务参数1]。
3、在一楼的第一步中对任务描述赋值,例如:lTask.Description:= '0F23C50972B345C8B6DEF6E459BFCBC2';
4、修改任务执行函数
procedure TMainForm.actProcTaskExecute(Sender: TObject);
var
  lParam: Business.Model.TBizParam;
begin
  if actProcTask.Enabled then
    if SelectedTask.Kind= 'aaaa' then
    begin
      lParam := JUSTEPCOMMONUNIT.TJUSTEPCOMMONUNIT.GetParam(Self.Context,
          'Biz:\CSMX\DICT\YWCSZ1.ParamGroup', 'YWCS1');
      //调用启动窗体
      lParam.Value := SelectedTask.Description;
      TaskRunFunc();
    end
  else
  begin
      OpenTask(SelectedTask);
  end;
end;
5、在被调用的功能中重新打开数据集
procedure TMainForm.BizFormShow(Sender: TObject);
begin
  if DataSetBroker1.DataSet.Active=true then
  Begin
    DataSetBroker1.DataSet.Active:=false;
    DataSetBroker1.DataSet.Open;
  end;
end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 05:46 , Processed in 0.035216 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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