起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 347|回复: 16

【结帖】为什么代码调用功能启动流程,**

[复制链接]
发表于 2008-4-11 15:48:10 | 显示全部楼层 |阅读模式
我有报警表,若报警没有处理的记录则启动流程,代码如下:
// if dsb_Alarm.DataSet.RecordCount>0 then     //报警表中未处理记录,临时有
   for  i:=0 to dsb_Alarm.DataSet.RecordCount-1 do
    begin
     dsb_Alarm.DataSet.Edit;
     alarmId:=dsb_Alarm.DataSet.FieldByName('F_Alarm_ID').AsString;
     SystemCore.TSystemCore.FuncManager.RunFunc(SystemCore.TSystemCore.Operator.Positions[0].Context, '', 'Biz:\WGXTDEMO\BJCLStart.Func', '', nil, False);

     dsb_Alarm.DataSet.FieldByName('F_IsDealWithed').AsString:='1';//
     isAlarmed:=true;
     dsb_Alarm.DataSet.Next;
    end;
    dsb_Alarm.DataSet.ApplyUpdates;
但是
SystemCore.TSystemCore.FuncManager.RunFunc(SystemCore.TSystemCore.Operator.Positions[0].Context, '', 'Biz:\WGXTDEMO\BJCLStart.Func', '', nil, False);
好象没有启动流程,界面出来了,但是在流转那儿是不可用的,是不是没有启动流程呢?
RunFunc启动流程是怎么用的,我要传一个流程字段参数值给流程不?
我流程启动规则模式是新建,这有关系么?
谢谢
回复

使用道具 举报

发表于 2008-4-11 16:02:26 | 显示全部楼层
楼主,问一下你runfunc这个功能是流程的入口环节吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-11 16:29:13 | 显示全部楼层

是入口功能

是入口功能,难道不要传什么信息给这个函数么?
SystemCore.TSystemCore.FuncManager.RunFunc(SystemCore.TSystemCore.Operator.Positions[0].Context, '', 'Biz:WGXTDEMOBJCLStart.Func', GetTestDataSet.FieldByName('XXBH').AsString, nil, False);
我见有人写了如上,请问倒数第三个参数是什么函意?
我还是有点奇怪,若不传参数,那启动流程怎么会知道,处理的记录是那条?因为我的处理流程还要用到数据表的字段(报警类型)来做相应的处理。

flow.jpg

47.88 KB, 下载次数: 221

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-11 17:14:24 | 显示全部楼层

我重新做了一遍好了,

我重新做了一遍好了,但是用
SystemCore.TSystemCore.Operator.Positions[0].Context
是出现在当前操作者,而我希望这个功能让,功能的执行者,而不是当前操作者,执行该如何办呢?
那怕是先写死 'MSK'秘书科,'KY'科员,'张三'。
回复 支持 反对

使用道具 举报

发表于 2008-4-11 18:21:21 | 显示全部楼层
你用这个方法就会校验执行功能的人是否有此功能运行权限
  SystemCore.TSystemCore.FuncManager.RunFunc(Context, '', 'Biz:\OPERATION\BDYGN.Func', '' ,false, nil, false);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-11 22:26:26 | 显示全部楼层
楼上好象没有明白我意思。
我希望这个功能让,功能的执行者,而不是当前操作者执行,
也就是若功能的执行者是张三,则希望张三登录时就看到,这个功能的界面该如何办呢?
SystemCore.TSystemCore.Operator.Positions[0].Context是什么意思呢?
是不是当前操作者的Context,我猜的。我希望改成实际上这个功能的执行者。
那怕是先写死 'MSK'秘书科,'KY'科员,'张三'也行
谢谢~
回复 支持 反对

使用道具 举报

