Hi Tennis,

Yes, you can do this if you submit this STAF service request via a program 
using a STAF API for Java, C/C++, Python, Perl, or Tcl instead of using 
the STAF command line executable which just returns a string containing 
the result because then you can access the individual fields (such as 
jobID and status) in the unmarshalled result object directly.  For 
examples, see the following documents accessible via the STAF 
Documentation web page at http://staf.sourceforge.net/docs.php for the 
programming language of your choice:
- STAFJava User's Guide - This document describes STAF's V3 support for 
the Java language.  It includes information on the core STAF Java APIs.
- STAF Python User's Guide - This document describes STAF's V3 support for 
the Python language.  It includes information on the core STAF Python 
APIs.
- STAF Perl User's Guide - This document describes STAF's V3 support for 
the Perl language.  It includes information on the core STAF Perl APIs.
- STAF Tcl User's Guide - This document describes STAF's V3 support for 
the Tcl language.  It includes information on the core STAF Tcl APIs.
- STAF User's Guide sections "6.2 C" and "6.3 C++" - These sections 
document STAF's support for C/C++.

The STAX Users's Guide describes the result format returned by a STAX 
"EXECUTE FILE <FileName> WAIT RETURNRESULT" request in section "EXECUTE", 
sub-section "Results" at 
http://staf.sourceforge.net/current/STAX/staxug.html#Header_Execute.  See 
where it talks about when this request is successful and the WAIT option 
and RETURNRESULT option are specified (but not the DETAILS option) and 
says the result will contain a marshalled 
<Map:STAF/Service/STAX/JobResult> representing the job result and it 
defines this map and its fields (including "jobID" and "status").

For example, here's a Java program that submits an "EXECUTE FILE 
<FileName> WAIT RETURNRESULT" request to the STAX service on the local 
machine and accesses the fields named "jobID" and "status" in the result:

import com.ibm.staf.*;
import java.util.Map;

public class RunSTAXJob
{
    public static void main (String[] args)
    {
        new RunSTAXJob();
    }

    public RunSTAXJob()
    {
        STAFHandle stafHandle = null;

        try
        {
            stafHandle = new STAFHandle("MyTest");
            String machine = "local";
            String service = "STAX";
            String xmlFileName = "C:/stax/test1.xml"; // XXX: Change this 
to your STAX xml job name
            STAFResult result = null;

            // You should use helper method STAFUtil.wrapData() for any 
values
            // that may contain spaces

            String request = "EXECUTE FILE " + 
STAFUtil.wrapData(xmlFileName) +
                " WAIT RETURNRESULT"; 

            result = stafHandle.submit2(machine, service, request);

            if (result.rc != STAFResult.Ok)
            {
                System.out.println(
                    "Error submitting request STAF " + machine + " " +
                    service + " " + request + "\nRC: " + result.rc +
                    "  Result: " + result.result);
                System.exit(1);
            }

            // Pretty print the result (if desired)
            System.out.println(result.resultContext);

            // The result from the STAX EXECUTE WAIT RETURNRESULT is a
            // marshalled map.  Access the data from the map (e.g. jobID,
            // status, result) in the root object of the result.

            Map jobResultMap = (Map)result.resultObj;
            String jobID = (String)jobResultMap.get("jobID");
            String jobStatus = (String)jobResultMap.get("status");

            if (!jobStatus.equals("Normal"))
            {
                System.out.println(
                     "STAX Job ID " + jobID + " failed with a " +
                     jobStatus + " status.");
                System.exit(1);
            }

            String jobResult = (String)jobResultMap.get("result");

            System.out.println(
                "STAX Job ID " + jobID +
                " completed successfully returning: " + jobResult);
 
            stafHandle.unRegister();
        }
        catch (STAFException e)
        {
           System.out.println("STAFException creating handle: " + 
e.getMessage());
        }
    }
}

--------------------------------------------------------------
Sharon Lucas
IBM Austin,   luc...@us.ibm.com
(512) 286-7313 or Tieline 363-7313




From:   Tennis Smith <tennis_sm...@yahoo.com>
To:     staf-users@lists.sourceforge.net, 
Date:   12/26/2012 09:26 PM
Subject:        [staf-users] Getting Key/Values From Results Data



Hi,

I'm confused about the best way to access the contents of results when I 
run a stax job.  For example,  when this is the output:
{
  Job ID         : 3
  Start Date-Time: 20101028-14:35:01
  Stop Date-Time : 20101028-14:39:19
  Status         : Normal
  Job Log Errors : []
  Result         : None
  Testcase Totals: {
    Tests : 1
    Passes: 1
    Fails : 0
  }
}

How can i get the value for "Job ID" without grep or some other utility? 
 Is there a "native" way to access the jobid key/value pairs?

Hope this makes sense.

-- 
Tks,
-Tennis 
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712
_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users

------------------------------------------------------------------------------
Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery
and much more. Keep your Java skills current with LearnJavaNow -
200+ hours of step-by-step video tutorials by Java experts.
SALE $49.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122612 
_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users

Reply via email to