起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 216|回复: 10

关于环境连的问题[公告]你们今天休班么?

[复制链接]
发表于 2008-10-15 10:00:06 | 显示全部楼层 |阅读模式
function TWorkFlowExecutor.GetPositionContext: TContext;
CONST
msg_NotFoundPosition = '????[??:%s, ??:%s, ??:%s]????????,'+
    #13 + #10 + '???????????!';

var
  lPerson: TPerson;
  lPosition: TOperatorPosition;
  lDeptID, lPositionID, lPersonID: string;
  lPositions: TOperatorPositionArray;
begin
  Result := nil;
  if CanProcess then
  begin
    lDeptID := GetExecutorDept;
    lPositionID := GetExecutorPosition;
    lPersonID := GetExecutorPerson;
    //取消登录
    {if Assigned(FOperator) and (FOperator.ID <> lPersonID) then
      Opr.Logoff(FOperator);
    lPerson := Org.OrgSys.OrgSystem.GetPerson(lPersonID);
    FOperator := Opr.Logon(lPerson.ID, lPerson.Password);  }
    try
      lPositions := [];
      // dialogs.showmessage(GetExecutorDept+GetExecutorPosition+GetExecutorPerson);
      if FOperator.FindPosition(GetExecutorDept, GetExecutorPosition, GetExecutorPerson, lPositions) then
        lPosition := lPositions[0]
      else
        lPosition := nil;

      if lPosition <> nil then
        Result := lPosition.Context
      else
        JSDialogs.ShowMsg(SysUtils.Format(msg_NotFoundPosition,
              [lDeptID, lPositionID, lPersonID]), '');
    finally

    end;
  end;
end;
看代码注释掉的部分,用户不登陆系统可不可以代码创建一个岗位的context?上边的函数登录过程比较耗时间。
回复

使用道具 举报

 楼主| 发表于 2008-10-15 10:01:55 | 显示全部楼层
Fopertator的部门、岗位、名称都能够从任务消息中得到。也就是登录用户的所有信息是可以确定的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-15 10:13:19 | 显示全部楼层

[重要]答复

怎么没人管呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-15 10:40:06 | 显示全部楼层

[公告]怎么没人管呢?今天休班吗

怎么回事?
回复 支持 反对

使用道具 举报

发表于 2008-10-15 10:56:17 | 显示全部楼层
楼主,你这种用法很奇怪啊。
是要实现什么业务需求呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-15 11:41:01 | 显示全部楼层
用户不用登录系统可以处理任务,邮件驱动任务流转。

屏蔽掉的代码是为了不登陆系统,任务消息有用户的所有信息,我想创建人员的岗位的context;
目前的问题是,不登陆的话可不可以创建岗位的context;

简单说,返回Result := lPosition.Context  ,根据任务消息。
我表达明白了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-15 13:28:14 | 显示全部楼层

[重要]

回复
回复 支持 反对

使用道具 举报

发表于 2008-10-15 14:26:37 | 显示全部楼层
楼主,反复看了你的描述,虽然还不是很清楚你的需求,但是按楼主的这种做法肯定不行,因为平台所有的工作都是基于一个完整的环境,你仅仅去创建一个岗位环境是行不通的。

建议:
还是走标准流程:登录 -》处理任务
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-15 15:34:35 | 显示全部楼层
其它的环境连已经创建了,用户登录后也可以创建岗位的context,唯一需要的就是用户不用logon,代码创建岗位的context就可以了。
换句话说就是,根据任务消息可以得到执行者的所有信息,执行者不用logon得到它的岗位context
//取消登录
    {if Assigned(FOperator) and (FOperator.ID <> lPersonID) then
      Opr.Logoff(FOperator);
    lPerson := Org.OrgSys.OrgSystem.GetPerson(lPersonID);
    FOperator := Opr.Logon(lPerson.ID, lPerson.Password);  }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-15 15:43:24 | 显示全部楼层
或者说不用opr.logon怎么创建一个FOperator,创建后可以FindPostion找到岗位,然后得到岗位的
context
if lPosition <> nil then
        Result := lPosition.Context
      else
        JSDialogs.ShowMsg(SysUtils.Format(msg_NotFoundPosition,
              [lDeptID, lPositionID, lPersonID]), '');
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-23 20:42 , Processed in 0.039649 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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