Focal Point Banner


As of December 1, 2020, Focal Point is retired and repurposed as a reference repository. We value the wealth of knowledge that's been shared here over the years. You'll continue to have access to this treasure trove of knowledge, for search purposes only.

Join the TIBCO Community
TIBCO Community is a collaborative space for users to share knowledge and support one another in making the best use of TIBCO products and services. There are several TIBCO WebFOCUS resources in the community.

  • From the Home page, select Predict: WebFOCUS to view articles, questions, and trending articles.
  • Select Products from the top navigation bar, scroll, and then select the TIBCO WebFOCUS product page to view product overview, articles, and discussions.
  • Request access to the private WebFOCUS User Group (login required) to network with fellow members.

Former myibi community members should have received an email on 8/3/22 to activate their user accounts to join the community. Check your Spam folder for the email. Please get in touch with us at community@tibco.com for further assistance. Reference the community FAQ to learn more about the community.


Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     Can't get multiple records from a Web Service

Read-Only Read-Only Topic
Go
Search
Notify
Tools
Can't get multiple records from a Web Service
 Login/Join
 
Silver Member
posted
I'm breaking new ground at my company by trying to use WF to access Web Services. As the first test, we're using Microsoft's Active Directory search service (ADSearcher). The methods that provide a single record seem to work OK. But I can't seem to get multiple records from the methods that should provide them. In fact, I don't even see the output fields in Dev Studio's Object Inspector. Turns out that the MFDs for the multiple-record methods don't contain those fields-- they have a single-field segment named ANYTYPE instead. Did we do something wrong in generating our metadata? Is there some trick to obtaining multiple rows from a web service? Here is a sample of an MFD that should return multiple rows:

FILENAME=M6ILO, SUFFIX=SOAP , $
SEGMENT=FINDPERSONS, SEGTYPE=S0, $
GROUP=FINDPERSONS, ALIAS=findPersons, USAGE=A57, ACTUAL=A57, $
FIELDNAME=ATTR, ALIAS=attr, USAGE=A19, ACTUAL=A19, ACCESS_PROPERTY=(NEED_VALUE),
ACCEPT='City' OR 'CompanyCode' OR 'CubeNumber' OR 'Department' OR 'DistrictNumber' OR 'EmployeeId' . . . $
FIELDNAME=ATTRVALUE, ALIAS=attrValue, USAGE=A30, ACTUAL=A30, ACCESS_PROPERTY=(NEED_VALUE), $
FIELDNAME=ATTRIBUTEENUM, ALIAS=attributeEnum, USAGE=A8, ACTUAL=A8, ACCESS_PROPERTY=(NEED_VALUE),
ACCEPT='Name' OR 'Core' OR 'Extended', $
FIELDNAME=__RESPONSE, USAGE=TX80, ACTUAL=TX, ACCESS_PROPERTY=(INTERNAL), $
SEGMENT=RESPONSE, SEGTYPE=S0, SEGSUF=XML , PARENT=FINDPERSONS, POSITION=__RESPONSE, $
FIELDNAME=RESPONSE, ALIAS=findPersonsResponse, USAGE=A1, ACTUAL=A1, ACCESS_PROPERTY=(INTERNAL), $
FIELDNAME=FINDPERSONSRESULT, ALIAS=findPersonsResult, USAGE=A1, ACTUAL=A1, ACCESS_PROPERTY=(INTERNAL),
REFERENCE=RESPONSE, PROPERTY=ELEMENT, $
SEGMENT=ANYTYPE, SEGTYPE=S0, PARENT=RESPONSE, $
FIELDNAME=ANYTYPE, ALIAS=anyType, USAGE=A30, ACTUAL=A30,
MISSING=ON,
REFERENCE=FINDPERSONSRESULT, PROPERTY=ELEMENT, $

The MFDs that return only one row, do not have an ANYTYPE segment in the RESPONSE segment. They have the output fieldnames, like this:

. . .
SEGMENT=RESPONSE, SEGTYPE=S0, SEGSUF=XML , PARENT=FINDPERSONBYFILTER, POSITION=__RESPONSE, $
FIELDNAME=RESPONSE, ALIAS=findPersonByFilterResponse, USAGE=A1, ACTUAL=A1, ACCESS_PROPERTY=(INTERNAL), $
FIELDNAME=FINDPERSONBYFILTERRESULT, ALIAS=findPersonByFilterResult, USAGE=A1, ACTUAL=A1, ACCESS_PROPERTY=(INTERNAL),
REFERENCE=RESPONSE, PROPERTY=ELEMENT, $
FIELDNAME=ADSPATH, ALIAS=ADsPath, USAGE=A30, ACTUAL=A30,
REFERENCE=FINDPERSONBYFILTERRESULT, PROPERTY=ELEMENT, $
FIELDNAME=DISTINGUISHEDNAME, ALIAS=DistinguishedName, USAGE=A30, ACTUAL=A30,
REFERENCE=FINDPERSONBYFILTERRESULT, PROPERTY=ELEMENT, $
FIELDNAME=EMAILADDRESS, ALIAS=EmailAddress, USAGE=A30, ACTUAL=A30,
REFERENCE=FINDPERSONBYFILTERRESULT, PROPERTY=ELEMENT, $
...etc.

