我正在使用在Unix上的9.2 BI套件上运行的EG4.3中的存储过程创建基于HTML的数据字典。
我们的中间层Web服务器已经有效关闭,因此这个STP只能在EG内部使用。
使用过多的看跌期权,我在四个存储过程中创建了我需要的HTML页面:
由此,用户可以选择库,表格或列以深入了解更多详细信息
第一个STP工作得很好,我可以看到一个格式很好的信息列表,包括库,数据集和列链接。
我的问题如下:当我点击链接时,我希望运行必需的STP,并将HTML页面返回到我的初始报告所在的相同结果选项卡。
我查了无数的sas文章,但找不到答案。
以下是我用来生成指向其他STP的链接的代码(其中chars[i]
是数据集中的a-z值):
/* Get the root session ID*/
hrefroot = symget('_THISSESSION') || '&_PROGRAM=/Shared Data/Team/stored_process/';
/* Get the next stp path (neither ?&_PROGRAM= nor the below seem to work)*/
hrefnextstp = "?_PROGRAM=/Shared Data/Team/stored_process/";
// build up the HTML using puts //
stpval="stpddlibrary";
stplink=cats('<A HREF="', hrefnextstp, stpval, '&type=', chars[i], '">', chars[i],'</A>');
put stplink;
考虑到上述情况,如何只使用EG链接多个存储过程?
没有&amp; _URL看起来好像我没有使用网络,因此排除了这一点。
我希望我已经明确表达了......
答案 0 :(得分:0)
您遇到的问题是HTML页面正在尝试导航到Web服务以提取下一页。但是,EG无法作为Web服务器来响应浏览器请求。
存储的流程代码最好通过Web中间层或SAS MS Office插件使用。如果这两个工具不可用,您可以考虑将逻辑从SAS存储过程中移出并直接进入EG,并使用响应来驱动例如项目中的第二个流程。如果您想要驱动一个网页,您可以通过Java和SAS IOM Bridge调用sas,并以与EG相同的方式与SAS通信,但在这种情况下,您的UI将使用Java构建。另一个建议是,尝试使用vbscript通过COM驱动EG。
这是通过COM控制EG的链接: http://www.sascommunity.org/wiki/Not_Just_for_Scheduling:_Doing_More_with_SAS_Enterprise_Guide_Automation
您提供的代码可以很好地构建由SAS Mid-Tier存储过程Web服务提供服务的URL。存储在SAS存储过程中,您可以使用SAS提供的存储过程的Web界面构建指向其他存储过程的中间层的URL,以查看参数和URL的构造方式。
如果您的中间层Web服务处于联机状态,您也可以在代码中调用存储过程。通过proc http调用它,这是sas docs的一个例子:
proc http in=in out=out url="http://localhost.com/rsm/rstool"
method="post"
ct="application/x-www-form-urlencoded";
run;