1

我正在使用 EG4.3 中的存储过程创建一个基于 HTML 的数据字典,该过程在 Unix 上的 9.2 BI Suite 上运行。

我们已经有效地关闭了中间层 Web 服务器,所以这个 STP 只能在 EG 内部使用。

使用过多的 put,我创建了我在四个存储过程中需要的 HTML 页面:

  1. 主页,作为提示输入,(例如)有问题的列的通配符,并以 HTML 格式返回该列出现的数据集列表。

从中,用户可以选择一个库、表或列以深入了解更多详细信息

  1. 以 HTML 格式返回所选库中数据集列表的存储过程;
  2. 以 HTML 格式返回选定表中的列列表的存储过程;
  3. 以 HTML 格式返回更详细的属性列表的存储过程。

报告样本

第一个 STP 效果很好,我可以看到格式良好的信息列表,包括库、数据集和列链接。

我的问题如下:当我单击一个链接时,我希望它运行必要的 STP,并将 HTML 页面返回到我的初始报告所在的相同结果选项卡。

我检查了无尽的 sas 文章,但找不到答案。

这是我用来生成指向其他 STP 的链接的代码(其中chars[i]是数据集中的 az 值):

/* 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, '&amp;type=', chars[i], '">', chars[i],'</A>');
put stplink;

考虑到上述情况,我如何仅使用 EG 将多个存储过程链接在一起?

没有 &_URL 看起来好像我没有使用网络,所以排除了这一点。

我希望我已经表达得很好..

4

1 回答 1

0

您遇到的问题是 HTML 页面正在尝试导航到 Web 服务以拉取下一页。但是,EG 不能作为 Web 服务器来响应浏览器的请求。

存储过程代码最好通过 Web 中间层或 SAS MS Office 插件使用。如果这两个工具不可用,您可以考虑将逻辑移出 SAS 存储过程并直接移入 EG,并使用响应来驱动您的 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 文档中的一个示例:

proc http in=in out=out url="http://localhost.com/rsm/rstool" method="post" ct="application/x-www-form-urlencoded"; run;

于 2014-12-20T09:58:05.950 回答