Using WF 7.1.4

This message has been edited. Last edited by: Anonymouse,


Jeff
WebFOCUS 8.0.09, Unix-Win-z/OS
FOCUS 7.3.1 on z/OS
 
Posts: 34 | Location: Minneapolis, MN | Registered: June 10, 2003Report This Post
Platinum Member
posted Hide Post
That all depends on what is defined in the WSDL file. We use this as a basis for Create Synonym. I have found in the past with Microsoft specific Web Services that they seem to define a Type=Schema in the WSDL file rather than the actual elements that are being returned. If this is the case, then there is a process you would go through to modify the Master to get the other fields defined.
The output fields do not show up in the Object Inspector because all of the fields in the RESPONSE segment have ACCESS_PROPERTY=(INTERNAL). If you take out ACCESS_PROPERTY=(INTERNAL) from on of the fields in that segment, the other fields will show up. In 7.6 and beyond, this ACCESS_PROPERTY=(INTERNAL) issue was resolved.
 
Posts: 229 | Location: New York | Registered: July 27, 2004Report This Post
Silver Member
posted Hide Post
Thanks for your reply, Efrem!
Removing an "ACCESS_PROPERTY=(INTERNAL)" does, indeed, allow Object Inspector to display the lower level field(s). But the only field existing appears to be a generic, catch-all, 30-byte alpha field named "ANYTYPE". I'm guessing that I have run into the same Microsoft coding pattern that you have, where they describe a data type being returned, rather than the actual elements. Can you describe (or point me to a document that describes) the process I need to follow in order to insert the actual fields into the Master? Would it help if I posted the WSDL? (it's long, of course!)


Jeff
WebFOCUS 8.0.09, Unix-Win-z/OS
FOCUS 7.3.1 on z/OS
 
Posts: 34 | Location: Minneapolis, MN | Registered: June 10, 2003Report This Post
Platinum Member
posted Hide Post
I'm presently writing an internal document on how to modify the fields for a WSDL of this type. I can make this available through the branch. It would help to post the WSDL file so I can verify that my solution would solve your specific problem.
 
Posts: 229 | Location: New York | Registered: July 27, 2004Report This Post
Silver Member
posted Hide Post
Here you go (and, Thanks!)

  <?xml version="1.0" encoding="utf-8" ?> 
- <wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"   xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://ADSearcher.target.com/2005-07-14" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://ADSearcher.target.com/2005-07-14" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://ADSearcher.target.com/2005-07-14">
- <s:element name="findPersonByUserID">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="windowsUserId" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonByUserIDResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="findPersonByUserIDResult" type="tns:Person" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:complexType name="Person">
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="ADsPath" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="DistinguishedName" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="EmailAddress" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="FirstName" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="LastName" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="UserId" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="City" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="Company" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="CompanyCode" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="CubeDirections" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="CubeNumber" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="Department" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="DistrictNumber" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="EmployeeId" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="EmployeeStatus" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="EmployeeType" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="ExpenseCenterNumber" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="HelpText" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="JobTitleCode" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="JobTitleName" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="LocationNumber" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="MailStops" type="tns:ArrayOfAnyType" /> 
  <s:element minOccurs="0" maxOccurs="1" name="PyramidText" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="RegionNumber" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="SpokeNumber" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="State" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="StreetAddress" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="TelephoneNumber" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="Title" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="ZipCode" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="AssistantName" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="AssistantTelephoneNumber" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="CountryCode" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="FaxNumber" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="HomePhone" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="Mobile" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="OtherFaxNumbers" type="tns:ArrayOfAnyType" /> 
  <s:element minOccurs="0" maxOccurs="1" name="OtherTelephones" type="tns:ArrayOfAnyType" /> 
  <s:element minOccurs="0" maxOccurs="1" name="Pager" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="CustomListKeys" type="tns:ArrayOfAnyType" /> 
  <s:element minOccurs="0" maxOccurs="1" name="CustomList" type="tns:ArrayOfString" /> 
  </s:sequence>
  </s:complexType>
- <s:complexType name="ArrayOfAnyType">
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="unbounded" name="anyType" nillable="true" /> 
  </s:sequence>
  </s:complexType>
- <s:complexType name="ArrayOfString">
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" /> 
  </s:sequence>
  </s:complexType>
