XPath / Query for direct children
Hi there,
we're having a problem with queries like the following:
doc("dbxml:container.bdbxml/test.xml")/rootnode/child::*
We expect to get only the direct children of "<rootnode />".
Using the dbxml management tool the printed result also contains any children of the direct children of "<rootnode />". Using the C++ interface and printing out the results of XmlValue::asString the same is experienced.
Greetings,
Felix
I think you misunderstand what is happening. The child elements are being returned, but when they are output, their entire subtree is serialised. You will need to write some custom serialisation code to do what I think you want to do.
John
Similar Messages
-
Query for spesific children in a tree structure
Hi,
My data is organized in a tree structure.
I need a sql statement that returns a parent that
have a set of children corresponding to some demands.
I provide a very simplified description of my data, but it covers my problem.
Can anyone please help me write a select statement that gives me all featureids
that have a GID attribute with children GNR=123 AND BNR=456?
Regards
gv
create table attributetype( id number, name varchar2(8), parentid number );
insert into attributetype( id, name ) values ( 1, 'GIDLIST' );
insert into attributetype( id, name, parentid ) values ( 2, 'GID', 1 );
insert into attributetype( id, name, parentid ) values( 3, 'GNR', 2 );
insert into attributetype( id, name, parentid ) values ( 4, 'BNR', 2 );
create table attribute( featureid number, id number, parentid number, atttypeid number, intvalue number );
--attributes for feature1
insert into attribute( featureid, id, parentid, atttypeid ) values( 1, 1, 0, 1 );
insert into attribute( featureid, id, parentid, atttypeid ) values( 1, 2, 1, 2 );
insert into attribute( featureid, id, parentid, atttypeid, intvalue ) values( 1, 3, 2, 3, 123 );
insert into attribute( featureid, id, parentid, atttypeid, intvalue ) values( 1, 4, 2, 4, 456 );
insert into attribute( featureid, id, parentid, atttypeid ) values( 1, 5, 1, 2 );
insert into attribute( featureid, id, parentid, atttypeid, intvalue ) values( 1, 6, 5, 3, 12 );
insert into attribute( featureid, id, parentid, atttypeid, intvalue ) values( 1, 7, 5, 4, 456 );
--attributes for feature 2
insert into attribute( featureid, id, parentid, atttypeid ) values( 2, 8, 0, 1 );
insert into attribute( featureid, id, parentid, atttypeid ) values( 2, 9, 8, 2 );
insert into attribute( featureid, id, parentid, atttypeid, intvalue ) values( 2, 10, 9, 3, 678 );
insert into attribute( featureid, id, parentid, atttypeid, intvalue ) values( 2, 11, 9, 4, 456 );
insert into attribute( featureid, id, parentid, atttypeid ) values( 2, 12, 8, 2 );
insert into attribute( featureid, id, parentid, atttypeid, intvalue ) values( 2, 13, 12, 3, 876 );
insert into attribute( featureid, id, parentid, atttypeid, intvalue ) values( 2, 14, 12, 4, 456 );
commit;
column name format a15
select a.featureid featureid, lpad(' ', (level - 1) * 2) || b.name name, a.id attid, a.parentid parentid, a.intvalue
from attribute a, attributetype b
where a.atttypeid=b.id
connect by prior a.id=a.parentid
start with a.parentid=0;
FEATUREID NAME ATTID PARENTID INTVALUE
1 GIDLIST 1 0
1 GID 2 1
1 GNR 3 2 123
1 BNR 4 2 456
1 GID 5 1
1 GNR 6 5 12
1 BNR 7 5 456
2 GIDLIST 8 0
2 GID 12 8
2 GNR 13 12 876
2 BNR 14 12 456
2 GID 9 8
2 GNR 10 9 678
2 BNR 11 9 456Hi,
Thanks for providing the CREATE TABLE and INSERT statements; that helps a lot.
You want featureids that meet three criteria:
(1) there is a GID attribute
(2) the GID attribute has a GNR child with intvalue=123
(3) the GID attribute has a BNR child with intvalue=456
Since you're looking for immediate children, not distant descendants, it's easiest to do this with a non-hierarrchical query that finds one of these criteria, and does EXISTS sub-queries to test for the other two.
For example:
WITH aat AS
( -- Begin aat: join of attribute and attributetype
SELECT a.featureid
, a.id
, a.parentid
, a.intvalue
, t.name
FROM attribute a
JOIN attributetype t ON a.atttypeid = t.id
) -- End aat: join of attribute and attributetype
SELECT DISTINCT featureid
FROM aat m -- m for main
WHERE name = 'GID'
AND EXISTS ( -- Begin EXISTS sub-query for GNR=123
SELECT NULL
FROM aat
WHERE parentid = m.id
AND name = 'GNR'
AND intvalue = 123
) -- End EXISTS sub-query for GNR=123
AND EXISTS ( -- Begin EXISTS sub-query for BNR=456
SELECT NULL
FROM aat
WHERE parentid = m.id
AND name = 'BNR'
AND intvalue = 456
) -- End EXISTS sub-query for BNR=456
;Alternatively, you could do a three-way self join, and skip the EXISTS sub-queries.
If you were looking for GNR and BNR descendants, any number of levels below the same GID node, it's easy to modify the query above. Just re-write the EXISTS sub-queries to CONNECT BY queries that "START WITH parentid = m.id".
It looks like this application will have a lot of use for a view like aat, above. If you don't already have a permanent view like that, you should create one. -
XPath query must be an absolute path in BPEL2.0 or only BPEL4WS?
Hi,
The 1st version of the BPEL4WS specifies that "For XPath 1.0, the value of the query attribute MUST be an absolute locationPath (with '/' meaning the root of the document fragment representing the entire part)." (under 14.3)
But in BPEL 2.0 I cannot find this rule. I wonder if it is different in this version. Especially, can people write something like this:
//street[@name='blabla']
in the xPath query of an assign activity? or are there any important restrictions on using xPath query for a copy selection?
Please help
Thank you very muchOk, I've realised i mixed up my partitions. sda1 is with windows, sda3 is the extended one. So i changed rootnoverify(hd0,2) to rootnoverify(hd0,0)
And it shows something entirely different now. For a blink of about 0.5 seconds, it shows:
Booting 'Windows 7'
rootnoverify (hd0,0)
chainloader +1
GRUB loading stage2...
After that 0.5 seconds GRUB goes back to the "system select" screen, the countdown to the default choice goes again, and this whole process loops to eternity...
Problem solved! Frankly speaking, I can't really know why. Everything was solved after I reinstalled both systems. The only difference was that the line makeactive was commented out, not deleted... And I think it is that.
Last edited by matnik (2010-11-20 14:55:04) -
Xpath query using ANE with AIR3.9 for iOS app
we are building an app for iOS using AIR 3.9 where we have to load and parse the xml document so that we can read the images path and download the stuff on iOS device. To fix this issue we have found a solution using XCode via ANE where by using XPath Query classes such as "PerformXPathQuery", "PerformXMLXPathQuery", "xmlReadMemory" etc. The code is running well when build on simulator itself on mac machine. But when we are packaging the ANE with AIR 3.9, it gives us the error which says that:-
Error occurred while packaging the application:
Undefined symbols for architecture armv7:
"_xmlReadMemory", referenced from:
_PerformXMLXPathQuery in libnet.example.download.a(ExampleLib.o)
ld: symbol(s) not found for architecture armv7
Compilation failed while executing : ld64
I have tried linking binary with libraries like "libxml2.dylib", "libxml2.2.dylib" and libz.dylib + added the libXML header files to the header search path in the build properties, but got no help.
our AIR 3.9 platform xml looks like:-
<platform xmlns="http://ns.adobe.com/air/extension/3.9">
<sdkVersion>4.0.0</sdkVersion>
<linkerOptions>
<option>-ios_version_min 4.2</option>
<option>-framework UIKit</option>
<option>-framework Foundation</option>
<option>-framework CoreText</option>
</linkerOptions>
</platform>
can anyone suggest where we are going wrong!
thanks in advanceFound the solution, i was missing the framework related to xPath library in platform.xml
follow the instuctions from the below link:-
http://forums.adobe.com/thread/1037904
thanks adobe team -
Templates query have no children elements
same query for meetings returns correctly number of childer,
but for templates I get xml that only have
<node href="/accounts/bkf/my-account-id/templates"
type="cr:folder">
<name>templates</name>
<properties>
<property name="cr:owner" type="string">
<value>...</value>
</property>
<property name="jcr:created" type="date">
<value>2009-02-17T23:33:22.804-05:00</value>
</property>
</properties>
</node>
url:
https://na2.connectnow.acrobat.com//app/content/accounts/bkf/my-account-id/templates/?gak= lalala
but same url for meetings:
https://na2.connectnow.acrobat.com//app/content/accounts/bkf/my-account-id/meetings/?gak=l alala
returns all children along with container folder metadata
etc ..
so Java code throws NPE when trying to iterate through
templates :
Element children = (Element)
repository.getElementsByTagName("children").item(0);
//children is null
NodeList nodes = children.getElementsByTagName("node");
error:
error listing templates
java.lang.NullPointerException
at AFCS$AccountManager.listItems(AFCS.java:290)
at AFCS$AccountManager.listTemplates(AFCS.java:343)
at AFCS.main(AFCS.java:668)you are correct.
all the other scripts are fine when no <children> tag
is present, but the Java version chokes. I'll fix it for next
version (and I wish I used XPath or a better XML parser for this
but I tried to limit the dependencies from external jars where
possible)
thanks for reporting the problem. -
XPath query rewrite and insertChildXML (10g2): Help?
Hi all,
I have a registered schema for a <log> document. The schema defines an element /log/logData and under that there, /log/logData/data having maxOccurs="unbounded". So the form of documents is
<log>
<logData>
<data>a</data>
<data>b</data>
<data>c</data>
</logData>
</log>
In the schema definition I have enabled "storeArrayAsVArray='true'". The <data> elements are stored in a nested table. Every type is stored object-relationally.
To an instance documen, I add <data> elements so:
UPDATE log SET object_value = insertChildXML(object_value, 'log/logData', 'data', '<data>foo</data>') WHERE existsNode ('/log[@uid="foo"]')
The call succeeds but the problem is that I need to make this call thousands of times. Initiallly the call might take 100 ms, but after a few hundred inserts inserting a single element takes over a second, and the time keeps increasing.
I believe at least part of the problem is that XPath query rewrites are not working for this call.
Following Chapter 6 of Oracle XML DB Developer's Guide, to debug the problem I have switched on
ALTER SESSION SET EVENTS '19021 trace name context forever, level 1';
and then every invocation causes:
ORA-19022: XML XPath functions are disabled
indicating that Oracle could not rewrite the query. Then I set
ALTER SESSION SET EVENTS '19027 TRACE NAME CONTEXT FOREVER, LEVEL 8192'
to obtain a trace file. Here is a portion of that trace:
*** 2005-10-30 16:54:44.984
*** ACTION NAME:() 2005-10-30 16:54:44.968
*** MODULE NAME:(SQL*Plus) 2005-10-30 16:54:44.968
*** SERVICE NAME:(SYS$USERS) 2005-10-30 16:54:44.968
*** SESSION ID:(137.38364) 2005-10-30 16:54:44.968
NO REWRITE
Reason ==> xseq:not optuop
NO REWRITE
Reason ==> xseq:not optuop
NO REWRITE
Reason ==> not SQLX operand
NO REWRITE
Reason ==> non sqlx expression input
NO REWRITE
Reason ==> non rewritable sqlx input
NO REWRITE
(the rest of the file repeats these lines)
I have no idea how to interpet that! Can anyone out there offer some insight/assistance?
Thanks if you can,
HughBelow is a complete example script. Cannot seem to get rewrite for even this simple case. By that I mean, executing both of the SELECT statements near the end yield the ORA-19022, and that executing the insertChildXML takes progressively longer to execute the more child elements there are.
Any pointers appreciated!
Hugh
set echo on
ALTER SESSION SET EVENTS '19021 trace name context forever, level 1';
ALTER SESSION SET EVENTS '19027 TRACE NAME CONTEXT FOREVER, LEVEL 8192';
exec dbms_xmlschema.deleteSchema('http://hughw.net/foo', dbms_xmlschema.DELETE_CASCADE_FORCE);
begin
dbms_xmlschema.registerSchema('http://hughw.net/foo', XMLType('<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://hughw.net/foo" xmlns="http://hughw.net/foo" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xdb="http://xmlns.oracle.com/xdb" xdb:storeVarrayAsTable="true">
<xs:element name="root" xdb:defaultTable="ROOT" >
<xs:complexType xdb:SQLType="ROOT_T">
<xs:sequence>
<!-- could use out of line storage -->
<!-- commented out
<xs:element name="child" type="childType" minOccurs="0" maxOccurs="unbounded"
xdb:SQLName="CHILDREN"
xdb:SQLInline="false" xdb:defaultTable="CHILD"
/>
-->
<!-- use nested table -->
<xs:element name="child" type="childType" minOccurs="0" maxOccurs="unbounded"
xdb:SQLName="CHILDREN"
xdb:SQLCollType="CHILD_V"
/>
</xs:sequence>
<xs:attribute name="uid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="childType" xdb:SQLType="CHILD_T">
<xs:simpleContent>
<xs:extension base="xs:string"/>
</xs:simpleContent>
</xs:complexType>
</xs:schema>'));
end;
insert into root values( XMLType('<?xml version="1.0" encoding="UTF-8"?>
<root uid="1" xmlns="http://hughw.net/foo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://hughw.net/foo http://hughw.net/foo">
<child>a</child>
<child>b</child>
<child>c</child>
</root>'));
CREATE INDEX ROOT_INDEX ON ROOT (extractValue(object_value,'/root/@uid'));
select insertChildXML(object_value, '/root', 'child', '<child>x</child>>') FROM root;
explain plan for select insertChildXML(object_value, '/root', 'child', '<child>x</child>>') FROM root;
SELECT PLAN_TABLE_OUTPUT FROM table(DBMS_XPLAN.display('plan_table', NULL, 'serial'));
select insertChildXML(object_value, '/root', 'child', '<child>x</child>>') FROM root
WHERE existsNode(object_value, '/root[@uid="1"]') = 1;
explain plan for select insertChildXML(object_value, '/root', 'child', '<child>x</child>>') FROM root
WHERE existsNode(object_value, '/root[@uid="1"]') = 1;
SELECT PLAN_TABLE_OUTPUT FROM table(DBMS_XPLAN.display('plan_table', NULL, 'serial')); -
Select query for fields in selection screen
SELECT * FROM hrus_d2
INTO TABLE ta_list
WHERE us_name IN subs_obj
and begdat in date_ran.
and enddat in date_ran
How can I rewrite the above query for high and low ranges of date_ran field in condition? It doesn't allow in operator with date_ran-low.Can u please help me outHi
rahul
SELECT *
FROM hrus_d2
INTO TABLE ta_list
WHERE us_name IN subs_obj
and begdat = date_ran-low
and enddat = date_ran -high.
u can write like this or i amnot getting why u r expliciting this date u can give directly as
SELECT *
FROM hrus_d2
INTO TABLE ta_list
WHERE us_name IN subs_obj
date in date_ran.
plzz reward if i am usefull to u in any way.. plzz dont forget to reward -
Copying Variables in BPEL using XPath Query
Hi,
I am new to BPEL and i want to know if it is possible to copy data from one variable to another using XPath Query in the <from> <to> tags, when the two variables are of different message types.
I am trying to create a sample BPEL that would receive a String through the receive tag tied to one partner link (WSDl) and then invoke a different webservice using the <invoke> tag tied to another partner link (WSDL) by passing the received variable.
I have pasted the BPEL File and the two WSDl files involved.
My Issue is that when I send a soap request to the BPEL, it is passed as null to the webservice invoked.
Probably because the copy tags don't work.
Please help.
BPEL File
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<process name="HelloWorld2"
targetNamespace="http://ode/bpel/unit-test"
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:tns="http://ode/bpel/unit-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:test="http://ode/bpel/unit-test.wsdl"
xmlns:ns0="http://poc.com"
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
<import location="HelloWorld2.wsdl"
namespace="http://ode/bpel/unit-test.wsdl"
importType="http://schemas.xmlsoap.org/wsdl/" />
<import location="sayHello.wsdl"
namespace="http://poc.com"
importType="http://schemas.xmlsoap.org/wsdl/" />
<partnerLinks>
<partnerLink name="helloPartnerLink"
partnerLinkType="test:HelloPartnerLinkType"
myRole="me" />
<partnerLink name="sayHelloBPELPL"
partnerLinkType="ns0:sayHelloPLT"
partnerRole="you" initializePartnerRole="yes" />
</partnerLinks>
<variables>
<variable name="myVar" messageType="test:HelloMessage"/>
<variable name="tmpVar" messageType="test:HelloMessage"/>
<variable name="inVar" messageType="ns0:sayHelloRequest"/>
<variable name="outVar" messageType="ns0:sayHelloResponse"/>
</variables>
<sequence>
<receive
name="start"
partnerLink="helloPartnerLink"
portType="test:HelloPortType"
operation="hello"
variable="myVar"
createInstance="yes"/>
<assign name="ass1">
<copy>
<from variable = "myVar" part = "TestPart"/>
<to variable = "inVar"
part = "parameters"
query= "/sayHello/ns0:param0" />
</copy>
</assign>
<invoke partnerLink = "sayHelloBPELPL"
portType = "ns0:sayHelloPortType"
inputVariable = "inVar"
operation = "sayHello"
outputVariable = "outVar">
</invoke>
<assign name="ass2">
<copy>
<from variable = "outVar"
part = "parameters"
query= "/sayHelloResponse/ns0:return" />
<to variable = "tmpVar" part="TestPart"/>
</copy>
</assign>
<reply name="end"
partnerLink="helloPartnerLink"
portType="test:HelloPortType"
operation="hello"
variable="tmpVar"/>
</sequence>
</process>
WSDL File1
<?xml version="1.0" encoding="utf-8" ?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<wsdl:definitions
targetNamespace="http://ode/bpel/unit-test.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://ode/bpel/unit-test.wsdl"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
xmlns:ns0="http://poc.com">
<wsdl:message name="HelloMessage">
<wsdl:part name="TestPart" type="xsd:string"/>
</wsdl:message>
<wsdl:portType name="HelloPortType">
<wsdl:operation name="hello">
<wsdl:input message="tns:HelloMessage" name="TestIn"/>
<wsdl:output message="tns:HelloMessage" name="TestOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="hello">
<soap:operation soapAction="" style="rpc"/>
<wsdl:input>
<soap:body
namespace="http://ode/bpel/unit-test.wsdl"
use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body
namespace="http://ode/bpel/unit-test.wsdl"
use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloService">
<wsdl:port name="HelloPort" binding="tns:HelloSoapBinding">
<soap:address location="http://localhost:8082/ode/processes/helloWorld"/>
</wsdl:port>
</wsdl:service>
<plnk:partnerLinkType name="HelloPartnerLinkType">
<plnk:role name="me" portType="tns:HelloPortType"/>
<plnk:role name="you" portType="tns:HelloPortType"/>
</plnk:partnerLinkType>
</wsdl:definitions>
WSDL File 2
<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:ns0="http://poc.com"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:ns1="http://org.apache.axis2/xsd"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
targetNamespace="http://poc.com">
<wsdl:types>
<xs:schema xmlns:ns="http://poc.com" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://poc.com">
<xs:element name="sayHello">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="param0" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sayHelloResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="sayHelloRequest">
<wsdl:part name="parameters" element="ns0:sayHello" />
</wsdl:message>
<wsdl:message name="sayHelloResponse">
<wsdl:part name="parameters" element="ns0:sayHelloResponse" />
</wsdl:message>
<wsdl:portType name="sayHelloPortType">
<wsdl:operation name="sayHello">
<wsdl:input message="ns0:sayHelloRequest" wsaw:Action="urn:sayHello" />
<wsdl:output message="ns0:sayHelloResponse" wsaw:Action="urn:sayHelloResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="sayHelloSOAP11Binding" type="ns0:sayHelloPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="sayHello">
<soap:operation soapAction="urn:sayHello" 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="sayHello">
<wsdl:port name="sayHelloPort" binding="ns0:sayHelloSOAP11Binding">
<soap:address location="http://localhost:8082/ode/processes/sayHello" />
</wsdl:port>
</wsdl:service>
<plnk:partnerLinkType name="sayHelloPLT">
<plnk:role name="me" portType="ns0:sayHelloPortType"/>
<plnk:role name="you" portType="ns0:sayHelloPortType"/>
</plnk:partnerLinkType>
</wsdl:definitions>Hi,
Yes, it very much is possible.
Xpath query provides a lot many data type conversion functions(string to int, string to date etc), which can be used in copying variables.
thanks
Saurabh -
Question/issue regarding querying for uncommited objects in Toplink...
Hi, was hoping to get some insight into this problem we are encoutering
We have this scenario were we are creating a folder hierarchy (using Toplink)
1. a parent folder is created
2. child elements are created (in the same transaction as step 1),
3. we need to lookup the parent folder and assign it as the parent
of these child elements
4. end the transaction and commit all data
In our system we control access to objects by appending a filter to the selection criteria, so we end up with SQL like this example
(The t2 stuff is the authorization lookup part of the query.) ;
SELECT t0.ID, t0.CLASS_NAME, t0.DESCRIPTION, t0.EDITABLE,
t0.DATE_MODIFIED, t0.DATE_CREATED,
t0.MODIFIED_BY, t0.ACL_ID, t0.NAME, t0.CREATED_BY,
t0.TYPE_ID, t0.WKSP_ID, t1.ID, t1.LINK_SRC_PATH,
t1.ABSOLUTE_PATH, t1.MIME_TYPE, t1.FSIZE,
t1.CONTENT_PATH, t1.PARENT_ID
FROM XDOOBJECT t0, ALL_OBJECT_PRIVILEGES t2,
ARCHIVEOBJECT t1
WHERE ((((t1.ABSOLUTE_PATH = '/favorites/twatson2')
AND ((t1.ID = t2.xdoobject_id)
AND ((t2.user_id = 'twatson2')
AND (bitand(t2.privilege, 2) = 2))))
AND (t1.ID = t0.ID))
AND (t0.CLASS_NAME = 'oracle.xdo.server.repository.model.Archivable'))
When creating new objects we also create the authorization lookup record (which is inserted into a different table.) I can see all the objects are registered in the UOW identity map.
Basically, the issue is that this scenario all occurs in a single transaction and when querying for the newly created parent folder, if the authorization filter is appended to the query, the parent is not found. If I remove the authorization filter then the parent is found correctly. Or if I break this up into separate transactions and commit after each insert, then the parent is found correctly.
I use the conformResultsInUnitOfWork attribute on the queries.
This is related to an earlier thread I have in this discussion forum;
Nested UnitOfWork and reading newly created objects...
Thanks for any help you can provide,
-TimHi Doug, we add the authorization filter directly in the application code as the query is getting set up.
Here are some code examples; 1) the first is the code to create new object in the system, followed by 2) the code to create a new authorization lookup record (which also uses the first code to do the actual Toplink insert), then 3) an example of a read query where the authorization filter is appended to the Expression and after that 4) several helper methods.
I hope this is of some use as it's difficult to show the complete flow in a simple example.
1)
// create new object example
public Object DataAccess.createObject(....
Object result = null;
boolean inTx = true;
UnitOfWork uow = null;
try
SessionContext sc = mScm.getCurrentSessionContext();
uow = TLTransactionManager.getActiveTransaction(sc.getUserId());
if (uow == null)
Session session = TLSessionFactory.getSession();
uow = session.acquireUnitOfWork();
inTx = false;
Object oclone = (Object) uow.registerObject(object);
uow.assignSequenceNumbers();
if (oclone instanceof BaseObject)
BaseObject boclone = (BaseObject)oclone;
Date now = new Date();
boclone.setCreated(now);
boclone.setModified(now);
boclone.setModifiedBy(sc.getUserId());
boclone.setCreatedBy(sc.getUserId());
uow.printRegisteredObjects();
uow.validateObjectSpace();
if (inTx == false) uow.commit();
//just temp, see above
if (true == authorizer.requiresCheck(oclone))
authorizer.grantPrivilege(oclone);
result = oclone;
2)
// Authorizer.grantPrivilege method
public void grantPrivilege(Object object) throws DataAccessException
if (requiresCheck(object) == false)
throw new DataAccessException(
"Object does not implement Securable interface.");
Securable so = (Securable)object;
ModulePrivilege[] privs = so.getDefinedPrivileges();
BigInteger pmask = new BigInteger("0");
for (int i = 0; i < privs.length; i++)
BigInteger pv = PrivilegeManagerFactory.getPrivilegeValue(privs);
pmask = pmask.add(pv);
SessionContext sc = mScm.getCurrentSessionContext();
// the authorization lookup record
ObjectUserPrivilege oup = new ObjectUserPrivilege();
oup.setAclId(so.getAclId());
oup.setPrivileges(pmask);
oup.setUserId(sc.getUserId());
oup.setXdoObjectId(so.getId());
try
// this recurses back to the code snippet from above
mDataAccess.createObject(oup, this);
catch (DataAccessException dae) {
Object[] args = {dae.getClass().toString(), dae.getMessage()};
logger.severe(MessageFormat.format(EXCEPTION_MESSAGE, args));
throw new DataAccessException("Failed to grant object privilege.", dae);
3)
// example Query code
Object object = null;
ExpressionBuilder eb = new ExpressionBuilder();
Expression exp = eb.get(queryKeys[0]).equal(keyValues[0]);
for (int i = 1; i < queryKeys.length; i++)
exp = exp.and(eb.get(queryKeys[i]).equal(keyValues[i]));
// check if need to add authorization filter
if (authorizer.requiresCheck(domainClass) == true)
// this is where the authorization filter is appended to query
exp = exp.and(appendReadFilter());
ReadObjectQuery query = new ReadObjectQuery(domainClass, exp);
SessionContext sc = mScm.getCurrentSessionContext();
if (TLTransactionManager.isInTransaction(sc.getUserId()))
// part of a larger transaction scenario
query.conformResultsInUnitOfWork();
else
// not part of a transaction
query.refreshIdentityMapResult();
query.cascadePrivateParts();
Session session = getSession();
object = session.executeQuery(query);
4)
// builds the authorzation filter
private Expression appendReadFilter()
ExpressionBuilder eb = new ExpressionBuilder();
Expression exp1 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("xdoobject_id");
Expression exp2 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("user_id");
Expression exp3 = eb.getTable("ALL_OBJECT_PRIVILEGES").getField("privilege");
Vector args = new Vector();
args.add(READ_PRIVILEGE_VALUE);
Expression exp4 =
exp3.getFunctionWithArguments("bitand",args).equal(READ_PRIVILEGE_VALUE);
SessionContext sc = mScm.getCurrentSessionContext();
return eb.get("ID").equal(exp1).and(exp2.equal(sc.getUserId()).and(exp4));
// helper to get Toplink Session
private Session getSession() throws DataAccessException
SessionContext sc = mScm.getCurrentSessionContext();
Session session = TLTransactionManager.getActiveTransaction(sc.getUserId());
if (session == null)
session = TLSessionFactory.getSession();
return session;
// method of TLTransactionManager, provides easy access to TLSession
// which handles Toplink Sessions and is a singleton
public static UnitOfWork getActiveTransaction(String userId)
throws DataAccessException
TLSession tls = TLSession.getInstance();
return tls.getTransaction(userId);
// the TLSession method, returns the active transaction (UOW)
// or null if none
public UnitOfWork getTransaction(String uid) {
UnitOfWork uow = null;
UowWrapper uw = (UowWrapper)mTransactions.get(uid);
if (uw != null) {
uow = uw.getUow();
return uow;
Thanks!
-Tim -
Retrieve xml attribute value of nth xml node using xpath query
I have an xml with following stucture...
<xml>
<header>
<DocumentReference OrderId="order001">
<DocumentReference OrderId="order002">
<DocumentReference OrderId="order003">
I have to loop through this xml and retrieve the orderId values inside Biztalk orchestration.
In the expression shape, I get the count of 'DocumentReference' nodes using an xpath query and then
Added a loopshape to make sure it loops thru all nodes
Loop condition: n<=nodeCount (where n is an integer variable, n=0 to begin with, incremented by 1 thru each loop, nodeCount is # of DocumentReference nodes)
I try retrieve to the orderId in the following expression shape using the below xpath query
xpathQuery = System.String.Format("//*[local-name()='OrderReference'][{0}]/@orderID)",n);
sOrderId = xpath(MsgSingleInvoice,xpathQuery);
And I get the following exception:
Inner exception: '//*[local-name()='OrderReference'][1]/@orderID)' has an invalid token.
Exception type: XPathException
Appreciate any help! thanks!Thanks for the quick response. I got rid of it.
And I see a different error:
Inner exception: Specified cast is not valid. Exception type: InvalidCastException
Source: Microsoft.XLANGs.Engine
Target Site: System.Object XPathLoad(Microsoft.XLANGs.Core.Part, System.String, System.Type)
Since variable 'n' is of integer type, I suspected it and changed it to n.ToString() and tested again and still see the same error. -
Variable Picker generates invalid XPath query
This one seems to be a bug:
When declaring a variable of type "element" (not "messageType") and accessing the variable with the Variable Picker from within the assign assistant, i.e. the following line ist generated:
bpws:getVariableData("testVar","","/tns:TaskMgrTestCaseRequest/tns:input")
The BPEL process can be validated and deployed without an error.
At runtime the following exception is generated:
XPath expression failed to execute.
Error while processing xpath expression, the expression is "bpws:getVariableData("testVar", "", "/tns:TaskMgrTestCaseRequest/tns:input")", the reason is XPath expression failed to execute.
Error while processing xpath expression, the expression is "", the reason is Unexpected ''.
Please verify the xpath query.
Please verify the xpath query.
When working with variables of type messageType, there is no problem. (So I declared a messageType to each element type ...)
WolfgangThanks for the heads up. We will try to kill this bug in the 0.97 release. -Edwin
-
Query for tasks assigned individually to all members of a user group
I am looking for a query that will allow me to create a list view that will show all tasks assigned to the current user (in the Assigned To field), as well as to other members of the user group that the current user belongs to. The scenario is that we want
a student to see tasks assigned to them, as well as to other students in the class. Each class is its own user group. I have seen a lot of examples where the filter shows tasks assigned to the current user and the current users group - that is NOT what I am
looking for.
For example - Todd (me), Fred and John are members of one user group. When I look at this class view, I should see tasks assigned to me, as well as those assigned directly to Fred and John.
Does anyone have a CAML query for this? I am thinking it would need to include the SPGroup element. Thanks!Hi William,
I've tried this, but it isn't working for me. Should I chnge the Smart Group, to an ordinary one?
Thanks -
Retrieve underlying SQL query for deski report via java SDK in BOXIR2
Hi all,
I am trying to retrieve underlying SQL queries of a deski report in BOXIR2. However I find the error as
oDataProvider = oDocumentInstance.getDataProviders().getItem(i1);
System.out.print(oDataProvider.getName());
oSQLDataProvider = (SQLDataProvider) oDataProvider;
oSQLContainer_root = oSQLDataProvider.getSQLContainer();
But "This feature is not supported for desktop Intelligence " exception has occured.
I am running the same query for Webi, and I did not find any issue . After several time spending in google, it appears to me that this code is supported by webi only. But "This feature is not supported for desktop Intelligence " exception has occured.
Please help me to find out the solution in java SDK. If its not supported by Java SDK, then could you please provide me any workaround , e.g. any macro . Any help !!
Regards,
Nita
Edited by: Nita Prasad on Aug 11, 2009 11:20 AM
Edited by: Nita Prasad on Aug 11, 2009 11:25 AMHi Fritz,
I am not getting the way.. how to open the deski report programmatically. I am writing the code in this way:
Dim oInfoObjects1 As CrystalInfoStoreLib.InfoObjects
Set oInfoObjects1 = oInfoStore.Query("SELECT * FROM CI_INFOOBJECTS WHERE SI_NAME='" & oInfoObject.Title & "' AND SI_ID='" & oInfoObject.Id & "' order by SI_NAME")
Dim oInfoObject1 As CrystalInfoStoreLib.InfoObject
Dim UserCount1 As Integer
UserCount1 = oInfoObjects1.ResultCount
MsgBox "SELECT * FROM CI_INFOOBJECTS WHERE SI_NAME=' " & oInfoObject.Title & " ' AND SI_ID=' " & oInfoObject.Id & " ' order by SI_NAME"
MsgBox " Total number of Deski reports are : [" & UserCount1 & "]", vbOKOnly
Dim j As Integer
For j = 1 To UserCount1
Set oInfoObject1 = oInfoObjects1.Item(i)
sFile_ReportList = StrConv(oInfoObject1.Title, vbLowerCase) & ".rep"
sFile_Output = "D:\TraceWrite1\ " & StrConv(oInfoObject1.Id & "_" & oInfoObject1.Title, vbLowerCase) & ".txt"
sFile_ReportListTemp = StrConv(oInfoObject1.Files.Item(j), vbLowerCase)
MsgBox "[" & sFile_ReportList & "]", vbOKOnly
If Dir(sFile_ReportList) = "" Then
MsgBox "The text file [" & sFile_ReportList & "] for the DeskI documents does not exist!" & vbCrLf & "Aborting process."
Exit Sub
End If
I am getting the error on line ... If Dir(sFile_ReportList) = "" Then... The code is not able to locate the deski report path.
Is this the correct way to get a deski report information? Please let me know, If I am going in the right direction.
Edited by: Nita Prasad on Aug 18, 2009 3:47 PM -
What is p1 for direct path read temp wait event in 11gr1
hi friends,
When i run this query in my database(11gr1) i get this
SELECT P1,P1TEXT FROM V$ACTIVE_SESSION_HISTORY WHERE event='direct path write temp' and sql_id='2sd3hryy2baav';
P1 P1TEXT
1260 file number
As per the documentation given on the link
http://docs.oracle.com/cd/B28359_01/server.111/b28320/waitevents002.htm#
when i run the query for file#
select *
from v$datafile
where file# = file#;
i get no rows returned.
Can someone please tell me what is this value 1266??Hemant K Chitale wrote:
P1 as FILE_ID is actually the value of DB_FILES (an instance parameter) + the temp file id. Check if DB_FILES is set to 1250. In that case P1 of 1260 would mean the 10th TEMPFILE.
How did you came to know that P1.V$ACTIVE_SESSION_HISTORY = DB_FILES + the temp file id ?
Because when I checked in the docs it is saying :
P1 NUMBER First additional parameter
http://docs.oracle.com/cd/E11882_01/server.112/e25513/dynviews_1007.htm#REFRN30299
Kindly share with us the link, is possible please.
Regards
Girish Sharma -
hi
I got two tables
BOOK (DDC,TITLE,ISBN,AUTH_NAME)
AUTHOR (DDC,AUTH_NAME)
Table "BOOK" contains about 50000 records but its
AUTH_NAME column contains NULL for all 50000 records.
I want insert AUTH_NAME column's values from AUTHOR table
into BOOK's AUTH_NAME column where DDC number match.
Please write me the query for it.
thankshi,
AUTH_NAME column contains NULL for all 50000 records.
I want insert AUTH_NAME column's values from AUTHOR table
into BOOK's AUTH_NAME column where DDC number match.As u mentioned above auth_name contains null value, so instead of updatring u can directly insert the records from book table.
And what are you updating as it contains no data(i.e null value)
Regards
Jafar
Maybe you are looking for
-
Mail, iCal Server and iChat server will not work over VPN
I have an Airport Extreme Base Station at the office running the network. Behind it sits a Mac Mini Snow Leopard server running 10.6.3. The ports necessary for Mail, iCal Server and iChat work fine through that external connection. I can also connect
-
Is there a way to see resources usage like a planning to see of a room is used ?
Hello, I would like to know if there is a way to see a global view of room's usage ? Thanks Tom
-
I took out a trial of Fireworks CS6, but for some reason a .dll file has been deleted off my computer. How can I download the program again?
-
Assuming as a user if i change a field of an employee (in this example) PSA, then immediately a mail(notification) is triggered and informs the concerned person about the field change in the respective Infotype. The data element mapped is for Ex: PA0
-
Captivate 8 Failure Captions Glossary Widget
I've run into some apparent conflicts between the Glossary Widget and click box and button failure captions in Captivate 8. The course uses the Captivate Glossary widget, which is placed on Screen 1 and set to "not visible", unless the user reveals i