起步软件技术论坛-X3

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

[请求] 急救:如何用代码创建一个语义策略?**

[复制链接]
发表于 2009-3-5 15:54:03 | 显示全部楼层 |阅读模式
需要在岗位环境下用代码创建一个语义策略。怎么做呢?
回复

使用道具 举报

发表于 2009-3-5 16:03:23 | 显示全部楼层
在功能运行前,给他的环境增加一个策略
例如:
procedure TMAINFORM.Button2Click(Sender: TObject);
begin
  SystemCore.TSystemCore.FuncManager.RunFunc(Context.GetParentContext(BizSys.IL_POSITION), '', 'Biz:\LZ\CKWDGDNR.Func', edtParams.Text, BeforeRunSubFunc, False);
end;

procedure TMAINFORM.BeforeRunSubFunc(Sender: TObject; Func: TFunc);
var
  lPolicy: TSememicDataPolicy;
begin
  lPolicy := TSememicDataPolicy.Create(Func);
  lPolicy.BizRange.Text := '&[Biz:\OPERATION\BFDBizList.ElementGroup\BEProduct.Element]=1';
end;
这个是给功能加了个策略
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-5 16:13:38 | 显示全部楼层
那在组织机构的岗位下面增加策略,代码写在哪呢?
回复 支持 反对

使用道具 举报

发表于 2009-3-5 16:22:44 | 显示全部楼层
只要在你的目标数据集打开前写就可以了,无所谓写在什么地方。
lPolicy := TSememicDataPolicy.Create(Func);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-5 17:33:25 | 显示全部楼层
测试发现策略并没有起到应有的效果啊。

在功能的create里写的

————————————————————————————————————
lfilter:='1=1';
   i:=0;
   lfilter:=lfilter+' and ( &[Biz:\YWKJ1\INFO\FJDYWXX.Info\FJSJJ.DataSet\TEST.DataSetField]='''+ltemp.Strings+'''';
   for i:=1 to ltemp.Count-1 do
        lfilter:=lfilter+' or &[Biz:\YWKJ1\INFO\FJDYWXX.Info\FJSJJ.DataSet\TEST.DataSetField]='''+ltemp.Strings+'''';
   lfilter:=lfilter+')';
   dialogs.ShowMessage(lfilter);

   lPolicy := TSememicDataPolicy.Create(FuncBroker.Func);
   lPolicy.BizRange.Text := lfilter;
回复 支持 反对

使用道具 举报

发表于 2009-3-6 08:44:05 | 显示全部楼层
你可以按照2楼例子试试,看看起作用不。如果起作用,说明你创建策略的时机晚了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-6 10:07:47 | 显示全部楼层
应该是晚了。岗位环境下代码创建数据语义策略,不明白写在哪?
回复 支持 反对

使用道具 举报

发表于 2009-3-6 10:10:42 | 显示全部楼层
想办法让数据语义策略生效后,在打开数据集
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-25 23:36 , Processed in 0.044545 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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