Access another workspace object
I am working in a workspace "a" as a developer. Another developer is working in his workspace "b". Both workspaces are in one database. I have to access a table (which is in workspace b) from workspace "a". Can it be possible?
Hi Bill,
You can't access each others APEX objects but you can both access the same tables. The tables are database/schema specific and are not restricted to use only in APEX. In the application definition you can define the "Parse as Schema". Set that to the same schema that your colleague is working on. If you can not the other schema, you'll need to log into the APEX administration (workspace = INTERNAL) and grant yourself access to that schema.
Martin
Similar Messages
-
In my application,there is a database connection to a schema and and I have created entities and views from the available tables in that schema.According to my requirement, I need to access a table from a different schema.
How can I do that?
Please help
Regards
SKSpecify the schema prefix in the SELECT query.
SELECT * from OE.CATALOG -
How can i access all the objects of one schema from another schema
Dear All,
How can i access all the objects(Tables,Views,Triggers,Procedures,Functions,Packages etc..) and do the modifications of one schema from another schema (Without using synonyms concept).
Thanks in advance,
MahiFirst of all, synonyms only help you easy reference the object. It doesn't have any implication of object privilege.
As long as you have proper privilege on target object. You can access it with or without synonyms.
Assuming you have proper privilege of objects, you can use following command to assume schema owner.
ALTER SESSION SET CURRENT_SCHEMA = Schema_owner -
ORA-34492: Analytic workspace object cubename _STORED does not exist.
I am having issues accessing cube data from a user other than where the AW was built.
Following is what I have done in User-1:
1. Create two AW's in User-1 : AW-1 and AW-2.
2. Create all objects in these two AW's
3. AW-2 is dynamically attached on attaching AW-1 by using PERMIT startup programs. Please refer Attaching multiple AW's
4. Refreshed both AW's to load data
5. ALLCOMPILE - no errors.
6. Created some SQL views on User-1 which basically query the underlying cube views. I also have some queries using the olap_table option.
7. All my querries work fine in User-1. I can access data from AW-1 and AW-2.
However, we give access to the above SQL views through an abstract user: User-abs. In 10g, all we did was grant select privs to all the User-1.AW$ tables and also on all the sql views. This would let User-abs get data from the cubes in User-1.
I am not able to get User-abs to do the same in 11g. We encounter an error mentioning that the workspace object <cubename>_STORED does not exist. The cubename it is referring to exists in AW-2.
I granted select privs on all AW$ tables, dimension views, cube views and the abstracted sql views but the error persists.
I tried searching this forum but could not find any helpful leads. Any help will be greatly appreciated.
Thanks!
Database - 11.2.0.1
AWM - 11.2.0.2.0AI can think of two possible problems. First, you may not be properly qualifying the owner name when you refer to the object. This can be important when refering to objects owned by other schemas. For example instead of 'my_cube_stored' you would say 'user-1.aw-2!my_cube_stored'. You should also be careful about the order in which you attach the AWs. Do you want AW-2 attached first or last? Use the LAST keyword on AW ATTACH to control this.
Another possibility is that you have added additional logic to PERMIT_READ over and above the 'aw attach' comand. I was able to recreate the error with the following code in a new AW called TEST_AW in the GLOBAL schema.
DEFINE PERMIT_READ PROGRAM BOOLEAN
PROGRAM
aw attach global.global
show global.global!units_cube_stored
return true
ENDAttaching TEST_AW in RO mode as any user gives me the following error.
ORA-34492: Analytic workspace object GLOBAL.GLOBAL!UNITS_CUBE_STORED does not
exist.
ORA-06512: at "SYS.DBMS_AW", line 93
ORA-06512: at "SYS.DBMS_AW", line 122
ORA-06512: at line 1Here is the documentation for PERMIT_READ
>
PERMIT_READ
A PERMIT_READ program is a program that you can create and that Oracle OLAP checks for by name when an AW ATTACH read-only command executes. Depending on the value returned by the program, Oracle OLAP executes the code within the program after attaching the analytic workspace. Depending on the statements in the permit_read program the user is granted or denied access to specific objects or sets of object values. Within permit_read program, you can specify PERMIT commands that grant or restrict access to individual workspace objects. All of the objects referred to in a given permit_read must exist in the same analytic workspace.
>
Note, especially, the restriction in the last sentence. This means that a PERMIT_READ program in AW1, for example, cannot refer to objects in AW2. So this is why my PERMIT_READ doesn't work. The AUTOGO does not have these restrictions, but as we know from the forum post you cited, AUTOGO is broken in 11.2.0.1. You can move forward to 11.2.0.2 where AUTOGO is fixed, but there is workaround, which is to add a PERMIT_READ program to the second AW to do the work. For example, if I add this PERMIT_READ to GLOBAL and remove the 'show' command from the PERMIT_READ in TEST_AW, then everything works as expected.
DEFINE PERMIT_READ PROGRAM BOOLEAN
PROGRAM
if aw(attached 'test_aw')
then do
show global.global!units_cube_stored
doend
return true
END -
Problem with Dynamically accessing EJB Class objects in WL 7.0 SP1
I am trying to build a component which has the ability to instantiate and execute
an known EJB method on the fly.
I have managed to build the component but when I try and execute it I get a ClassNotFoundException.
I know that the EJB I am trying to invoke is deployed and available on the server,
as I can see it in the console, I also seen to have been able to get the remote
interface of the object, my problem occurs when I try and access the class object
so I can perform a create on the object and then execute my method
The code I have written is below:
private Object getRemoteObject(Context pCtx, String pJNDIName, String pHomeBean)
throws Exception {
String homeCreate = "create";
Class []homeCreateParam = { };
Object []homeCreateParamValues = {};
try {
//This call seems to work and doesn't throw an exception
Object home = pCtx.lookup(pJNDIName);
//However this call throws a java.lang.ClassNotFoundException
Class homeBean = Class.forName(pHomeBean);
Method homeCreateMethod = homeBean.getMethod(homeCreate,homeCreateParam);
return homeCreateMethod.invoke(home, homeCreateParamValues);
} catch (NamingException ne) {
logStandardErrorMessage("The client was unable to lookup the EJBHome.
Please make sure ");
logStandardErrorMessage("that you have deployed the ejb with the JNDI
name "+pJNDIName+" on the WebLogic server ");
throw ne;
} catch (Exception e) {
logStandardErrorMessage(e.toString());
throw e;
Any advice would be really appreciated, I'm fast running out of ideas, I suspect
it has something to do with the class loader but I'm not sure how to resolve it
Regards
Jo CorlessHello Joanne,
Congratulations! I'm very happy that you've managed to fix your problem. It's
always essential to understand how to package applications when deploying on BEA
WebLogic. Usually, by throwing everything into an EAR file solves just about all
the class loader problems. :-) Let us know if you have any further problems that
we can assist you with.
Best regards,
Ryan LeCompte
[email protected]
http://www.louisiana.edu/~rml7669
"Joanne Corless" <[email protected]> wrote:
>
>
I've fixed it!!!!!!!!
Thanks to everyone who gave me help!!!!
The class loader was the culprit which is what I suspected all along.
As soon
as I put the 2 jar files I was using into an EAR file the problem went
away!!!!!
Thanks again
Jo Corless
"Ryan LeCompte" <[email protected]> wrote:
Hello Joanne,
As Mr. Woollen mentioned, I also believe it's a problem with the class
loader.
You need to be careful how you arrange your EJBs, because WebLogic has
a specific
method in which it loads classes in an EAR, JAR, and WAR file(s). Please
refer
to http://dev2dev.bea.com/articles/musser.jsp for more information about
BEA WebLogic
class loading mechanisms and caveats. Also, try printing out the various
methods
that are available on the object that was returned to you via reflection.
For
example, use the getMethods() method, which returns an array of Method
objects
that you can subsequently cycle through and print out the various method
names.
This way you can discover if the class found/returned to you is indeed
the one
you intend to locate.
Hope this helps,
Ryan LeCompte
[email protected]
http://www.louisiana.edu/~rml7669
Rob Woollen <[email protected]> wrote:
I believe the issue is the home interface class for this EJB is not
available in the class loader which is doing the reflection.
If you do:
getClass().getClassLoader().loadClass(homeInterfaceClassName)
I suspect it will fail. Reflection still requires that the class be
loadable.
-- Rob
Joanne Corless wrote:
Hi Slava,
If I make my code look like you describe below I get a compliationerror telling
me that
home.getMethod() is not recognised (no such method)
If I change it slightly and use
Method homeCreateMethod =
home.getClass().getMethod(homeCreate,homeCreateParam);
The code will compile OK but when executed it still throws a NoSuchMethodException
Any ideas ?
Thanks for your help so far
Regards
Jo Corless
Your code should look like
Object home = pCtx.lookup(pJNDIName);
Method homeCreateMethod =
home.getMethod(homeCreate,homeCreateParam);
return homeCreateMethod.invoke(home, homeCreateParamValues);
Regards,
Slava Imeshev
"Joanne Corless" <[email protected]> wrote in message
news:[email protected]...
Hi Ryan,
I also wanted to mention that if you do a "header search" in this
particular
newsgroup
with the search query as "reflection", you will see many previousmessages
regarding
reflection and EJBs. I believe you could learn a lot from thedifficulties
that
others have faced and solved.I tried that and although there was a number of similar cases noneof them
actually
seem to fix my issue. Thanks for the suggestion though
Are the EJBs that you are trying to access accessible via your
system
classpath?
Try to avoid having them accessible via the main system classpath,and
only bundle
them in your appropriate EJB jar files (contained in an EAR file,for
example).Maybe I should have laid the problem out a little clearer.
I have a number of EJB's bundled up in a JAR file which is hot deployedto
the
server. Within this first JAR file is an EJB (SSB) component that
needs
to
be
able to invoke a known method on another EJB. This second EJB may
or
may
not be
within the first JAR file but it also will be hot deployed.
The component trying to invoke the method on the 2nd EJB has to
be
able to
create
an instance of the 2nd EJB without actually knowing anything bar
a
JNDI
Name which
is passed in at runtime.
I can get as far as doing the
Object home = pCtx.lookup(pJNDIName);
This returned a class with the name
"com.csc.edc.projects.allders.httppostoffice.postman.PostmanBean_mp8qy2_Home
Impl_WLStub"
My problem seems to occur when I try and invoke the create method
Method homeCreate = home.getClass().getMethod("create", new Class[0]);
My code throws a java.lang.NoSuchMethodException at this point so
I
am
unable
to progress to the next step of :
Object bean = homeCreate.invoke(home, null);
So I can return the instantiated bean back to the calling client.
Why am I getting the NoSuchMethodException, is is because I am gettinga
stub
back rather than the home interface and if so how do I get the truehome
interface
from the bean
Thanks in advance
Jo Corless -
How can I access another class in a MembershipRule's Expression
Hello,
I want to create an InstanceGroup using Module Microsoft.SystemCenter.GroupPopulator.
I need to collect all Logical Disks which contain an MS SQL DB Log File.
I would start as follows:
<DataSource ID="DS" TypeID="SC!Microsoft.SystemCenter.GroupPopulator">
<RuleId>$MPElement$</RuleId>
<GroupInstanceId>$Target/Id$</GroupInstanceId>
<MembershipRules>
<MembershipRule>
<MonitoringClass>$MPElement[Name="Windows!Microsoft.Windows.LogicalDisk"]$</MonitoringClass>
<RelationshipClass>$MPElement[Name="MSIL!Microsoft.SystemCenter.InstanceGroupContainsEntities"]$</RelationshipClass>
<Expression>
<And>
<!--
First Expression
-->
<Expression>
<SimpleExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.LogicalDevice"]/Name$</Property>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<!--
How can I access another class's properties ?
-->
<GenericProperty>$MPElement[Name="SQL!Microsoft.SQLServer.2008.DBLogFile"]/Drive$</GenericProperty>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<HostProperty>
<MonitoringClass>$MPElement[Name="Windows!Microsoft.Windows.Computer"]</MonitoringClass>
<Property>PrincipalName</Property>
</HostProperty>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<GenericProperty>$MPElement[Name="SQL!Microsoft.SQLServer.2008.DBLogFile"]/Drive$</GenericProperty>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</MembershipRule>
</MembershipRules>
</DataSource>
In the first expression you "see" my question:
I want to compare the LogicalDisk's Name Property with the DB Log File's Drive property.
But how can I access the DB Log File's Drive property in this MembershipRule ?
Furthermore LogicalDisk and DB Log File must be hosted on the same Windows Computer.
Would be great if somebody could help.
Thanks
SebastianHi Niki,
thanks for the idea, but that will not work. $Target/Id$ refers always to the group to be discovered.
On last week end I was given following idea, hope it will work:
Step 1
Collect all the DB SQL Logfile Objects and write computername (PrincipalName?) and Driveletter into a textfile, line by line. Shouldn't be a problem, PowerShell is your friend.
Step 2
Read the file from Step 1, build discovery data for each disk drive as object of class "Logical Disk (Server)",
and then discover the containment-relationships from those Logical Drive(Server) Objects to the InstanceGroup.
Perhaps I must do it for the OS-Version related Disks, because I need the target classes of the Logical Disk Freespace monitors. Some more work. "Risks": I donot know the discovery algorithm for the Logical Disk(Server) Objects, but a "deep
dive" into the MPs should help.
Thanks to all, who have read.
I will inform you about progress and success
sebastian -
Dump - Access using NULL object reference is not possible!!!
Hi,
I'm using the BCS class for sending HTM format email so i use the below code for that its working,
DATA: gr_document TYPE REF TO cl_document_bcs,
gr_document = cl_document_bcs=>create_document(
i_type = 'HTM'
i_text = t_html
i_importance = '5'
i_subject = gc_subject ).
Next task is to send the image so i'm creating an another object to the same class, below code
*Image from MIME
DATA: o_mr_api TYPE REF TO if_mr_api.
DATA is_folder TYPE boole_d.
DATA l_img1 TYPE xstring.
DATA l_img2 TYPE xstring.
DATA l_loio TYPE skwf_io.
DATA: lo_document TYPE REF TO cl_document_bcs.
IF o_mr_api IS INITIAL.
o_mr_api = cl_mime_repository_api=>if_mr_api~get_api( ).
ENDIF.
CALL METHOD o_mr_api->get
EXPORTING
i_url = '/SAP/PUBLIC/ZDEMO/tick.png'
IMPORTING
e_is_folder = is_folder
e_content = l_img1
e_loio = l_loio
EXCEPTIONS
parameter_missing = 1
error_occured = 2
not_found = 3
permission_failure = 4
OTHERS = 5.
CALL METHOD o_mr_api->get
EXPORTING
i_url = '/SAP/PUBLIC/ZDEMO/Delete.png'
IMPORTING
e_is_folder = is_folder
e_content = l_img2
e_loio = l_loio
EXCEPTIONS
parameter_missing = 1
error_occured = 2
not_found = 3
permission_failure = 4
OTHERS = 5.
*Convert XSTRING to ITAB
DATA :lt_hex1 TYPE solix_tab,
lt_hex2 TYPE solix_tab,
ls_hex LIKE LINE OF lt_hex1,
lv_img1_size TYPE sood-objlen,
lv_img2_size TYPE sood-objlen.
CLEAR : lt_hex1, lt_hex2, ls_hex, lv_img1_size, lv_img2_size.
WHILE l_img1 IS NOT INITIAL.
ls_hex-line = l_img1.
APPEND ls_hex TO lt_hex1.
SHIFT l_img1 LEFT BY 255 PLACES IN BYTE MODE.
ENDWHILE.
WHILE l_img2 IS NOT INITIAL.
ls_hex-line = l_img2.
APPEND ls_hex TO lt_hex2.
SHIFT l_img2 LEFT BY 255 PLACES IN BYTE MODE.
ENDWHILE.
*Findthe Size of the image
DESCRIBE TABLE lt_hex1 LINES lv_img1_size.
DESCRIBE TABLE lt_hex2 LINES lv_img2_size.
lv_img1_size = lv_img1_size * 255.
lv_img2_size = lv_img2_size * 255.
*Attach Images
clear: lo_document.
lo_document->add_attachment(
EXPORTING
i_attachment_type = 'png' " Document Class for Attachment
i_attachment_subject = 'img1' " Attachment Title
i_attachment_size = lv_img1_size " Size of Document Content
i_att_content_hex = lt_hex1 " Content (Binary)
lo_document->add_attachment(
EXPORTING
i_attachment_type = 'png' " Document Class for Attachment
i_attachment_subject = 'img2' " Attachment Title
i_attachment_size = lv_img2_size " Size of Document Content
i_att_content_hex = lt_hex2 " Content (Binary)
but it throws the dump " Access using NULL object reference is not possible" when i tries to access for method add_attachment...
Thanks,
SivaYes there is commit work after that, Below code
gr_document = cl_document_bcs=>create_document(
i_type = 'HTM'
i_text = t_html
i_importance = '5'
i_subject = gc_subject ).
*Image from MIME
DATA: o_mr_api TYPE REF TO if_mr_api.
DATA is_folder TYPE boole_d.
DATA l_img1 TYPE xstring.
DATA l_img2 TYPE xstring.
DATA l_loio TYPE skwf_io.
DATA: lo_document TYPE REF TO cl_document_bcs.
IF o_mr_api IS INITIAL.
o_mr_api = cl_mime_repository_api=>if_mr_api~get_api( ).
ENDIF.
CALL METHOD o_mr_api->get
EXPORTING
i_url = '/SAP/PUBLIC/ZDEMO/tick.png'
IMPORTING
e_is_folder = is_folder
e_content = l_img1
e_loio = l_loio
EXCEPTIONS
parameter_missing = 1
error_occured = 2
not_found = 3
permission_failure = 4
OTHERS = 5.
CALL METHOD o_mr_api->get
EXPORTING
i_url = '/SAP/PUBLIC/ZDEMO/Delete.png'
IMPORTING
e_is_folder = is_folder
e_content = l_img2
e_loio = l_loio
EXCEPTIONS
parameter_missing = 1
error_occured = 2
not_found = 3
permission_failure = 4
OTHERS = 5.
*Convert XSTRING to ITAB
DATA :lt_hex1 TYPE solix_tab,
lt_hex2 TYPE solix_tab,
ls_hex LIKE LINE OF lt_hex1,
lv_img1_size TYPE sood-objlen,
lv_img2_size TYPE sood-objlen.
CLEAR : lt_hex1, lt_hex2, ls_hex, lv_img1_size, lv_img2_size.
WHILE l_img1 IS NOT INITIAL.
ls_hex-line = l_img1.
APPEND ls_hex TO lt_hex1.
SHIFT l_img1 LEFT BY 255 PLACES IN BYTE MODE.
ENDWHILE.
WHILE l_img2 IS NOT INITIAL.
ls_hex-line = l_img2.
APPEND ls_hex TO lt_hex2.
SHIFT l_img2 LEFT BY 255 PLACES IN BYTE MODE.
ENDWHILE.
*Findthe Size of the image
DESCRIBE TABLE lt_hex1 LINES lv_img1_size.
DESCRIBE TABLE lt_hex2 LINES lv_img2_size.
lv_img1_size = lv_img1_size * 255.
lv_img2_size = lv_img2_size * 255.
*Attach Images
create object lo_document type cl_document_bcs.
lo_document->add_attachment(
EXPORTING
i_attachment_type = 'png' " Document Class for Attachment
i_attachment_subject = 'img1' " Attachment Title
i_attachment_size = lv_img1_size " Size of Document Content
i_att_content_hex = lt_hex1 " Content (Binary)
lo_document->add_attachment(
EXPORTING
i_attachment_type = 'png' " Document Class for Attachment
i_attachment_subject = 'img2' " Attachment Title
i_attachment_size = lv_img2_size " Size of Document Content
i_att_content_hex = lt_hex2 " Content (Binary)
"Add document to send request
CALL METHOD gr_send_request->set_document( gr_document ).
TRY.
CALL METHOD gr_send_request->SET_SEND_IMMEDIATELY
EXPORTING
I_SEND_IMMEDIATELY = 'X'.
* CATCH CX_SEND_REQ_BCS INTO BCS_EXCEPTION .
**Catch exception here
ENDTRY.
DATA: LO_SENDER TYPE REF TO IF_SENDER_BCS VALUE IS INITIAL.
TRY.
LO_SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ). "sender is the logged in user
* Set sender to send request
gr_send_request->SET_SENDER(
EXPORTING
I_SENDER = LO_SENDER ).
* CATCH CX_ADDRESS_BCS.
****Catch exception here
ENDTRY.
"Send email
CALL METHOD gr_send_request->send(
EXPORTING
i_with_error_screen = 'X'
RECEIVING
result = gv_sent_to_all ).
IF gv_sent_to_all = 'X'.
WRITE 'Email sent!'.
ENDIF.
"Commit to send email
COMMIT WORK.
"Exception handling
CATCH cx_bcs INTO gr_bcs_exception.
WRITE:
'Error!',
'Error type:',
gr_bcs_exception->error_type.
ENDTRY. -
Imlementing synchronized access to shared objects in LabVIEW OOP
Many objects in object-oriented programming have an
identity, such as a file, a front-panel object or a hardware device.
These objects cannot be modelled using present LabVOOP (LabVIEW Object Oriented Programming) objects as
LabVOOP objects gets copied as wire is branched; multiple different
wires cannot all represent a single object. This issue has been
irritating the community of LabVIEW users since the release of LabVOOP
a few months ago.
It seems that there is a huge demand for
objects with unique identity i.e. by-reference objects in LabVIEW. The
central problem why LabVOOP propably doen't have these objects is the
difficulty in implementing synchronized access to these objects from
multiple parallel threads. The problem of synchronized access can be
divided into two different separate topics. First how the
sychronization should be implemented in LabVIEW runtime engine. Second
how this synchronization mechanism should be visible to the developer.
I'd like to start this thread to discuss these two issues.
Synhronization under the hood
Traditionally
people talk about locking of an object and about get-modify-set pass
when accessing the object. Locking is traditionally done by acquiring a
mutex for an object, modifying the object and releasing the mutex so
that other threads can access the same object instance. This is how
inter-thread synchronization is traditionally done. However, besides
the mutex based locking, the computer science community has innovated
also different kinds of methods on synchronizing the access to objects.
One way to get object-level synchronization is modify the
runtime engine so that it only allows a single method of a synchronized
object to run at any time. This mechanism of syncrhonization is
implemented in programming languages like O'Haskell, which is a Haskell
variant with object orirented features.
Also different
transactional mechanisms[1,2] have been successful. In transactional
mechanisms multiple threads are allowed to access a synchronized object
simultaneously. As each method accessing an object commits their
changes, they verify that no other object has modified the object
simultaneously in a manner than would break the transaction. If such a
modification has occurred, everything is rolled back. Transactional
mechanism do not suit to every possible situation as not everything can
be rolled back. For example it's hard to roll back an action that
somehow modifies the physical world.
User experience of synchronization
How
the synchronization is generally implemented in LabVIEW shouldn't be
directly visible to the developer end-user. The developer should
understand the general concepts of synchronization to take full
advantage of it, but in general the synhronization mechanism should be
integrated directly to development environment. There should in general
be no need to acquire a mutex by calling acquire mutex node but instead
the end-user should be able to specify which data needs synhronized
access in more sophisticated way.
In the following I propose a
mechanism of integrating the synchronized access of by-ref objects to
the development environemnt of LabVIEW. The proposal is very
preliminary but I hope it breaks the ice and the community would start
innovating in how should NI implement the syncrhonization support in
the user interface of LabVIEW.
Wire level synchronization
Only
methods can access object private data members. In synchronized access
to the object, it's the methods accessing the private data members that
need to be synchronized. The private data members are accessed by
applying unbundle node to the class wire and data is written back to
the object using bundle node.
What I propose is the following.
An unbundle node could either be normal or "synchronized". A
synchronized unbundle would guarantee the access to the private data
members in synchronized manner. All data wires originating from
synchronized unbundle would be of synchronized type, in a little
similar manner as a dynamic dispatch wire is of special dynamic
dispatch type. Such a wire must evetually be connected to a bundle
node. When the wire is bundled back to the originating object, the
synchronization requirement is released.
These synchronized
wires would look somewhat different from normal wires so that the
developer instantly knows that the wire is synchronized. The developer
can branch the wire, but only one wire branch can own the synchronized
type. The developer could easily select which wire would be
syncrhonized by Ctrl+clicking the wire. Such a wire can be considered
as a combination of a data and a mutex, even though mutexes don't need
to be the underlying synchronization method. The wire just guarantees
that there is a mechanism in the runtime engine that makes sure the
access to the wire data is synchronized.
There is a need to wire
data originating from a non-synchronized wire to a synchronized wire so
that it can replace the private data member of the class. This is
accomplished with a new node similar to bundle node, that would allow
replacing the data in a syncrhonized wire with some data originating
from a non-synchronized wire.
The synchronized wire can be
connected to a front panel controls of special syncrhonized type. This
way the synchronized wire can originate from a method and allow passing
the synchronized data to the calling VI and back to another method.
This is practical for example in a situation when the developer wants
to run different analyzes to a data class but don't want to rewrite all
the existing data analysis tools as class members. So the developers
writes a syncrhonization acquiring getData method that let's the
calling VI to access the syncrhonized data. Then the developer passes
this data to an analysis VI and passes the result back to a setData
method that writes the result back to the class wire.
There
will probably be technical problems in allowing the user to connect
such a synchronized wire to all existing VIs since these VIs. Therefore
the programming model for all nodes that do not support such
synchronized wires will be branching the wire and passing the
non-synchronized wire branch to the node and then bundling the result
back to the synchronized wire.
To increase performance and
decrease unnecessary buffer copies when a syncrhonized wire is
branched, if the syncrhonized wire continues directly to the new bundle
synchronized wire node, no buffer copy is made.
Discussion
The
syncrhonized access to a by-ref LabVOOP objects can be implemented in
multiple ways by National Instruments. The synchronized access should
be divided to two different and independent parts: 1) the user
experience of synchronization and 2) the runtime engine synchronization
mechanisms. As LabVOOP objects have special properties compared to
other LabVIEW data types, optimal user experience can be gained by
designing the user experience specifically for LabVOOP objects. From
user experience point-of-view this syncrhonization mechanism may not
work for other data types. Separating object syncrhonization from
synchronization of other data types is advantageous also for other
reasons. Due to the fact that object data can only be accessed via
object methods, more advanced synchronization methods may be used with
objects than can be used with other data types. O'Haskell
synchronization implementation is an example of this. Integrating the
synchronization directly to the user interface allows NI to change the
mehcanisms under the hood, when computer science comes up with more
advanced methods. Therefore NI could begin with traditional and quite
easy mutex-based synchronization and later move to more advanced
perhaps transaction based syncrhonization methods or even combinations
of multiple different methods.
I hope this topic generates
discussion that would help NI to implement an excellent synchronization
mechanism in LabVOOP. I hope that all talented individuals in the
community participate this discussion to help NI to reach this goal. I
also hope that if you just have time, it would be great if you could
surf the computer science resources to find out what kinds of new
techniques there exists for synchronizing access to shared resources. A
Large community may find much more innovative solutions than a few engineers at NI. Let's give NI the power of open source design
Tomi MailaHello Tomi,
First, thank you for taking the time to write such a well
though-out suggestion. Are you familiar
with the “LabVIEW Object-Oriented Programming: The Decisions Behind the Design”
document? I think the reason we chose to implement a ‘by
value’ strategy, is that is more in line with the LabVIEW programming paradigm
of dataflow, and would make sense to most of our LabVIEW users.
I think your suggestion is interesting, and it does
highlight the need to think outside of the conventional LabVIEW box and look to
some of the innovative things other languages do. However, I think we all agree that
synchronization takes careful planning and extra work for the programmer. Even with an ‘ideal’ solution I see no way
around this. For LabVIEW users today,
one great way to get synchronized ‘by reference’ semantics with your objects is
to use a single-element queue to pass your object. The queue itself is passed ‘by reference’ and
is inherently synchronized! The does
have the disadvantage of adding one more small layer of complexity to your
program, but some complexity would have to be introduced in any situation. The other disadvantage with this is that it
is not always an intuitive way to implement your program and requires some
amount of LabVIEW knowledge before one would generally come across this
technique.
In any case, I appreciate the time and effort you put in to
your suggestion. Please make sure that
you submit the suggestion formally through the NI Product Suggestion Center so
that it can be reviewed by some of the decision makers here.
Thanks again,
Travis M
LabVIEW R&D
National Instruments -
Hi,
We are experiencing the following error when trying to retrieve data from the OLAP layer in our front-end:
ORA-34492: Analytic workspace object __XML_GET_FULLTOAW_NAME does not exist.
to be more specific, the following happens:
We are using the Oracle OLAP Java api's to query the analytical workspace. We create a Source object that contains the joins we want. This source is prepared and committed via the TransactionProvider class. Via the DataProvider we then create an SQLCursorManager and generate the SQL and execute it via JDBC.
We were able to execute it without problems on an XP development platform. When switching to another platform that we use, it gives the following error messages:
(platform with the error is Linux x86-64; more version info further down)
Caused by: java.sql.SQLException: ORA-34492: Analytic workspace object __XML_GET_FULLTOAW_NAME does not exist.
ORA-06512: at "SYS.OLAPIMPL_T", line 23
ORA-06512: at "SYS.OLAPIMPL_T", line 17
ORA-06512: at line 4
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:626)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:113)
at oracle.jdbc.driver.T4CStatement.execute_for_describe(T4CStatement.java:352)
at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:894)
at oracle.jdbc.driver.T4CStatement.execute_maybe_describe(T4CStatement.java:384)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:984)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1124)
Platform/version info that produces the error:
Linux x86-64
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
OLAP A patch for 10.2.0.3 is applied.
Platform where this works without problems:
Windows XP
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
Any info on resolving this issue is greatly appreciated!
Thanks,
EdHi Keith,
Yesterday I actually fully rebuilt/redeployed the AW. (I only patched our 10.2.0.3 installation with the OLAP A patch very recently.) Even the AW's tablespace was recreated, just to make sure everything was gone. Redeployment of the OLAP objects from OWB control center went without any problems.
Let me answer your questions one by one below.
1) How did you build the AW?
We use OWB. The only thing I used AWM for is to actually create the AW. Once created, I use OWB to design and deploy. The front-end developers use AWM sometimes for viewing data in the OLAP objects. (I use OWB or AWM for that.)
2) Can you connect to the AW via AWM, if so can you use the Data Viewer option to view:
a) each dimension and check you can drill up and down.
b) each cube
I have been playing around a bit with the dim's and cubes in the AWM by right-clicking and selecting view data ... (that's the data viewer option?) and encountered no problems.
3) You are using the OLAP API directly, what sort of application are you building - Java Client, JSP, Applet and are you using BI Beans?
We are building a JSP type application, but so far only servlet code is being executed as the failure occurs on issuing the query. We are not using BI BEans.
Thanks for your feedback!
grts,
Ed -
WebDynpro Abap MSS: Access via "NULL" object reference not possible
hi,
My customer send me the following link to Appraisal Documents (Manager) MSS
http://server.sap.portal:1810/sap/bc/webdynpro/sap/HAP_START_PAGE_POWL_UI_MSS/
http://a.imageshack.us/img685/5959/mss3.jpg (logon in Costumer SAP System)
http://a.imageshack.us/img225/4008/mss4.jpg (Appraisal Documents (Manager) MSS run succesful)
Link that also run by the SICF in my customer is correct.
But when I run in my SAP System see the following error
http://a.imageshack.us/img715/5355/mss1j.jpg (SCIF in my SAP System)
http://a.imageshack.us/img44/5346/mss2.jpg (SCIF - test service)
http://a.imageshack.us/img840/1677/mss2b.jpg (Error, without window logon)
<b> Access via "NULL" object reference not possible</b>
Other question is: In what part of MSS is this option? because the ESS is in Career and Jobs / Appraisals Documents
http://a.imageshack.us/img683/9900/careerjob3.jpg (Employee Self Service / Career and Jobs / Appraisals Documents)
thanks for your posts and answer
IvanHello
The most important information is (again) missing: which object reference is initial ("NULL")?
The ABAP dump will tell you.
Below I show an example how this can happen (and be avoided):
LOOP AT lt_accountings INTO ls_accounting.
lo_po_account ?= ls_accounting-accounting.
ENDLOOP.
" QUESTION: Are you sure that lo_po_account hold an instance ???
" If LO_PO_ACCOUNT is empty the following statement will give you the dump.
ls_mepoaccounting = lo_po_account->get_data( ).
" And that is how to avoid this (at least the dump. Whether your logic is still ok is another matter...)
CHECK ( lo_po_account IS BOUND ).
ls_mepoaccounting = lo_po_account->get_data( ).
Regards
Uwe -
Track the qeries that accessed a particular object during a time period
HI,
I have a list of objects on my schema and i need to track the list of sql queries by different users that accessed by object during this time period.
i haven't enabled any auditing yet.
is there any way i can get that list of queries and their schemas that accessed those particular objects during a particular time period.
Can someone guide me please.
Thanks in advance.
Philip.Too bad you don't have a version number. Oracle functionality changes from version to version and in some versions you can do this and in some you can not.
Look here for one way to accomplish the task:
http://www.psoug.org/reference/dbms_fga.html
Here for another:
http://www.psoug.org/reference/audit_vault.html
Here for another:
http://www.psoug.org/reference/dbms_logmnr.html
Consider posting more information when asking questions in the future. -
Access another list in SharePoint controldisplay template
Hi All,
I would like to know if it is possible to access another SharePoint list items in a control or item display template using Client object model or REST services. Can someone please confirm me? Thanks.
Regards,
SC Vinod
Blog: http://sharesilver.wordpress.com/Hi Mike,
I'm not asking for implementing COM or REST services in a CEWP but in the display templates of a Content search web part.
Regards,
SC Vinod
Blog: http://sharesilver.wordpress.com/ -
Error(Access via 'NULL' object reference ) in link to action
Hi,
I have a table-VBAK with "LinkToAction" is one of my column,Once i click that action,i want to call one more table-VBAP in the "TablePopin".
<b>OnAction of "LinkToAction"</b>
I called the another Table(VBAP)-"TablePopin" with the help of following code,
<u>context_element->set_attribute( name = 'SELECTED_POPIN' value = 'TABLEPOPIN' ).</u>
Now i want to fill the VBAP-Table.
So <b>OnAction of "LinkToAction"</b>.
i called the
method ONACTIONOPEN_POPIN .
DATA:
NODE_VBAK1 TYPE REF TO IF_WD_CONTEXT_NODE,
ELEM_VBAK1 TYPE REF TO IF_WD_CONTEXT_ELEMENT,
STRU_VBAK1 TYPE WD_THIS->ELEMENT_VBAK1,
wa_vbap type vbap,
itab_vbap like table of wa_vbap.
navigate from <CONTEXT> to <VBAK1> via lead selection
NODE_VBAK1 = WD_CONTEXT->GET_CHILD_NODE( NAME = 'VBAK1' ).
@TODO handle not set lead selection
IF ( NODE_VBAK1 IS INITIAL ).
ENDIF.
get element via lead selection
ELEM_VBAK1 = NODE_VBAK1->GET_ELEMENT( ).
@TODO handle not set lead selection
IF ( ELEM_VBAK1 IS INITIAL ).
ENDIF.
ELEM_VBAK1->GET_STATIC_ATTRIBUTES(
IMPORTING
STATIC_ATTRIBUTES = STRU_VBAK1 ).
if stru_vbak1 is not initial.
select * from vbap into table itab_vbap where vbeln = STRU_VBAK1-vbeln.
endif.
context_element->set_attribute( name = 'SELECTED_POPIN' value = 'TABLEPOPIN' ).
endmethod.
i set the break point and check it.once it enter into the following area of the above code,i am getting error like <b>Access via 'NULL' object reference</b>
<b>ELEM_VBAK1->GET_STATIC_ATTRIBUTES(
IMPORTING
STATIC_ATTRIBUTES = STRU_VBAK1 ).</b>
Now my problem is,i want to fill the VBAP-Table in my "TablePopin".Once i click the "LinktoAction" in my Main Table.
can any body share your ideas.
Thanks in Advance,
Regards,
Ravi.Hi Ravi,
Have you filled in the node_vbak1 with some elements? Lets say in a supply function or wddoinit etc.?
Just check that. After that, make sure you have IntializeLeadSelection property set to true for the node_vbak1.
Hope this helps.
Regards,
Neha -
Accessing another variable from another application
I was wonder how I can access another variable form another application?
For example: I want to access :P4_EMPLOYEE_NAME from app ID 104 when I am doing is from an activity in page 2 on app ID 142.
I had a search before, but I am looking for an unambiguous response.Greg - About all you can do is call the function htmldb_util.fetch_app_item(p_item => 'F104_ITEM', p_app => '104'). The application you call this function in must be sharing a session with the application from which you are fetching the item, both applications must belong to the same workspace, and the item you name in the argument must be defined as an application-level item in the fetched-from application.
Scott -
Hi Guys...
I am trying to access a shared object declared in a certain function, from another function. I am having
difficulty doing so. My code are as follows:
//Constructor code
public function EventTest()
var ET:EventTest = new EventTest();
//..Other code
doLocalSO();
private function doLocalSO()
username_so = SharedObject.getLocal("UserName", "/" );
//... Other code
Connection();
private function Connection()
rtmpGo = "rtmp://compName/projName";
nc = new NetConnection( );
nc.connect(rtmpGo, ET.doLocalSO.username_so)
I am getting the following error:
EventTest.as, Line 69 1120: Access of undefined property ET.
I am bascially trying to acccess 'username_so' in the connection function. Where am I going wrong? Hope someone can
advise. Thanks.i assume you showed snippets from two or more classes. what code is in what class?
Maybe you are looking for
-
Has anyone found the solution to this problem?
-
Cannot see printer and PCs on network
I have a G5 connected through Airport to a Netgear WGR614 v4 router which is connected in turn to a cable modem. There are also two PCs and a wireless printer (HP Officejet 7410) on the network. The PCs and printer function correctly. The G5 is able
-
I've tried a hard shut down and charging it but nothing has fixed it. Please. Help.
-
How do I migrate bookmarks from Foxfire/PC to an iMac
I need to migrate all my bookmarks from my current PC to the new iMac I purchased.
-
How to do form personalization on purchase order cancell functionality
Hi, how to make form personalization on purchase order form so that user should not cancell the PO. Please suggest. Thanks