如何仅使用EG4.3将存储过程链接在一起?

时间:2014-11-27 15:21:23

标签: sas enterprise-guide

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

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

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

  1. 主页面,作为提示输入,是(例如)相关列的通配符,并在HTML中返回此列出现的数据集列表。
  2. 由此,用户可以选择库,表格或列以深入了解更多详细信息

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

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

      考虑到上述情况,如何只使用EG链接多个存储过程?

      没有&amp; _URL看起来好像我没有使用网络,因此排除了这一点。

      我希望我已经明确表达了......

1 个答案:

答案 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;