起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 160|回复: 7

[请求]通知的问题**

[复制链接]
发表于 2008-2-28 18:19:40 | 显示全部楼层 |阅读模式
在流程结束时发通知,通知会出现在任务跟踪里并且点击还报错,请问这个问题该怎么弄?
回复

使用道具 举报

 楼主| 发表于 2008-2-28 20:31:20 | 显示全部楼层

Re: [请求]通知的问题

版本:X3,2918
报错如下

tongzhi.jpg

9.76 KB, 下载次数: 105

回复 支持 反对

使用道具 举报

发表于 2008-2-29 08:44:45 | 显示全部楼层
在流程结束时发通知,通知会出现在任务跟踪里并且点击还报错

在流程结束时发通知: 怎么发的?

通知会出现在任务跟踪里: 任务跟踪在哪里?

在studio中调试运行时,有什么提示信息吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-29 11:10:15 | 显示全部楼层
最初由 jiahaiminghr 发布
[B]
在流程结束时发通知: 怎么发的?

通知会出现在任务跟踪里: 任务跟踪在哪里?

在studio中调试运行时..

以下省略...... [/B]

1.流程结束前的环节,详细见图
2.略
3.unit TASKSUMMARY;

interface

uses
  Business.System, Business.Model, Business.Forms, Business.Data,
  Borland.Delphi.Windows, SystemCore, TaskLib, RelevancyLib, TaskDefineInfo,
  CM, SystemUtils;

type

{ TTaskFuncRunner }

  TFuncInitProc = procedure(AFunc: TFunc; ATask: TTask) of object;

  TTaskFuncRunner = class(TComponent)
  private
    FInfoBroker: TInfoBroker;
    FFuncBroker: TFuncBroker;
    FDocView: TDocView;
    FDocFileName: string;
    FActive: Boolean;
    FBizDataSetAction: TBizDataSetAction;

    function GetFunc: TFunc;
    function GetInfo: TInfo;
    function GetDoc: TDoc;
    procedure SetActive(Value: Boolean);
    function GetFuncContext(const AFuncURL: string): Business.Model.TContext;
  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  public
    constructor Create(AOwner: TComponent; const AFuncURL, ADocURL: string;
      AParent: TWinControl; AFuncInitProc: TFuncInitProc; ATask: TTask);
    destructor Destroy; override;

    procedure Save;
    function SaveNeeded: Boolean;
    procedure Delete;
    function CanDelete: Boolean;
    procedure Cancel;
    procedure Refresh;

    property Func: TFunc read GetFunc;
    property Info: TInfo read GetInfo;
    property DocView: TDocView read FDocView;
    property Doc: TDoc read GetDoc;
    property Active: Boolean read FActive write SetActive;
  end;

{ TTaskSummary }

  TTASKSUMMARY = class(TFormDoc)
    pnlClient: TPanel;
    procedure FormDocCreate(Sender: TObject);
    procedure FormDocDestroy(Sender: TObject);
  private
    FUseCache: Boolean;

    FTaskChangeNotifyDelegate: TTaskNotifyDelegate;

    FTask: TTask;
    FCurrentFuncRunner: TTaskFuncRunner;
    FTaskNeedReload: Boolean;
    FFuncs: TStringList;
    FFuncsUseCount: array of Integer;

    // ±¾µØ¼Çס±äÁ¿£¬ÐèÒªÌṩ¸üºÃµÄ»ú»á
    FRelevancyNavBar: TRelevancyNavBar;

    procedure SetRelevancyNavBar(Value: TRelevancyNavBar);
    procedure SetTask(Value: TTask);
    procedure TaskChangeNotify(const TaskGUIDs: array of string);
    procedure SwitchDocView(AOldDocView, ANewDocView: TDocView);
    procedure RefreshDataSets(ADoc: TDoc; OnlyRefresh: Boolean);
    procedure InitFunc(AFunc: TFunc; ATask: TTask);
    function RunFunc(const AFuncURL, ADocURL: string; ATask: TTask; AReadOnly: Boolean): TFunc;
    procedure ClearFuncs;
    procedure ClearRunFunc;
    procedure SmartDestroyFuncRunner;
    function DocViewFocused(ADocView: TDocView): Boolean;
    procedure RealRefreshRelevancyBar;
  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;

    property RelevancyNavBar: TRelevancyNavBar read FRelevancyNavBar write SetRelevancyNavBar;
  public
    procedure SetFocus; override;
    procedure GetUsingDataSetList(AList: TBizDataSetList); override;

    procedure RefreshRelevancyBar(ARelevancyNavBar: TRelevancyNavBar);
    function CanView(ATask: TTask): Boolean;
    procedure Reload;

    procedure Save;
    function SaveNeeded: Boolean;
    procedure Delete;
    function CanDelete: Boolean;
    procedure Cancel;
    procedure Refresh;

    property UseCache: Boolean read FUseCache write FUseCache;
    property Task: TTask read FTask write SetTask;
    property CurrentFuncRunner: TTaskFuncRunner read FCurrentFuncRunner;
  end;