- <s:element name="findPersonFNameLName">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="fName" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="lName" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonFNameLNameResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="findPersonFNameLNameResult" type="tns:Person" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonByFilter">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="1" maxOccurs="1" name="attr" type="tns:IndexedAttribute" /> 
  <s:element minOccurs="0" maxOccurs="1" name="attrValue" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:simpleType name="IndexedAttribute">
- <s:restriction base="s:string">
  <s:enumeration value="City" /> 
  <s:enumeration value="CompanyCode" /> 
  <s:enumeration value="CubeNumber" /> 
  <s:enumeration value="Department" /> 
  <s:enumeration value="DistrictNumber" /> 
  <s:enumeration value="EmployeeId" /> 
  <s:enumeration value="EmployeeStatus" /> 
  <s:enumeration value="EmployeeType" /> 
  <s:enumeration value="ExpenseCenterNumber" /> 
  <s:enumeration value="FirstName" /> 
  <s:enumeration value="JobTitleCode" /> 
  <s:enumeration value="JobTitleName" /> 
  <s:enumeration value="LastName" /> 
  <s:enumeration value="LocationNumber" /> 
  <s:enumeration value="Mail" /> 
  <s:enumeration value="MailStop" /> 
  <s:enumeration value="PyramidText" /> 
  <s:enumeration value="RegionNumber" /> 
  <s:enumeration value="SpokeNumber" /> 
  <s:enumeration value="UserId" /> 
  </s:restriction>
  </s:simpleType>
- <s:element name="findPersonByFilterResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="findPersonByFilterResult" type="tns:Person" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonAttr">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="1" maxOccurs="1" name="attr" type="tns:IndexedAttribute" /> 
  <s:element minOccurs="0" maxOccurs="1" name="attrValue" type="s:string" /> 
  <s:element minOccurs="1" maxOccurs="1" name="attributeEnum" type="tns:AttributesToReturn" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:simpleType name="AttributesToReturn">
- <s:restriction base="s:string">
  <s:enumeration value="Name" /> 
  <s:enumeration value="Core" /> 
  <s:enumeration value="Extended" /> 
  </s:restriction>
  </s:simpleType>
- <s:element name="findPersonAttrResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="findPersonAttrResult" type="tns:Person" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="Ping">
  <s:complexType /> 
  </s:element>
- <s:element name="PingResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="PingResult" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonCustom">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="1" maxOccurs="1" name="attr" type="tns:IndexedAttribute" /> 
  <s:element minOccurs="0" maxOccurs="1" name="attrValue" type="s:string" /> 
  <s:element minOccurs="1" maxOccurs="1" name="attributeEnum" type="tns:AttributesToReturn" /> 
  <s:element minOccurs="0" maxOccurs="1" name="arrCustomListToReturn" type="tns:ArrayOfString" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonCustomResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="findPersonCustomResult" type="tns:Person" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersons">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="1" maxOccurs="1" name="attr" type="tns:IndexedAttribute" /> 
  <s:element minOccurs="0" maxOccurs="1" name="attrValue" type="s:string" /> 
  <s:element minOccurs="1" maxOccurs="1" name="attributeEnum" type="tns:AttributesToReturn" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonsResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="findPersonsResult" type="tns:ArrayOfAnyType" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonsFNameLName">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="fName" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="lName" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonsFNameLNameResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="findPersonsFNameLNameResult" type="tns:ArrayOfAnyType" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonsCustom">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="1" maxOccurs="1" name="attr" type="tns:IndexedAttribute" /> 
  <s:element minOccurs="0" maxOccurs="1" name="attrValue" type="s:string" /> 
  <s:element minOccurs="1" maxOccurs="1" name="attributeEnum" type="tns:AttributesToReturn" /> 
  <s:element minOccurs="0" maxOccurs="1" name="arrCustomListToReturn" type="tns:ArrayOfString" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonsCustomResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="findPersonsCustomResult" type="tns:ArrayOfAnyType" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonsByLocIDsJobCodes">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="locationIDs" type="tns:ArrayOfString" /> 
  <s:element minOccurs="0" maxOccurs="1" name="jobCodes" type="tns:ArrayOfString" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="findPersonsByLocIDsJobCodesResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="findPersonsByLocIDsJobCodesResult" type="tns:ArrayOfAnyType" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="getGroupMemberList">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="groupName" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="getGroupMemberListResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="getGroupMemberListResult" type="tns:ArrayOfAnyType" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="isEmailValidByList">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="emailAddressList" type="tns:ArrayOfString" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:complexType name="ArrayOfBoolean">
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="unbounded" name="boolean" type="s:boolean" /> 
  </s:sequence>
  </s:complexType>
