To use the web service to call
your SAS code, you must configure your SAS code as a stored process.
A stored process is a SAS program that is stored on a server and can
be executed by requesting applications. Any stored process can be
deployed as a generated web service. However, stored processes that
are used with XMLA web services need to conform to rules that enable
the web service to receive data from the client and return data to
the client.
You can author a stored
process manually by using SAS or a text editor to write the code and
then registering the program through SAS Management Console. Alternatively,
you can use a program such as SAS Enterprise Guide or another SAS
code generator to author a stored process using the point-and-click
method. Use the following modifications to make a stored process that
can be used with SAS BI Web Services. Keep in mind that XMLA web services
can return XML data only; no attachments can be returned.
Note: You cannot use the XMLA engine
to execute stored processes that are compatible with SAS 9.2.
The following list explains
unique details about stored processes that are used with XMLA web
services:
-
The data that is returned by the stored process must
be XML. Web service stored processes produce streaming results, which
means that the SAS program writes output to _WEBOUT, typically by
using the following LIBNAME statement:
libname _WEBOUT xml xmlmeta=&_XMLSCHEMA;
-
For XMLA web services, the %STPBEGIN
or %STPEND macros are not used in the stored processes. These macros
set up Output Delivery System (ODS) statements for the stored process,
but XMLA web services do not use ODS.
-
The _XMLSCHEMA macro is unique to XMLA
web services. This macro is passed to the SAS program when it is invoked
from the web service. The _XMLSCHEMA macro is set to one of three
values depending on the Content property that is passed to the Execute
method. The possible values for _XMLSCHEMA are Schema, SchemaData
(which is the default), Data, or None. For example, the following
code causes SAS to write both the XML schema and the data into the
libref _WEBOUT:
libname _WEBOUT xml xmlmeta=SchemaData;
A libref uses a fileref
of the same name when a source is not specified in the LIBNAME statement.
For example, the following code causes the libref, called _WEBOUT,
to read from the fileref called _WEBOUT:
libname _WEBOUT xml xmlmeta=_XMLSCHEMA;
For XMLA web services,
SAS defines the filerefs for the _WEBOUT output stream as well as
for any input streams before invoking the SAS code.
Note: Applications should not
try to write multiple data sets into a library when a schema is being
created.
-
Data sources are defined when you are
registering the stored process metadata. There are three types of
data sources:
-
Generic streams, which are most similar
to the input streams that were used prior to SAS 9.2.
-
XML streams, which can be described
with or without a schema. If a schema is provided for an XML stream,
then that schema is inserted in the WSDL for the service. If no schema
is provided, then xs:any
is inserted in the
WSDL. Having a schema defined makes it easier for client applications
to call a service. The SAS code needs to be written to create XML
that is valid according to the schema that is defined in the metadata.
-
Data tables, which describe tabular
input and output. Data tables cannot be used with XMLA.
The following example
code displays a stored process that is used as a web service:
libname instream xml;
libname _WEBOUT xml xmlmeta=&_XMLSCHEMA;
proc means data=instream.&tablename
output out=_WEBOUT.mean;
run;
The first LIBNAME statement
in the sample code defines the data source. This code corresponds
to the definition of the data source in the Stored Process
Properties dialog box in SAS Management Console. The
fileref of the data source is instream
. In
this example, the data source provides the data to run PROC MEANS
against.
The second LIBNAME statement
in the sample code defines the output for the stored process as streaming
output, or _WEBOUT. In the Stored Process Properties dialog
box, Stream
is specified as the type of output
on the Execution tab of the Stored
Process Properties dialog box.
The &tablename
declaration
in the sample code defines a parameter called tablename. In the Stored
Process Properties dialog box, this parameter is specified
through the New Prompt dialog box, and can
be modified using the Edit Prompt dialog
box. In this example, tablename is a text parameter that specifies
the name of the table to run PROC MEANS against.
Note: The dialog boxes mentioned
in the previous example are available from both the Stored
Process Properties dialog box and the New
Stored Process wizard, which are both part of SAS Management
Console. For more information about using SAS Management Console to
define metadata for stored processes, see the product Help.