Forte4j XML Operations, benefit??
I just read the "Building Web Services" Documentation
(http://forte.sun.com/ffj/documentation/)
Can someone please tell me the benefit of using XML Operations in building Web-Services??
Why not use Method calls on the Session Beans??
grz. Sander
...sorry, I already found the answer on page 17/18.
Because I now know what it is: I think that they use very strange examples. I think that the examples should match the purpose of XML Operations. Fortunately they don' t.....
(but that complaint is probably not in the right topic....)
sorry again..
Similar Messages
-
Using XML Operation Tags to query by date
Problem 1:
When I use timestamps from items' XML to form queries on repositories, I receive SQL errors.
Problem 1 Example:
Query the PublishingRepository to find all active projects created on August 16.
In Dynamo Administration, navigate to /atg/epub/PublishingRepository
In the box labeled "Run XML Operation Tags on the Repository," enter the following tag:
<query-items item-descriptor="project">status = "Active" AND creationDate = "08/16/2013"</query-items>
Result: java.sql.SQLDataException: ORA-01843: not a valid month
Problem 1 Solution:
Use this query instead:
<query-items item-descriptor="project">
status = "Active"
AND
creationDate = date("2013-08-16")
</query-items>
Problem 2:
Using the "<" operator to construct a less-than argument doesn't work.
Problem 2 Example:
Query the PublishingRepository to find all active projects created before August 16.
In Dynamo Administration, navigate to /atg/epub/PublishingRepository
In the box labeled "Run XML Operation Tags on the Repository," enter the following tag:
<query-items item-descriptor="project">status = "Active" AND creationDate < date("2013-08-16")</query-items>
Result: SOURCE:org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.
Problem 2 Solution:
For some reason, the ">" greater-than operator seems to work fine, even when the "<" less-than operator won't. You can switch around the order of the query to get the desired result:
<query-items item-descriptor="project">
status = "Active"
AND
date("2013-08-16") > creationDate
</query-items>Problem 1:
When I use timestamps from items' XML to form queries on repositories, I receive SQL errors.
Problem 1 Example:
Query the PublishingRepository to find all active projects created on August 16.
In Dynamo Administration, navigate to /atg/epub/PublishingRepository
In the box labeled "Run XML Operation Tags on the Repository," enter the following tag:
<query-items item-descriptor="project">status = "Active" AND creationDate = "08/16/2013"</query-items>
Result: java.sql.SQLDataException: ORA-01843: not a valid month
Problem 1 Solution:
Use this query instead:
<query-items item-descriptor="project">
status = "Active"
AND
creationDate = date("2013-08-16")
</query-items>
Problem 2:
Using the "<" operator to construct a less-than argument doesn't work.
Problem 2 Example:
Query the PublishingRepository to find all active projects created before August 16.
In Dynamo Administration, navigate to /atg/epub/PublishingRepository
In the box labeled "Run XML Operation Tags on the Repository," enter the following tag:
<query-items item-descriptor="project">status = "Active" AND creationDate < date("2013-08-16")</query-items>
Result: SOURCE:org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.
Problem 2 Solution:
For some reason, the ">" greater-than operator seems to work fine, even when the "<" less-than operator won't. You can switch around the order of the query to get the desired result:
<query-items item-descriptor="project">
status = "Active"
AND
date("2013-08-16") > creationDate
</query-items> -
XML operation resulted an XML data type exceeding 2GB in size. Operation aborted.
I have table with one million rows, when i am using xml path ('Root'), it giving me an error
"XML operation resulted an XML data type exceeding 2GB in size. Operation aborted."
This is a limitation of sqlserver. I have to xml path because i have to create nodes and attributes. In more complex case i will be joining multiple tables to get id and other attributes so combining multiple xmls in not an option here.
any workaround....thanks in advanceHere an example of your query that retrieve record in batch of 2 records. In real code, you should save the last id retrieved and call the query in a loop.
DECLARE @BATCHSIZE AS integer
SET @BATCHSIZE = 2
DECLARE @LASTID As Integer
SET @LASTID = 0
select top(@BATCHSIZE) id as "@id"
,name as "@name"
select id as "@id"
,name as "@name"
select *
from @products p
where p.customer_id = cs.id
group by id,customer_id,name
for xml path ('product'),Root('products'),type
from @customer cs
where cs.client_id = c.id
group by id,client_id,name
for xml path ('customer'),Root('customers'),type
from @client c
where c.id > @LASTID
order by c.id
for xml path ('clients'),Root ('Main') -
How to allow multiple output parameters in a user-defined service operation???
I have creating a self-defined service operation “LDAPAddUser” to connect to LDAP server to create user accounts. I want to get 2 output parameters after executing the operation. One is the result (Boolean data type) and one is the error message (String data type). However, since Java only support one return value in a method, it seems that only one output parameter can be returned. May I have the suggestion so that multiple parameters can be supported in this case? Here is the extracted code
In Java program,
public Boolean addUser(String url, String aName)
In file "component.xml",
<operation name="addUser" method="addUser" orchestrateable="true" anonymous-access="true">
<hint>Add a new user</hint>
<input-parameter name="url" type="java.lang.String" required="true" title="LDAP URL">
</input-parameter>
<input-parameter name="aName" type="java.lang.String" required="true" title="Admin Login Name">
</input-parameter>
<output-parameter name="Result" title="Result" type="java.lang.Boolean">
</output-parameter>
Besides the boolean return value, I want to get another return value (string data type). Any suggestion ?I've returned multiple values to LiveCycle by using a complex object as an intermediatory.
For example if I need to return two strings (firstName and lastName), I'll first build a single class (name) with two string attributes (private String firstName; private String LastName) and add getters and setters to my "name" class for each. My service class method will return an object of type "name".
for example public name mymethod(String GUID, String username, String password).......
Then in the component.xml you can return the two strings as long as you use the binding type "Bean":
<output-parameter name="firstName" title="First Name" binding-type="Bean" property="firstName">
</output-parameter>
<output-parameter name="lastName" title="Last Name" binding-type="Bean" property="lastName">
</output-parameter> -
How to search XML data from a HTTPMultiService and display the result on the Spark List
Hello all,
I am totally new to Flash Builder and Actionscript and hope someone might be able to help me out. I basically create a mobile app with a single view. The view has a TextInput as a search box and a search button. I conntected a Data/Service using a local XML file and bind the Data to a Spark List. Innitally the List will show nothing until the user enter the search term and hit the button. The List suppose to show the XML data that match the search term.
Now is my problem. I cannot make the List to show the data that match the search text. The List just shows ALL the data.
Here are my MXML code:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:shopping="services.shopping.*"
title="Search">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function button1_clickHandler(event:MouseEvent):void
navigator.popView();
protected function list_creationCompleteHandler(event:FlexEvent):void
getDataResult.token = shopping.getData();
protected function seach_clickHandler(event:MouseEvent):void
getDataResult.token = shopping.getSearchData(searchTxt.text);
]]>
</fx:Script>
<fx:Declarations>
<s:CallResponder id="getDataResult"/>
<shopping:Shopping id="shopping"/>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:actionContent>
<s:Button height="79" label="Back" click="button1_clickHandler(event)"/>
</s:actionContent>
<s:List id="list" left="0" right="0" top="111" bottom="0"
creationComplete="list_creationCompleteHandler(event)" labelField="english">
<s:AsyncListView list="{getDataResult.lastResult}"/>
</s:List>
<s:TextInput id="searchTxt" x="80" y="34" width="250" height="49" enabled="true"
prompt="search..."/>
<s:Button id="search" x="338" y="35" width="72" height="49" label="s"
click="seach_clickHandler(event)"/>
</s:View>
Here is the _Super_Shopping.as file:
* This is a generated class and is not intended for modification. To customize behavior
* of this service wrapper you may modify the generated sub-class of this class - Shopping.as.
package services.shopping
import com.adobe.fiber.core.model_internal;
import com.adobe.fiber.services.wrapper.HTTPServiceWrapper;
import com.adobe.serializers.xml.XMLSerializationFilter;
import mx.rpc.AbstractOperation;
import mx.rpc.AsyncToken;
import mx.rpc.http.HTTPMultiService;
import mx.rpc.http.Operation;
import valueObjects.Shop;
[ExcludeClass]
internal class _Super_Shopping extends com.adobe.fiber.services.wrapper.HTTPServiceWrapper
private static var serializer0:XMLSerializationFilter = new XMLSerializationFilter();
// Constructor
public function _Super_Shopping()
// initialize service control
_serviceControl = new mx.rpc.http.HTTPMultiService();
var operations:Array = new Array();
var operation:mx.rpc.http.Operation;
var argsArray:Array;
operation = new mx.rpc.http.Operation(null, "getData");
operation.url = "assets/data/shopping.xml";
operation.method = "GET";
operation.serializationFilter = serializer0;
operation.properties = new Object();
operation.properties["xPath"] = "/::shop";
operation.resultElementType = valueObjects.Shop;
operations.push(operation);
operation = new mx.rpc.http.Operation(null, "getSearchData");
operation.url = "assets/data/shopping.xml";
operation.method = "GET";
operation.resultFormat = "text";
argsArray = new Array("item");
operation.argumentNames = argsArray;
operation.properties = new Object();
operation.properties["xPath"] = "/::shop";
operation.resultElementType = valueObjects.Shop;
operations.push(operation);
_serviceControl.operationList = operations;
preInitializeService();
model_internal::initialize();
//init initialization routine here, child class to override
protected function preInitializeService():void
* This method is a generated wrapper used to call the 'getData' operation. It returns an mx.rpc.AsyncToken whose
* result property will be populated with the result of the operation when the server response is received.
* To use this result from MXML code, define a CallResponder component and assign its token property to this method's return value.
* You can then bind to CallResponder.lastResult or listen for the CallResponder.result or fault events.
* @see mx.rpc.AsyncToken
* @see mx.rpc.CallResponder
* @return an mx.rpc.AsyncToken whose result property will be populated with the result of the operation when the server response is received.
public function getData() : mx.rpc.AsyncToken
var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("getData");
var _internal_token:mx.rpc.AsyncToken = _internal_operation.send() ;
return _internal_token;
public function getSearchData(item:String) : mx.rpc.AsyncToken
var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("getSearchData");
var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(item);
return _internal_token;
The getSearchData() supposed to return XML data that match the search text, but it doesn't. Can anyoen help?
Thank you!Hi,
are you able to change dynamically the operation.url = "assets/data/shopping.xml";?
i need to do that based on the users input.
Thanks in advance, -
Formatting an XML string that has a date
Hi All - new to this forum!
Not familiar with XML operations and seeking some advise. I have a field that contains XML text that has a date within that I want to extract and format appropriately for some reports.
Getting to the date portion of the field is not pretty (original code below) and could desire some work itself, but the real problem lies in formatting the date once extracted; sometimes the date text is in the format of "Month DD YYYY" and other times "DD Month YYYY" so the below code fails if the latter is found.
SELECT TO_DATE(RTRIM(SUBSTR(email_variables, INSTR(email_variables,'CHECKIN_DATE')+22,18),']]></CHECKIN_DATE><CHECKOUT_DATE>]'),'Month DD YYYY') CHECKIN_DATE,COUNT(*)
FROM t_ecomm_relations_queue
WHERE code_corr_ecat = 'PREA'
AND status IN ('A', 'R')
AND TO_DATE(RTRIM(SUBSTR(email_variables, INSTR(email_variables,'CHECKIN_DATE')+22,18),']]></CHECKIN_DATE><CHECKOUT_DATE>]'), 'Month DD YYYY') < TRUNC(SYSDATE) + 7
AND TO_DATE(RTRIM(SUBSTR(email_variables, INSTR(email_variables,'CHECKIN_DATE')+22,18),']]></CHECKIN_DATE><CHECKOUT_DATE>]'), 'Month DD YYYY') >= TRUNC(SYSDATE)
GROUP BY TO_DATE(RTRIM(SUBSTR(email_variables, INSTR(email_variables,'CHECKIN_DATE')+22,18),']]></CHECKIN_DATE><CHECKOUT_DATE>]'),'Month DD YYYY');
Any ideas for more efficient code or options for formatting is appreciated.
Thank you!The best thing to do with a date you want to report on, is to not store it corrupted inside XML.
Multiple reasons why are discussed here.
If you are stuck with the ugly inefficient design, then you are probably stuck with ugly inefficient code as a result. -
Error in validating XML against schema
Hi am getting some critical errors while Validating XML against schema
error is:
cvc-elt.1: Cannot find the declaration of element 'position' , here <position> is my root element.
my code is as follows:
package com.glemser.xmLabeling.library.component.spl;
import com.documentum.com.DfClientX;
import com.documentum.com.IDfClientX;
import com.documentum.fc.client.IDfClient;
import com.documentum.fc.client.IDfSession;
import com.documentum.fc.client.IDfSessionManager;
import com.glemser.common.helper.OperationHelper;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.InputStream;
public class Test {
static IDfSession m_session;
public static void main(String[] args) {
try {
new Test().validate();
} catch (Exception e) {
e.printStackTrace();
private XMLReader xmlReader;
private DefaultHandler handler; // Defines the handler for this parser
private boolean valid = true;
public void validate() {
try {
SetXML setXML = new SetXML();
OperationHelper operation = new OperationHelper();
String splObjPath = "C://Documents and Settings/dparikh/My Documents/xmLabelingStage/Test.xml";//operation.executeExportOperation(m_session, new DfId(m_objectId), true);
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(false);
spf.setValidating(true);
spf.setFeature("http://xml.org/sax/features/validation", true);
spf.setFeature("http://apache.org/xml/features/validation/schema", true);
spf.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true);
if (spf.isValidating()) {
System.out.println("The parser is validating");
javax.xml.parsers.SAXParser sp = spf.newSAXParser();
sp.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
sp.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", "file://C:/Documents and Settings/dparikh/My Documents/xmLabelingStage/Test.xsd");
System.out.println("The parser is validating1");
//Create XMLReader
xmlReader = sp.getXMLReader();
xmlReader.setFeature("http://apache.org/xml/features/validation/schema", true);
xmlReader.setEntityResolver(new SchemaLoader());
ContentHandler cHandler = new MyDefaultHandler();
ErrorHandler eHandler = new MyDefaultHandler();
xmlReader.setContentHandler(cHandler);
xmlReader.setErrorHandler(eHandler);
System.out.println("The parser is validating2");
parseDocument(splObjPath);
} catch (SAXException se) {
se.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
public void parseDocument(String xmlFile) {
try {
xmlReader.parse(xmlFile);
if (valid) {
System.out.println("Document is valid!");
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
class MyDefaultHandler extends DefaultHandler {
private CharArrayWriter buff = new CharArrayWriter();
private String errMessage = "";
/* With a handler class, just override the methods you need to use
// Start Error Handler code here
public void warning(SAXParseException e) {
System.out.println("Warning Line " + e.getLineNumber() + ": " + e.getMessage() + "\n");
public void error(SAXParseException e) {
errMessage = new String("Error Line " + e.getLineNumber() + ": " + e.getMessage() + "\n");
System.out.println(errMessage);
valid = false;
public void fatalError(SAXParseException e) {
errMessage = new String("Error Line " + e.getLineNumber() + ": " + e.getMessage() + "\n");
System.out.println(errMessage);
valid = false;
public class SchemaLoader implements EntityResolver {
public static final String FILE_SCHEME = "file://";
public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
if (systemId.startsWith(FILE_SCHEME)) {
String filename = systemId.substring(FILE_SCHEME.length());
InputStream stream = SchemaLoader.class.getClassLoader().getResourceAsStream(filename);
return new InputSource(stream);
} else {
return null;
My XML and XSD are as below:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="position" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="position_number" type="xsd:string"/>
<xsd:element name="position_title" type="xsd:string"/>
<xsd:element name="report_to_position" type="xsd:string"/>
<xsd:element name="incumbent" type="xsd:string"/>
<xsd:element name="operation" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<position xsi:schemaLocation="Test.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<position_number>12345</position_number>
<position_title>Sr. Engr</position_title>
<report_to_position>23456</report_to_position>
<incumbent>23456</incumbent>
<operation>INSERT</operation>
</position
Please help me out--> Could not find cached enumeration value Custom.CI.Enum.PeripheralDevice.Printer for property Type, class BMC.Custom.CI.PeripheralDevice in enumeration cache.
You must specify either the Name or Guid of an enumeration of type Custom.CI.Enum.PeripheralDevice.Type.
Be sure that you are specifying the Name property of the enumeration value you want to set, and not the DisplayName; the Internal Name is something like "IncidentCategoryEnum.Category" for out of the box enumerations, or ENUM.210ADA2282FDABC3210ADA2282FDABC
for enumerations created in the console.
you can check this by finding the enumeration in the XML or by using the the
SMLets commandlet
Get-SCSMEnumeration | ?{$_.DisplayName –eq “Printer”}
and then checking your value with
Get-SCSMEnumeration -Name "ENUM.210ADA2282FDABC3210ADA2282FDABC"
and see if you get the right displayname back -
Java.lang.NullPointerException no protocol: database.xml
* In Order To Handle XML Operations
package edu.yeditepe.cse.util;
import java.util.*;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
* @author xx
public class XMLHandler {
public final static String ATTRIBUTE = "value";
public final static String DOCTYPE_PUBLIC = "databases";
public final static String DOCTYPE_SYSTEM = "database.dtd";
public final static String ParentElement = "variable";
public final static String databaseName = "databasename";
public final static String urlName = "urlname";
public final static String userName = "username";
public final static String passWord = "password";
public XMLHandler()
// This Function returns the XML File .
private static Document getDocument(){
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringComments(true);
factory.setIgnoringElementContentWhitespace(true);
factory.setValidating(true);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setErrorHandler(new MyErrorHandler());
return builder.parse(new InputSource("database.xml"));
} catch (Exception e) {
System.out.println(e.getMessage());
return null;
//Adds new Element to The database.Xml File.
public boolean addElement(String databasename , String urlname, String username , String password ){
Document doc = getDocument();
Element root = doc.getDocumentElement();
Element parentElement = (Element)doc.createElement(ParentElement);//Take parent Element. We have to take this parent Element since we will add new Element to this Parent Element.
Element databaseNameElement = (Element)doc.createElement(databaseName);//Create Name Element To Bind Value of New Element.
databaseNameElement.setAttribute(ATTRIBUTE , databasename );//set the attribute of this child.
Element urlnameElement = (Element)doc.createElement(urlName);//Create Name Element To Bind Value of New Element.
urlnameElement.setAttribute(ATTRIBUTE , urlname );//set the attribute of this child.
Element usernameElement = (Element)doc.createElement(userName);//Create Value Element To Bind Value of the new Element.
usernameElement.setAttribute(ATTRIBUTE , username );//set the attribute of this second child.
Element passwordElement = (Element)doc.createElement(passWord);//Create Value Element To Bind Value of the new Element.
passwordElement.setAttribute(ATTRIBUTE , password );//set the attribute of this second child.
//Form New Variable via appending its name and value child to itself.
parentElement.appendChild(databaseNameElement);
parentElement.appendChild(urlnameElement);
parentElement.appendChild(usernameElement);
parentElement.appendChild(passwordElement);
//Add This Variable To The Root Element.
root.appendChild(parentElement);
try{
saveDocument(doc);//Save And Close The XML File. Catch any Exception Occured.
return true;
}catch(Exception e){
System.out.println("##error: " + e);
e.printStackTrace();
return false;
}//add Element Function.
// Save changes of the Document doc.
private boolean saveDocument(Document doc){
try{
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.setOutputProperty(OutputKeys.INDENT, "yes");//For INDENTED PRINTING OF THE FILE
xformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-9");//Determining Encoding Type.
xformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, DOCTYPE_PUBLIC);//PRESERVE ROOT ELEMENT
xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, DOCTYPE_SYSTEM);//REFERENCE TO DTD FILE
Source source = new DOMSource(doc);
Result result = new StreamResult(new File("database.xml"));
xformer.transform(source, result);
return true;
}catch(TransformerConfigurationException e){
System.out.println(e);
}catch(TransformerException e){
System.out.println(e);
return false;
}//Save
package edu.yeditepe.cse.util;
* @author xx
public class Deneme {
* @param args
public static void main(String[] args) {
// TODO Auto-generated method stub
XMLHandler xh = new XMLHandler();
System.out.println(xh.addElement("dasd","asda","adadad","das"));
}it gives error in linse "Element root = doc.getDocumentElement();"
i am using jre 1.5.0_ 09
xalan-2.7.0.jar
Error on the console is :
no protocol: database.xml
Exception in thread "main" java.lang.NullPointerException
at edu.yeditepe.cse.util.XMLHandler.addElement(XMLHandler.java:69)
at edu.yeditepe.cse.util.Deneme.main(Deneme.java:16)
Problem is related with
return builder.parse(new InputSource("database.xml"));
when i am trying to type file:///database.xml instead of database.xml
it adds some more path therefore it doesn't work
Any help appreciated..It seems that the file you are trying to parse is not in your current working directory. The solution, if that is the problem, would be to specify the full path of the file.
-
[Solved]Web Service Data Control operation not visible in Data Controls
Hi!
I've created Web Service Data Control (named MyDataControl ) in my DataModel project for my web application (ADF BC 10.1.3.3). I've finished the wizard successfully (added initiate operation to the right side in step 2: Data Control Operations) but when the wizard finishes the initiate operation is not visible in the Data Controls (MyDataControl is visible without the operation). I'm using CVS so I think maybe some files were write protected while creating the control.
These are the files where Data Control is written to:
DataControls.dcx:
<AdapterDataControl id="MyDataControl" FactoryClass="oracle.adf.model.adapter.DataControlFactoryImpl"
ImplDef="oracle.adfinternal.model.adapter.webservice.WSDefinition" SupportsTransactions="false"
SupportsSortCollection="false" SupportsResetState="false" SupportsRangesize="false"
SupportsFindMode="false" SupportsUpdates="false" Definition="MyDataControl"
BeanClass="MyDataControl" xmlns="http://xmlns.oracle.com/adfm/datacontrol">
<Source>
<definition xmlns="http://xmlns.oracle.com/adfm/adapter/webservice" name="MyDataControl" version="1.0"
provider="oracle.adfinternal.model.adapter.webservice.provider.soap.SOAPProvider"
wsdl="my_wsdl_location">
<service name="MyService" namespace="urn:eu.emsa.ssn" connection="MyDataControl">
<port name="MyServicePort">
<operation name="initiateMyService">
<dataformat format="XML"/>
</operation>
</port>
</service>
</definition>
</Source>
</AdapterDataControl>and MyDataControl.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<JavaBean xmlns="http://xmlns.oracle.com/adfm/beanmodel" version="10.1.3.41.57" id="MyDataControl"
BeanClass="MyDataControl" isJavaBased="false">
<MethodAccessor id="initiateMyService">
<ParameterInfo id="ReplyTo_Address" Type="java.lang.String" isStructured="false"/>
<ParameterInfo id="ReplyTo_PortType" Type="java.lang.String" isStructured="false"/>
<ParameterInfo id="ReplyTo_ServiceName_PortName" Type="java.lang.Object" isStructured="false"/>
<ParameterInfo id="ReplyTo_ServiceName" Type="java.lang.String" isStructured="false"/>
<ParameterInfo id="MessageID" Type="java.lang.String" isStructured="false"/>
<ParameterInfo id="payload" Type="java.lang.String" isStructured="false"/>
</MethodAccessor>
</JavaBean>A couple of days ago I've created a Data Control for another BPEL process the same way and everything was OK.
Any ideas why this is not working?
Regards!
BB
Message was edited by:
BrokenboneFound out the reason. The problem was in ...MyApp\.adf\META-INF\connections.xml file which had write protection.
BB -
XML Interface in Solution Manager
Hi All,
In Solution Documentation presentation, there are slides that give details on importing documentation from external sources like(Excel) into Solution Manager documentation. Has anyone done this task and what is the interface used to export to standard SAP XML format from EXCEL and import files from XML format into soution documentation (SOLAR01)?
Details from slides are:
Using a XML interface business process documentation of external sources like MS Excel, Lotus Notes can be efficiently imported in SAP Solution Manager
Data transfer process flow:
Detailed steps
1. Develop a data extractor program to convert MS Excel to XML document
- Create a program to extract content from data source. The extractor has to use the xml schema definitions provided by SAP
- Extract the data from the data source into XML format
Benefit
Quick and efficient method to transfer external documentation into SAP Solution Manager
Detailed steps
Use SAP Solution Manager interface to import XML documentation
- Import the data into SAP Solution Manager within SAP Solution Manager
- Verify the imported documentation
Thanks and regards,
NischalHello,
You can find links to many interesting documents and also some troubleshooting guides at https://wiki.sdn.sap.com/wiki/display/SM/Maintenance+Optimizer
Best regards,
Miguel Ariñ -
[Solved]WS Data Control operation not visible in Data Controls in JDev
Hi!
I've created Web Service Data Control (named MyDataControl ) in my DataModel project for my web application (ADF BC 10.1.3.3). I've finished the wizard successfully (added initiate operation to the right side in step 2: Data Control Operations) but when the wizard finishes the initiate operation is not visible in the Data Controls (MyDataControl is visible without the operation). I tried on JDev forum but had no success.
DataControls.dcx:
<AdapterDataControl id="MyDataControl" FactoryClass="oracle.adf.model.adapter.DataControlFactoryImpl"
ImplDef="oracle.adfinternal.model.adapter.webservice.WSDefinition" SupportsTransactions="false"
SupportsSortCollection="false" SupportsResetState="false" SupportsRangesize="false"
SupportsFindMode="false" SupportsUpdates="false" Definition="MyDataControl"
BeanClass="MyDataControl" xmlns="http://xmlns.oracle.com/adfm/datacontrol">
<Source>
<definition xmlns="http://xmlns.oracle.com/adfm/adapter/webservice" name="MyDataControl" version="1.0"
provider="oracle.adfinternal.model.adapter.webservice.provider.soap.SOAPProvider"
wsdl="my_wsdl_location">
<service name="MyService" namespace="urn:eu.emsa.ssn" connection="MyDataControl">
<port name="MyServicePort">
<operation name="initiateMyService">
<dataformat format="XML"/>
</operation>
</port>
</service>
</definition>
</Source>
</AdapterDataControl>and MyDataControl.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<JavaBean xmlns="http://xmlns.oracle.com/adfm/beanmodel" version="10.1.3.41.57" id="MyDataControl"
BeanClass="MyDataControl" isJavaBased="false">
<MethodAccessor id="initiateMyService">
<ParameterInfo id="ReplyTo_Address" Type="java.lang.String" isStructured="false"/>
<ParameterInfo id="ReplyTo_PortType" Type="java.lang.String" isStructured="false"/>
<ParameterInfo id="ReplyTo_ServiceName_PortName" Type="java.lang.Object" isStructured="false"/>
<ParameterInfo id="ReplyTo_ServiceName" Type="java.lang.String" isStructured="false"/>
<ParameterInfo id="MessageID" Type="java.lang.String" isStructured="false"/>
<ParameterInfo id="payload" Type="java.lang.String" isStructured="false"/>
</MethodAccessor>
</JavaBean>A couple of days ago I've created a Data Control for another BPEL process the same way and everything was OK.
Any ideas why this is not working?
Regards!
BB
Message was edited by:
BrokenboneFound out the reason. The problem was in ...MyApp\.adf\META-INF\connections.xml file which had write protection.
BB -
I am having some problems getting the XML structure I want for Arrays.
Let's say I want an array that looks like this in xml:
<Operation>
<Element2>data1</Element2>
<Element2>data2</Element2>
</Operation>
I would have thought I could the jws operation as the following:
/* jws:operation
public String Operation (String[] Element2) {
return "result";
Instead WLW creates the following XML:
<Operation xmlns="http://www.openuri.org/">
<Element>
<String>
Value_s
</String>
<String>
Value_s
</String>
</Element>
</Operation>
How do I get WLW to create the XML I want above?Dave,
You are right, that is the way to get the desired output. Sorry for the
delayed response.
Do let us know if you have any further queries/inputs.
Regards,
Anurag
Workshop Support
"Dave Remy" <[email protected]> wrote in message
news:[email protected]..
I haven't tried this yet but I got an email from a smart WLW developer I
know so it would probably work. It requires an XML map that looks like
this:
<Operation xmlns="http://www.openuri.org/">
<Element2 xm:multiple="s in Element2">{s}</Element2>
</Operation>
Method is:
public String Operation(String[] Element2)
"Dave Remy" <[email protected]> wrote in message
news:[email protected]..
I am having some problems getting the XML structure I want for Arrays.
Let's say I want an array that looks like this in xml:
<Operation>
<Element2>data1</Element2>
<Element2>data2</Element2>
</Operation>
I would have thought I could the jws operation as the following:
/* jws:operation
public String Operation (String[] Element2) {
return "result";
Instead WLW creates the following XML:
<Operation xmlns="http://www.openuri.org/">
<Element>
<String>
Value_s
</String>
<String>
Value_s
</String>
</Element>
</Operation>
How do I get WLW to create the XML I want above? -
Mark, when i try to generate the xml from the database using XMLELEMENTS , i do not get the header information like.
<?xml version="1.0" encoding="ISO-8859-1"?>
And this becomeas aproblem to the parser which reads the files generated from my system.
Is there anything i am missing.
So as a workaround i pad the string with the select statements.
here the the select statement for reference.
SELECT Orderid,
'<?xml version="1.0" encoding="ISO-8859-1"?>'||XMLELEMENT("MEPInputData"
, XMLAttributes
'http://www.w3.org/2001/XMLSchema-instance' AS "xmlns:xsi"
,'InputOrder.xsd' AS "xsi:noNamespaceSchemaLocation"
, model AS "Model"
, '1.0' AS "Version"
,XMLELEMENT
("XMLInputOrder"
,XMLELEMENT("OrderID", OrderID)
,XMLELEMENT("TimeStampInputOrder", TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'))
,XMLELEMENT("TimeStampInputOrderText", TO_CHAR(SYSDATE, 'DD.MM.YYYY HH24.MI.SS'))
,XMLELEMENT
("ResultOutPut"
,XMLELEMENT("NameResultFile", 'Result_'||OrderID||'.xml')
,XMLELEMENT("DirectoryResultFile", 'X:\Moehwald\PrismaNT\DSShare')
,XMLELEMENT
("UsedDatas"
,XMLELEMENT
("UsedData", XMLAttributes('Typdata' AS "UsedDataType")
, XMLELEMENT("UsedInpDatum"
,XMLAttributes
'Typdata' AS "Typ"
,typ_version AS "Version"
,typ_LastTimeStamp AS "LastTimeStamp"
), TYPEDATA
,XMLELEMENT
("UsedData", XMLAttributes('Sequdata' AS "UsedDataType")
, XMLELEMENT("UsedInpDatum"
,XMLAttributes
'Sequdata' AS "Typ"
,seq_version AS "Version"
,seq_LastTimeStamp AS "LastTimeStamp"
), ABLAUFDATA
,XMLELEMENT
("UsedData", XMLAttributes('RegistryKonfig' AS "UsedDataType")
, XMLELEMENT("UsedInpDatum"
,XMLAttributes
'RegistryKonfig' AS "Typ"
,NULL AS "Version"
,NULL AS "LastTimeStamp"
), REGISTRYKONFIG
).GetStringVal() AS "INPUTORDERXML"
FROM VW_XMLInputOrder
ThanksNope you not missing anything, we are. There is a new SQL/XML operator XMLROOT scheduled for a future release of the database that will generate this. In the mean time the only 'work-around' I know of is
XMLType('XML prolog' || xmlelement(....).getClobVal())
This will work with small documents, but not with larger documents....
I've used something like this when I've needed to. Note XMLParse is only available in 10.x.
create or replace function XMLROOT (XML XMLType,
PI varchar2 default NULL)
return XMLType deterministic
is
tempCLOB clob;
tempXML XMLtype;
begin
select xmlparse(DOCUMENT '<?xml version="1.0" encoding="UTF-8"?>' || PI || XML.getClobVal() WELLFORMED)
into tempXML
from dual;
return tempXML;
end;
xmlparse is simply a more efficeint way of creating a Non Schema based XMLType from the 'XMLText'. On a Pre 10x database you could substiture XMLType for XMLParse. -
JDBC operation throws a NullPointerException
Hi all...
It seems that any attempt to perform a jdbc access from a deployed LCA (my process at this point only contains the JDBC 'query multiple to xml' operation) results in the following exception on the LC server (see below). The query and xml generation all seem to work ok from the Workbench. I can mail the lca upon request. Thanks.
[4/28/08 17:10:15:557 EDT] 00000059 SystemOut O [Flex] [ERROR] Root cause: java.lang.NullPointerException
at com.adobe.idp.dsc.jdbc.helper.SqlHelper.executeQuery(SqlHelper.java:85)
at com.adobe.idp.dsc.jdbc.JDBCService.queryMultipleToXml(JDBCService.java:391)
at sun.reflect.GeneratedMethodAccessor1517.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.jav a:181)
at com.adobe.idp.dsc.interceptor.impl.InvocationInterceptor.intercept(InvocationInterceptor. java:134)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor$1.doInTransaction(Transa ctionInterceptor.java:74)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.execute(EjbTr ansactionCMTAdapterBean.java:336)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.doSupports(Ej bTransactionCMTAdapterBean.java:212)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EJSLocalStatelessEjbTransactionCMTAdapter_ caf58c4f.doSupports(Unknown Source)
at com.adobe.idp.dsc.transaction.impl.ejb.EjbTransactionProvider.execute(EjbTransactionProvi der.java:104)
at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor.intercept(TransactionInt erceptor.java:72)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.interceptor.impl.InvalidStateInterceptor.intercept(InvalidStateIntercep tor.java:37)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.interceptor.impl.AuthorizationInterceptor.intercept(AuthorizationInterc eptor.java:88)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.engine.impl.ServiceEngineImpl.invoke(ServiceEngineImpl.java:113)
at com.adobe.idp.dsc.routing.Router.routeRequest(Router.java:102)
at com.adobe.idp.dsc.provider.impl.base.AbstractMessageReceiver.routeMessage(AbstractMessage Receiver.java:88)
at com.adobe.idp.dsc.provider.impl.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:21 0)
at com.adobe.idp.dsc.provider.impl.base.AbstractMessageDispatcher.send(AbstractMessageDispat cher.java:57)
at com.adobe.idp.dsc.clientsdk.ServiceClient.invoke(ServiceClient.java:208)
at com.adobe.idp.taskmanager.dsc.service.TaskManagerServiceImpl.renderForm(TaskManagerServic eImpl.java:3404)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.jav a:181)
at com.adobe.idp.dsc.interceptor.impl.InvocationInterceptor.intercept(InvocationInterceptor. java:134)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.transI don't see any blank values anywhere. I have a single 'Assign Task' operation with the following config. I can send an lca if you like.
Initial User = 'Assign to Process Creator'
Form Data Mappings => input form variable = /process_data/myXFAForm
output form var = /process_data/myXFAForm
myXFAForm has as its Render Service/Operation = JdbService/queryMultipleToXml with the following settings:
datasourceName(literal)= IDP_DS
sql_info(literal)= select FIRST_NAME, LAST_NAME, CONTACT_INFO, ORACLE_USERID from TVS_TVAS_USER where STATUS='ACTIVE'
xml_info (literal) = root: tvasUsers; element: User; mapping: [{element_name=firstname, column_index=1, column_name=FIRST_NAME}, {element_name=lastname, column_index=2, column_name=LAST_NAME}, {element_name=emailAddress, column_index=3, column_name=CONTACT_INFO}, {element_name=tvasUserID, column_index=4, column_name=ORACLE_USERID}]
service output settings:
document=task/Document -
JDBC 'Query Multiple to XML' throwing NullPointerException on LC Server
Hi all...
It seems that any attempt to perform a jdbc access from a deployed LCA (my process at this point only contains the JDBC 'query multiple to xml' operation) results in the following exception on the LC server (see below). The query and xml generation all seem to work ok from the Workbench. I can mail the lca upon request. Thanks.
[4/28/08 17:10:15:557 EDT] 00000059 SystemOut O [Flex] [ERROR] Root cause: java.lang.NullPointerException
at com.adobe.idp.dsc.jdbc.helper.SqlHelper.executeQuery(SqlHelper.java:85)
at com.adobe.idp.dsc.jdbc.JDBCService.queryMultipleToXml(JDBCService.java:391)
at sun.reflect.GeneratedMethodAccessor1517.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.jav a:181)
at com.adobe.idp.dsc.interceptor.impl.InvocationInterceptor.intercept(InvocationInterceptor. java:134)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor$1.doInTransaction(Transa ctionInterceptor.java:74)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.execute(EjbTr ansactionCMTAdapterBean.java:336)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.doSupports(Ej bTransactionCMTAdapterBean.java:212)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EJSLocalStatelessEjbTransactionCMTAdapter_ caf58c4f.doSupports(Unknown Source)
at com.adobe.idp.dsc.transaction.impl.ejb.EjbTransactionProvider.execute(EjbTransactionProvi der.java:104)
at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor.intercept(TransactionInt erceptor.java:72)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.interceptor.impl.InvalidStateInterceptor.intercept(InvalidStateIntercep tor.java:37)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.interceptor.impl.AuthorizationInterceptor.intercept(AuthorizationInterc eptor.java:88)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.engine.impl.ServiceEngineImpl.invoke(ServiceEngineImpl.java:113)
at com.adobe.idp.dsc.routing.Router.routeRequest(Router.java:102)
at com.adobe.idp.dsc.provider.impl.base.AbstractMessageReceiver.routeMessage(AbstractMessage Receiver.java:88)
at com.adobe.idp.dsc.provider.impl.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:21 0)
at com.adobe.idp.dsc.provider.impl.base.AbstractMessageDispatcher.send(AbstractMessageDispat cher.java:57)
at com.adobe.idp.dsc.clientsdk.ServiceClient.invoke(ServiceClient.java:208)
at com.adobe.idp.taskmanager.dsc.service.TaskManagerServiceImpl.renderForm(TaskManagerServic eImpl.java:3404)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.jav a:181)
at com.adobe.idp.dsc.interceptor.impl.InvocationInterceptor.intercept(InvocationInterceptor. java:134)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestInterceptor ChainImpl.java:44)
at com.adobe.idp.dsc.transis your issue solved,if not mail me
[email protected]
Maybe you are looking for
-
Problem with pdf export and setting of the paper size
Hi, I develop plugins for InDesign server. Can anybody suggest me an way to exports a pdf/ps file from a indesign document with my custom adjustment of the output "paper" size? I tried with kPrintActionCmdBoss but the "SavePDFAs" popups although I se
-
WEBUTIL DIALOG BOX NOT OPENING
hi all I have an issue with webutil when i am triyng to execute webutil_clientinfo.get_user_name in when button pressd triger. Below error I am getting. oracle.forms.webutil.file.FileFunctions bean not Found.WEBUTIL_FILE.FILE_SELECTION_DIALOG_INT WIL
-
Transfer iPhoto 6 from G4 to MacBook?
I have properly copied the ENTIRE iPhoto Library folder from my old PowerBook G4, and have copied it to the DESKTOP on my new MacBook. I was going to put it in the Photos folder, but there is a newer iPhoto Library there (a new snazzy icon, rather th
-
Purchased Mountain Lion via App store but it appears to be stuck in download with no activity for over half an hour and no error messages. The download bar shows the download at about 1/20th for about half an hour as well. I had what appeared to be
-
Cid: images displayed too large
I get a daily ModusMail spam quarantine digest. It has the following in its CSS: .qtrMessageImageCell width: 25px; The HTML has entries like: <TD class="qtrMessageImageCell"><img src="cid:Phishing.gif@Category"></TD> The first time a cid: image is di