- <s:element name="isEmailValidByListResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="isEmailValidByListResult" type="tns:ArrayOfBoolean" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="isEmailValid">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="emailAddress" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="isEmailValidResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="1" maxOccurs="1" name="isEmailValidResult" type="s:boolean" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="isMemberOfSecurityGroup">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="windowsUserId" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="groupName" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="isMemberOfSecurityGroupResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="1" maxOccurs="1" name="isMemberOfSecurityGroupResult" type="s:boolean" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="isMemberOfDistList">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="windowsUserId" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="distributionList" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="isMemberOfDistListResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="1" maxOccurs="1" name="isMemberOfDistListResult" type="s:boolean" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="getGroupMemberWindowsIDs">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="groupName" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="getGroupMemberWindowsIDsResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="getGroupMemberWindowsIDsResult" type="tns:ArrayOfAnyType" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="getGroupMemberWindowsIDsWithGroupsFlat">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="GroupName" type="s:string" /> 
  <s:element minOccurs="1" maxOccurs="1" name="mode" type="tns:Mode" /> 
  <s:element minOccurs="1" maxOccurs="1" name="Verbose" type="s:boolean" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:simpleType name="Mode">
- <s:restriction base="s:string">
  <s:enumeration value="Groups" /> 
  <s:enumeration value="Users" /> 
  <s:enumeration value="Attributes" /> 
  </s:restriction>
  </s:simpleType>
- <s:element name="getGroupMemberWindowsIDsWithGroupsFlatResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="getGroupMemberWindowsIDsWithGroupsFlatResult" type="tns:ArrayOfAnyType" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="isGroupValid">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="groupName" type="s:string" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="isGroupValidResponse">
- <s:complexType>
- <s:sequence>
  <s:element minOccurs="1" maxOccurs="1" name="isGroupValidResult" type="s:boolean" /> 
  </s:sequence>
  </s:complexType>
  </s:element>
  </s:schema>
  </wsdl:types>
- <wsdl:message name="findPersonByUserIDSoapIn">
  <wsdl:part name="parameters" element="tns:findPersonByUserID" /> 
  </wsdl:message>
- <wsdl:message name="findPersonByUserIDSoapOut">
  <wsdl:part name="parameters" element="tns:findPersonByUserIDResponse" /> 
  </wsdl:message>
- <wsdl:message name="findPersonFNameLNameSoapIn">
  <wsdl:part name="parameters" element="tns:findPersonFNameLName" /> 
  </wsdl:message>
- <wsdl:message name="findPersonFNameLNameSoapOut">
  <wsdl:part name="parameters" element="tns:findPersonFNameLNameResponse" /> 
  </wsdl:message>
- <wsdl:message name="findPersonByFilterSoapIn">
  <wsdl:part name="parameters" element="tns:findPersonByFilter" /> 
  </wsdl:message>
- <wsdl:message name="findPersonByFilterSoapOut">
  <wsdl:part name="parameters" element="tns:findPersonByFilterResponse" /> 
  </wsdl:message>
- <wsdl:message name="findPersonAttrSoapIn">
  <wsdl:part name="parameters" element="tns:findPersonAttr" /> 
  </wsdl:message>
- <wsdl:message name="findPersonAttrSoapOut">
  <wsdl:part name="parameters" element="tns:findPersonAttrResponse" /> 
  </wsdl:message>
- <wsdl:message name="PingSoapIn">
  <wsdl:part name="parameters" element="tns:Ping" /> 
  </wsdl:message>
- <wsdl:message name="PingSoapOut">
  <wsdl:part name="parameters" element="tns:PingResponse" /> 
  </wsdl:message>
- <wsdl:message name="findPersonCustomSoapIn">
  <wsdl:part name="parameters" element="tns:findPersonCustom" /> 
  </wsdl:message>
- <wsdl:message name="findPersonCustomSoapOut">
  <wsdl:part name="parameters" element="tns:findPersonCustomResponse" /> 
  </wsdl:message>
- <wsdl:message name="findPersonsSoapIn">
  <wsdl:part name="parameters" element="tns:findPersons" /> 
  </wsdl:message>
- <wsdl:message name="findPersonsSoapOut">
  <wsdl:part name="parameters" element="tns:findPersonsResponse" /> 
  </wsdl:message>
- <wsdl:message name="findPersonsFNameLNameSoapIn">
  <wsdl:part name="parameters" element="tns:findPersonsFNameLName" /> 
  </wsdl:message>
- <wsdl:message name="findPersonsFNameLNameSoapOut">
  <wsdl:part name="parameters" element="tns:findPersonsFNameLNameResponse" /> 
  </wsdl:message>
- <wsdl:message name="findPersonsCustomSoapIn">
  <wsdl:part name="parameters" element="tns:findPersonsCustom" /> 
  </wsdl:message>
- <wsdl:message name="findPersonsCustomSoapOut">
  <wsdl:part name="parameters" element="tns:findPersonsCustomResponse" /> 
  </wsdl:message>
- <wsdl:message name="findPersonsByLocIDsJobCodesSoapIn">
  <wsdl:part name="parameters" element="tns:findPersonsByLocIDsJobCodes" /> 
  </wsdl:message>