implementation

const
  cDefaultDoc = 'Biz:\COLLABORATION\TaskCenterInfo.Info\DefaultDetailView.SheetDoc';
  cMaxFuncCount = 10;

type
  TDetailDocView = Class(TDocView)
  protected
    procedure Paint; override;
  end;

procedure TDetailDocView.Paint;
const
  cNoDocDesc = 'ÎÞÏêϸÐÅÏ¢';
var
  lRect: TRect;
  lFontHeight: Integer;
  lFlags: Longint;
begin
  if DocFileName = '' then
  begin
    lRect := ClientRect;
    Canvas.Brush.Color := Color;
    Canvas.FillRect(lRect);
    Canvas.Brush.Style := TBrushStyle.bsClear;
    Canvas.Font := Font;
    lFontHeight := Canvas.TextHeight('W');
    with lRect do
    begin
      Top := ((Bottom + Top) - lFontHeight) div 2;
      Bottom := Top + lFontHeight;
    end;
    lFlags := DT_EXPANDTABS or DT_VCENTER or DT_CENTER;
    lFlags := DrawTextBiDiModeFlags(lFlags);
    DrawText(Canvas.Handle, PChar(cNoDocDesc), -1, lRect, lFlags);
  end
  else
    inherited;
end;

{ TTaskFuncRunner }

constructor TTaskFuncRunner.Create(AOwner: TComponent; const AFuncURL, ADocURL: string;
  AParent: TWinControl; AFuncInitProc: TFuncInitProc; ATask: TTask);
var
  lBizClassRef: TBizClassRef;
begin
  inherited Create(AOwner);
  FFuncBroker := TFuncBroker.Create(Self);
  FFuncBroker.AutoKind := TAutoKind.akPrivate;
  FFuncBroker.AutoBroker := False;

  lBizClassRef := TBizClassRef.Create(nil);
  try
    lBizClassRef.BizURL.URL := AFuncURL;
    // ¶ÔÓ¦¹¦Äܲ»´æÔÚʱ£¬´´½¨Ò»¸ö¿Õ¹¦ÄÜ
    if FFuncBroker.BizClassRef.BizURL.URL = '' then
      FFuncBroker.Func := TFunc.Create(GetFuncContext(AFuncURL))
    else
      FFuncBroker.Func := BizSys.BizService.CreateBizObject(lBizClassRef, GetFuncContext(AFuncURL)) as TFunc;
  finally
    lBizClassRef.Free;
  end;
  if Assigned(AFuncInitProc) then
    AFuncInitProc(FFuncBroker.Func, ATask);

  FInfoBroker := TInfoBroker.Create(Self);
  FInfoBroker.FuncBroker := FFuncBroker;
  FInfoBroker.BizClassRef.BizURL.URL := SysUtils.ExtractFileDir(ADocURL);//跟到这里出错

  FDocView := TDetailDocView.Create(Self);
  FDocView.InfoBroker := FInfoBroker;
  FDocView.Visible := False;
  FDocView.Align := TAlign.alClient;
  FDocView.Parent := AParent;

  FDocFileName := SysUtils.ExtractFileName(ADocURL);
  FBizDataSetAction := TBizDataSetAction.Create(Self);
  FBizDataSetAction.ID := BizActnConsts.ActionDataSetDelete;
  FBizDataSetAction.AutoDetect := True;
end;
.................................................
请问怎样做才能让“通知”不在“我的任务(任务跟踪)”里列出来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-29 11:11:23 | 显示全部楼层

tongzhi2.jpg

41.46 KB, 下载次数: 96

回复 支持 反对

使用道具 举报

发表于 2008-2-29 14:55:21 | 显示全部楼层
楼主,1、<请问怎样做才能让“通知”不在“我的任务(任务跟踪)”里列出来>   这一句中的“我的任务(任务跟踪)”指的是什么?
2、你报的错跟通知没有关系
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-29 17:37:11 | 显示全部楼层
最初由 Akon 发布
[B]楼主,1、<请问怎样做才能让“通知”不在“我的任务(任务跟踪)”里列出来>   这一句中的“我的任务(任务跟踪)”指的是什么?
2、你报的错跟通知没有关系 [/B]

即工作台的流程跟踪部分,
那这个问题能怎么解决一下么?
回复 支持 反对

使用道具 举报

发表于 2008-2-29 18:29:48 | 显示全部楼层
贴图看看吧,实在在工作台上找不到什么流程跟踪的东东。
您的错误应该是流程有逻辑错误。贴流程图看看。为了不跟乱,错误的问题最好另起一个帖子。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-7 20:24 , Processed in 0.044778 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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