发表于 2008-4-12 10:22:59 | 显示全部楼层
看的不是很明白,请楼主分别回答下面的三个问题,
1、1楼的这段代码写在哪个功能的哪个事件上了?
// if dsb_Alarm.DataSet.RecordCount>0 then     //报警表中未处理记录,临时有
   for  i:=0 to dsb_Alarm.DataSet.RecordCount-1 do
    begin
     dsb_Alarm.DataSet.Edit;
     alarmId:=dsb_Alarm.DataSet.FieldByName('F_Alarm_ID').AsString;
     SystemCore.TSystemCore.FuncManager.RunFunc(SystemCore.TSystemCore.Operator.Positions[0].Context, '', 'Biz:\WGXTDEMO\BJCLStart.Func', '', nil, False);

     dsb_Alarm.DataSet.FieldByName('F_IsDealWithed').AsString:='1';//
     isAlarmed:=true;
     dsb_Alarm.DataSet.Next;
    end;
    dsb_Alarm.DataSet.ApplyUpdates;

2、出于啥原因要用runfunc来运行入口功能?

3、楼主想实现啥需求,能具体说说,

下面我回答一下楼主的几个疑问

1、好象没有启动流程,界面出来了,但是在流转那儿是不可用的,是不是没有启动流程呢?
流转那儿,啥意思,是界面上“流转”按钮是灰色的?还是点击“流转”按钮报错?
如果按钮不可用,那么请问,你在运行平台运行3楼的入口功能(报警处理Start 这个功能),能进行流转吗?
如果是报错,请把原始的错误信息贴出来

2、RunFunc启动流程是怎么用的
RunFunc是运行功能,不是启动流程,流程的启动,决定流程的启动规则的启动模式,是流转时还是处理时,如果是流转时,那么只有点击流转按钮,且在流转对话框中点击“确定”按钮才启动流程实例;如果是处理时,那么需要保存一下数据,流程实例才启动

3、我流程启动规则模式是新建,这有关系么?
模式为新建还是新建并自动填充,跟启动流程实例没有关系,这在第三点已经说明了,这个设置,取决于入口功能打开是否有数据,流程字段的值如何填充。具体请参考《用户手册》的第九章的“启动规则”的相关介绍

4、RunFunc 的参数介绍,请参考:http://bbs.justep.com/forum.php?mod=viewthread&tid=13875
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 10:22:44 | 显示全部楼层

回答,

1、1楼的这段代码写在哪个功能的哪个事件上了?
我这些代码是写在报警监控功能上的,不在上面流程图上,若有报警则启动处理流程(即上面流程图)
2.出于啥原因要用runfunc来运行入口功能?
我希望运行入口功能可以启动处理流程(见BBS上说的,)
3.楼主想实现啥需求,能具体说说,
我的需求是:有一个报警监控功能,一直在运行,若有报警来时,则启动报警处理,根据报警的类型自动进入到处理1,处理2,让相应的人进行处理……
所以我把报警处理start也做成了自动流转。我调了 FlowAction1.Execute;希望这样就不要人工去确定流程流转。

其实2也不是非要用runfuc来运行入口功能,也可以用   UserStartFlow (AFlowUrl,ADept,ARole,APerson,AStartProc,AFlowID,ASubject,ADescription);来启动流程。
不过我要解决如何代码得到某功能的执行者,类似于
OrgSelect(OrgCondition('*.psm','',:OrgUnit.FuncRef = '\JUSTEPDEMOSYSTEM\fun_CPDG.Func')) 这样的东西,请问如何用代码得到功能的执行都呢?
谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 11:06:11 | 显示全部楼层
1、好象没有启动流程,界面出来了,但是在流转那儿是不可用的,是不是没有启动流程呢?
流转那儿,啥意思,是界面上“流转”按钮是灰色的?还是点击“流转”按钮报错?
上次我发贴时流转是灰色的,这次不是灰色的,但是点击流转出错了,如下图。
请问如何解决呢?
图中主窗体是报警监控,在它的定时监控内写代码:
SystemCore.TSystemCore.FuncManager.RunFunc(SystemCore.TSystemCore.Operator.Positions[0].Context, '', 'Biz:WGXTDEMOBJCLStart.Func', '', nil, False);
'Biz:WGXTDEMOBJCLStart.Func'是流程入口功能,定时检测时间到,有报警则启动处理流程,窗体为处理start,

alarm_id.jpg

16.35 KB, 下载次数: 192

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 11:08:29 | 显示全部楼层

错误如下,

错误如下,

alarm_id2.jpg

23.88 KB, 下载次数: 188

回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-10 05:57 , Processed in 0.045015 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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