- <wsdl:message name="findPersonsByLocIDsJobCodesSoapOut">
  <wsdl:part name="parameters" element="tns:findPersonsByLocIDsJobCodesResponse" /> 
  </wsdl:message>
- <wsdl:message name="getGroupMemberListSoapIn">
  <wsdl:part name="parameters" element="tns:getGroupMemberList" /> 
  </wsdl:message>
- <wsdl:message name="getGroupMemberListSoapOut">
  <wsdl:part name="parameters" element="tns:getGroupMemberListResponse" /> 
  </wsdl:message>
- <wsdl:message name="isEmailValidByListSoapIn">
  <wsdl:part name="parameters" element="tns:isEmailValidByList" /> 
  </wsdl:message>
- <wsdl:message name="isEmailValidByListSoapOut">
  <wsdl:part name="parameters" element="tns:isEmailValidByListResponse" /> 
  </wsdl:message>
- <wsdl:message name="isEmailValidSoapIn">
  <wsdl:part name="parameters" element="tns:isEmailValid" /> 
  </wsdl:message>
- <wsdl:message name="isEmailValidSoapOut">
  <wsdl:part name="parameters" element="tns:isEmailValidResponse" /> 
  </wsdl:message>
- <wsdl:message name="isMemberOfSecurityGroupSoapIn">
  <wsdl:part name="parameters" element="tns:isMemberOfSecurityGroup" /> 
  </wsdl:message>
- <wsdl:message name="isMemberOfSecurityGroupSoapOut">
  <wsdl:part name="parameters" element="tns:isMemberOfSecurityGroupResponse" /> 
  </wsdl:message>
- <wsdl:message name="isMemberOfDistListSoapIn">
  <wsdl:part name="parameters" element="tns:isMemberOfDistList" /> 
  </wsdl:message>
- <wsdl:message name="isMemberOfDistListSoapOut">
  <wsdl:part name="parameters" element="tns:isMemberOfDistListResponse" /> 
  </wsdl:message>
- <wsdl:message name="getGroupMemberWindowsIDsSoapIn">
  <wsdl:part name="parameters" element="tns:getGroupMemberWindowsIDs" /> 
  </wsdl:message>
- <wsdl:message name="getGroupMemberWindowsIDsSoapOut">
  <wsdl:part name="parameters" element="tns:getGroupMemberWindowsIDsResponse" /> 
  </wsdl:message>
- <wsdl:message name="getGroupMemberWindowsIDsWithGroupsFlatSoapIn">
  <wsdl:part name="parameters" element="tns:getGroupMemberWindowsIDsWithGroupsFlat" /> 
  </wsdl:message>
- <wsdl:message name="getGroupMemberWindowsIDsWithGroupsFlatSoapOut">
  <wsdl:part name="parameters" element="tns:getGroupMemberWindowsIDsWithGroupsFlatResponse" /> 
  </wsdl:message>
- <wsdl:message name="isGroupValidSoapIn">
  <wsdl:part name="parameters" element="tns:isGroupValid" /> 
  </wsdl:message>
- <wsdl:message name="isGroupValidSoapOut">
  <wsdl:part name="parameters" element="tns:isGroupValidResponse" /> 
  </wsdl:message>
- <wsdl:portType name="ADSearcherSoap">
- <wsdl:operation name="findPersonByUserID">
  <wsdl:input message="tns:findPersonByUserIDSoapIn" /> 
  <wsdl:output message="tns:findPersonByUserIDSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="findPersonFNameLName">
  <wsdl:input message="tns:findPersonFNameLNameSoapIn" /> 
  <wsdl:output message="tns:findPersonFNameLNameSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="findPersonByFilter">
  <wsdl:input message="tns:findPersonByFilterSoapIn" /> 
  <wsdl:output message="tns:findPersonByFilterSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="findPersonAttr">
  <wsdl:input message="tns:findPersonAttrSoapIn" /> 
  <wsdl:output message="tns:findPersonAttrSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="Ping">
  <wsdl:input message="tns:PingSoapIn" /> 
  <wsdl:output message="tns:PingSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="findPersonCustom">
  <wsdl:input message="tns:findPersonCustomSoapIn" /> 
  <wsdl:output message="tns:findPersonCustomSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="findPersons">
  <wsdl:input message="tns:findPersonsSoapIn" /> 
  <wsdl:output message="tns:findPersonsSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="findPersonsFNameLName">
  <wsdl:input message="tns:findPersonsFNameLNameSoapIn" /> 
  <wsdl:output message="tns:findPersonsFNameLNameSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="findPersonsCustom">
  <wsdl:input message="tns:findPersonsCustomSoapIn" /> 
  <wsdl:output message="tns:findPersonsCustomSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="findPersonsByLocIDsJobCodes">
  <wsdl:input message="tns:findPersonsByLocIDsJobCodesSoapIn" /> 
  <wsdl:output message="tns:findPersonsByLocIDsJobCodesSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="getGroupMemberList">
  <wsdl:input message="tns:getGroupMemberListSoapIn" /> 
  <wsdl:output message="tns:getGroupMemberListSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="isEmailValidByList">
  <wsdl:input message="tns:isEmailValidByListSoapIn" /> 
  <wsdl:output message="tns:isEmailValidByListSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="isEmailValid">
  <wsdl:input message="tns:isEmailValidSoapIn" /> 
  <wsdl:output message="tns:isEmailValidSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="isMemberOfSecurityGroup">
  <wsdl:input message="tns:isMemberOfSecurityGroupSoapIn" /> 
  <wsdl:output message="tns:isMemberOfSecurityGroupSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="isMemberOfDistList">
  <wsdl:input message="tns:isMemberOfDistListSoapIn" /> 
  <wsdl:output message="tns:isMemberOfDistListSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="getGroupMemberWindowsIDs">
  <wsdl:input message="tns:getGroupMemberWindowsIDsSoapIn" /> 
  <wsdl:output message="tns:getGroupMemberWindowsIDsSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="getGroupMemberWindowsIDsWithGroupsFlat">
  <wsdl:input message="tns:getGroupMemberWindowsIDsWithGroupsFlatSoapIn" /> 
  <wsdl:output message="tns:getGroupMemberWindowsIDsWithGroupsFlatSoapOut" /> 
  </wsdl:operation>
- <wsdl:operation name="isGroupValid">
  <wsdl:input message="tns:isGroupValidSoapIn" /> 
  <wsdl:output message="tns:isGroupValidSoapOut" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="ADSearcherSoap" type="tns:ADSearcherSoap">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
- <wsdl:operation name="findPersonByUserID">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/findPersonByUserID" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="findPersonFNameLName">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/findPersonFNameLName" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="findPersonByFilter">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/findPersonByFilter" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="findPersonAttr">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/findPersonAttr" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="Ping">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/Ping" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="findPersonCustom">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/findPersonCustom" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="findPersons">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/findPersons" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="findPersonsFNameLName">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/findPersonsFNameLName" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="findPersonsCustom">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/findPersonsCustom" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="findPersonsByLocIDsJobCodes">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/findPersonsByLocIDsJobCodes" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="getGroupMemberList">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/getGroupMemberList" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="isEmailValidByList">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/isEmailValidByList" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="isEmailValid">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/isEmailValid" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="isMemberOfSecurityGroup">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/isMemberOfSecurityGroup" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="isMemberOfDistList">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/isMemberOfDistList" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="getGroupMemberWindowsIDs">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/getGroupMemberWindowsIDs" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="getGroupMemberWindowsIDsWithGroupsFlat">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/getGroupMemberWindowsIDsWithGroupsFlat" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="isGroupValid">
  <soap:operation soapAction="http://ADSearcher.target.com/2005-07-14/isGroupValid" style="document" /> 
- <wsdl:input>
  <soap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="ADSearcher">
- <wsdl:port name="ADSearcherSoap" binding="tns:ADSearcherSoap">
  <soap:address location="http://adsearcher.target.com:9200/2006-03-27/Directory.asmx" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>

This message has been edited. Last edited by: Anonymouse,


Jeff
WebFOCUS 8.0.09, Unix-Win-z/OS
FOCUS 7.3.1 on z/OS
 
Posts: 34 | Location: Minneapolis, MN | Registered: June 10, 2003Report This Post
Platinum Member
posted Hide Post
The WSDL file definition stops at defining the anyType element. I guess Microsoft wants you to guess after that.

-



I'll let you know when I document the methodology. It should be finished sometime tomorrow.
 
Posts: 229 | Location: New York | Registered: July 27, 2004Report This Post
Silver Member
posted Hide Post
Having no knowledge of how web services work, I thought I just didn't know enough to trace the definitions in the WSDL. I'm almost glad to hear that the document is unclear to you, too!

I look forward to your document. Thanks again.


Jeff
WebFOCUS 8.0.09, Unix-Win-z/OS
FOCUS 7.3.1 on z/OS
 
Posts: 34 | Location: Minneapolis, MN | Registered: June 10, 2003Report This Post
Platinum Member
posted Hide Post
Here's the article.

Let me know how it goes.

Using __RESPONSE to Define Metadata for a Web Service Operation

The Web Services adapter allows WebFOCUS to interact with a Web Service operation. A WebFOCUS report can be created to display the output from a Web Service operation passing all the necessary values for the input parameters.

The Web Services Description Language (WSDL) file is an XML file which describes the input and output of all operations within a Web Service. Create Synonym for the Web Services adapter uses the WSDL file as the basis for creating a Master and Access file. Each Web Service operation would have its own Master and Access file. The input parameters for a Web Service operation show up as fields within the first segment of the Master file. The entire output for the Web Service operation is put into a Text field called __RESPONSE which is also in the first segment. The content of __RESPONSE is XML. Example 1 shows the first segment of the Master file for the ZipcodeToLatitudeLongitude Web Service operation. This operation has one parameter called ZIPCODE.

SEGMENT=ZIPCODETOLATITUDELOGITUDE, SEGTYPE=S0, $
GROUP=ZIPCODETOLATITUDELOGITUDE,
ALIAS=ZipCodeToLatitudeLogitude, ELEMENTS=1, $
FIELDNAME=ZIPCODE, ALIAS=ZipCode, USAGE=A30, ACTUAL=A30,
ACCESS_PROPERTY=(NEED_VALUE), $
FIELDNAME=__RESPONSE, USAGE=TX80L, ACTUAL=TX, $


The XML adapter is used to redefine the XML content within the __RESPONSE field into multiple fields. Notice the SEGSUF=XML within the Segment definition.

SEGMENT=RESPONSE, SEGTYPE=S0, SEGSUF=XML ,
PARENT=ZIPCODETOLATITUDELOGITUDE, POSITION=__RESPONSE, $

The WSDL file usually contains the definition of the XML returned from the Web Services operation. Create Synonym uses this definition when creating the fields for the redefinition of the contents of the __RESPONSE field. The element names defined in the XML returned from the Web Service operation has to match the ALIAS definition within the Master File. The hierarchy of elements within the XML returned from the Web Service operation also has to be represented in the Master file using the REFERENCE attribute.

There are times when the Response definition for a Web Service operation is not explicitly defined in the WSDL file. For example, when a Web Service operation is created to return a .NET dataset, the WSDL file shows a Type definition of Schema.

-
-





Since the Response elements are not explicitly defined in the WSDL file, the Master File Description would have to be modified manually after the initial Create Synonym.
The following is series of steps that can be used to create a Master file for a Web Service operation returning a .NET Dataset. These series of steps can also be used when the Response element definitions from the WSDL file are incomplete.

Step 1

Perform Create Synonym against the Web Service operation.

SEGMENT=RESPONSE, SEGTYPE=S0, SEGSUF=XML ,
PARENT=ZIPCODETOLATITUDELOGITUDE, POSITION=__RESPONSE, $
FIELDNAME=RESPONSE, ALIAS=ZipCodeToLatitudeLogitudeResponse,
USAGE=A1, ACTUAL=A1, ACCESS_PROPERTY=(INTERNAL), $
FIELDNAME=ZIPCODETOLATITUDELOGITUDERESULT,
ALIAS=ZipCodeToLatitudeLogitudeResult,
USAGE=A1, ACTUAL=A1, ACCESS_PROPERTY=(INTERNAL),
REFERENCE=RESPONSE, PROPERTY=ELEMENT, $

Note that the last field in the RESPONSE segment has a USAGE of A1 and ACCESS_PROPERTY equal to INTERNAL. This is an indication that there is more data in the Response but the WSDL file did not have the definition.

Note the last FIELDNAME in the Master file
(eg. ZIPCODETOLATITUDELOGITUDERESULT)

You will need it in a future step.


Step 2

Create a report printing the __RESPONSE fieldname and hold the output to a file with an XML extension. Do not hold the output in XML format since the contents of __RESPONSE is already in XML.

Ensure that all the appropriate input parameter values for the Web Service operation are set within this report.

FILEDEF TEMPOUT DISK C:\Response.xml
TABLE FILE ZIPCODETOLATITUDELOGITUDE
PRINT
__RESPONSE
WHERE ZIPCODE EQ '10121';
ON TABLE HOLD AS TEMPOUT
END


Step 3

Edit the XML Hold file in a text editor and remove the %$ characters situated at the end of the file and Save the change.

%$


If a WebFOCUS Release prior to 7.6 is being used, Steps 4 through 6 are not applicable and the XML Hold file should be used as a basis for manually editing the Web Services Master File. Ensure that all of the REFERENCE and PROPERTY attributes are defined for each of the fields added.

Step 4

Using the XML adapter, perform Create Synonym against the modified Hold file from Step 3. In WebFOCUS 7.6 and above, Create Synonym has the ability to use an XML file as its source. Make sure that XML is entered in the Files Extension textbox during the Create Synonym process.


Step 5

Copy all the field definitions from the XML Master File that you would need for reporting. Include all fields that they reference until the REFERENCE is equal to the fieldname identified in Step 1.

FIELDNAME=DIFFGRAM, ALIAS=diffgram, USAGE=A1, ACTUAL=A1,
MISSING=ON, ACCESS_PROPERTY=(INTERNAL),
REFERENCE=ZIPCODETOLATITUDELOGITUDERESULT,
PROPERTY=ELEMENT, $
FIELDNAME=NEWDATASET, ALIAS=NewDataSet, USAGE=A1, ACTUAL=A1,
MISSING=ON, ACCESS_PROPERTY=(INTERNAL),
REFERENCE=DIFFGRAM, PROPERTY=ELEMENT, $
FIELDNAME=COORDINATES, ALIAS=Coordinates, USAGE=A1, ACTUAL=A1,
MISSING=ON, ACCESS_PROPERTY=(INTERNAL),
REFERENCE=NEWDATASET, PROPERTY=ELEMENT, $
FIELDNAME=LATITUDE, ALIAS=latitude, USAGE=A55, ACTUAL=A55,
MISSING=ON, REFERENCE=COORDINATES, PROPERTY=ELEMENT, $
FIELDNAME=LONGITUDE, ALIAS=longitude, USAGE=A55, ACTUAL=A55,
MISSING=ON, REFERENCE=COORDINATES, PROPERTY=ELEMENT, $


In the example above, LATITUDE and LONGITUDE are the only fields needed for reporting. These fields have a REFERENCE equal to COORDINATES so that field would have to be included also. COORDINATES has a REFERENCE equal to NEWDATASET so that field would have to be included. NEWDATASET has a REFERENCE equal to DIFFGRAM so that field would have to be included. DIFFGRAM has a REFERENCE equal to ZIPCODETOLATITUDELOGITUDERESULT. ZIPCODETOLATITUDELOGITUDERESULT is the field identified in Step 1.


Step 6

Paste the field definitions from Step 5 to the bottom of the Web Services Master file created in Step 1.

SEGMENT=RESPONSE, SEGTYPE=S0, SEGSUF=XML ,
PARENT=ZIPCODETOLATITUDELOGITUDE, POSITION=__RESPONSE, $
FIELDNAME=RESPONSE, ALIAS=ZipCodeToLatitudeLogitudeResponse,
USAGE=A1, ACTUAL=A1, ACCESS_PROPERTY=(INTERNAL), $
FIELDNAME=ZIPCODETOLATITUDELOGITUDERESULT,
ALIAS=ZipCodeToLatitudeLogitudeResult, USAGE=A1, ACTUAL=A1,
ACCESS_PROPERTY=(INTERNAL), REFERENCE=RESPONSE,
PROPERTY=ELEMENT, $
FIELDNAME=DIFFGRAM, ALIAS=diffgram, USAGE=A1, ACTUAL=A1,
MISSING=ON, ACCESS_PROPERTY=(INTERNAL),
REFERENCE=ZIPCODETOLATITUDELOGITUDERESULT,
PROPERTY=ELEMENT, $
FIELDNAME=NEWDATASET, ALIAS=NewDataSet, USAGE=A1, ACTUAL=A1,
MISSING=ON, ACCESS_PROPERTY=(INTERNAL),
REFERENCE=DIFFGRAM, PROPERTY=ELEMENT, $
FIELDNAME=COORDINATES, ALIAS=Coordinates, USAGE=A1, ACTUAL=A1,
MISSING=ON, ACCESS_PROPERTY=(INTERNAL),
REFERENCE=NEWDATASET, PROPERTY=ELEMENT, $
FIELDNAME=LATITUDE, ALIAS=latitude, USAGE=A55, ACTUAL=A55,
MISSING=ON,
REFERENCE=COORDINATES, PROPERTY=ELEMENT, $
FIELDNAME=LONGITUDE, ALIAS=longitude, USAGE=A55, ACTUAL=A55,
MISSING=ON,
REFERENCE=COORDINATES, PROPERTY=ELEMENT, $


This Master file can now be used for reporting.
 
Posts: 229 | Location: New York | Registered: July 27, 2004Report This Post
Silver Member
posted Hide Post
That's the answer!!
I've got data now!
Thank you very much!!

Unfortunately, we're not on 7.6, so I have to manually scan the XML file and parse out the __RESPONSE fields. How does the XML adapter know what field formats to use? I saw none in my file, so I guessed at them based on the fieldnames that were in the file. Is there another way? Or, would I have to research the actual web service to find that information?

Thanks again!!!!


Jeff
WebFOCUS 8.0.09, Unix-Win-z/OS
FOCUS 7.3.1 on z/OS
 
Posts: 34 | Location: Minneapolis, MN | Registered: June 10, 2003Report This Post
Platinum Member
posted Hide Post
If the Web Service is returning a Dataset the Format types will show in the Schema section of the response. As far as the size, you would have to guess. Web Services has the ability to define size but mist Web Services do not.
Efrem
 
Posts: 229 | Location: New York | Registered: July 27, 2004Report This Post
  Powered by Social Strata  

Read-Only Read-Only Topic

Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     Can't get multiple records from a Web Service

Copyright © 1996-2020 Information Builders