DataMapping Error - Service Architecture Leveraging Tuxedo (SALT)

Hello my friends,
So far I've imported several external webservices... that's why I'm getting troubles right now.
An old webservice "A" has a parameter called "result" which is a boolean element.
Now I'm trying to import another webservice "B". It has a parameter called "result" which is an int element.
SALT documentation says: "The wsdlcvt generated FML32 field table files are always used by GWWS. you must make sure the field name is unique at the system level. If two or more fields are associated with the same field name, change the field name". So, I changed name "result" to "ws_return" for webservice "B" in FML32 field table and tuxedo service metadata repository definition.
If I call Fprint32() to print output fml buffer information I get this in standard out file:
SDP: printing output buffer...
(FLDID(197774461))      Client
(FLDID(197774462))      GWWS_CAT:1037: DataMapping Error: Tag 'result' is unexpected.If I call Fget32() directly to retrieve the result from the output fml buffer I get this in tuxedo's log file:
173920.otro-testing!FastnetServer.29511.1.0: gtrid x0 x4a318378 x2046c: fnSDPG: FML32 Buffer get failed. Fget32 unsuccessful for ws_return. LIBFML_CAT:4: ERROR: Field not presentAny suggestions?
---
By the way, I'm working on Tuxedo 10 / SALT 2.0 

Hi,
It looks something is not synchronized. The output buffer is a system buffer returned by GWWS indicating the error. I just follow a similar way,
1. My element name is called message in WSDL
2. I change to ws_message in the FML32 definitions
3. Regenerate FML32 header files and recompile the Tuxedo client
4. Change definition in the input file of TMMETADATA with,
param=sayHello
access=in
paramschema=XSD_E:sayHello#http://example.org
type=fml32
(
param=ws_message
=====================================
access=in
paramschema=XSD_E:message#http://example.org
type=string
primetype=string
)
And using tmloadrepos to updathe the meta data repository.
5. Using wsloadcf to re-generate the SALTCONFIG file
6. Call the web services by Tuxedo client, it works well.
Do you follow above steps?
Regards,
Wayne

Related

XML parser validation and startup class

When I try to run run jCOM bridge like a startup class, I have the following error:
*** Loading bridge; Please wait ***
*** Bridge loaded successfully ***
Looking for BEA WebLogic 6.1 license...
Warning: validation was turned on but an org.xml.sax.ErrorHandler was not
set, which is probably not what is desired. Parser will use a default
ErrorHandler to print the first 10 errors. Please call
the 'setErrorHandler' method to fix this.
Error: URI=file:d:/bea61sp1/registry.xml Line=3: Element type "bea-product-infor
mation" is not declared in the dtd or schema.
Error: URI=file:d:/bea61sp1/registry.xml Line=4: Element type "host" is not decl
ared in the dtd or schema.
Error: URI=file:d:/bea61sp1/registry.xml Line=5: Element type "product" is not
d
eclared in the dtd or schema.
Error: URI=file:d:/bea61sp1/registry.xml Line=6: Element type "release" is not
d
eclared in the dtd or schema.
Error: URI=file:d:/bea61sp1/registry.xml Line=7: Element type "component" is not
declared in the dtd or schema.
Error: URI=file:d:/bea61sp1/registry.xml Line=8: Element type "component" is not
declared in the dtd or schema.
BEA WebLogic 6.1 license found...
It seems that the XML validation of the license file falls in error because I
don't use the right XML parser.
Could you tell me which is the right XML parser to use when I launch the jCOM
bridge launches ?
Besides, is it possible to give a parser class to the bridge class with properties,
like with JAXP via option -D.... in the line command ?
Thanks.
Richard

Problem to access an element (during runtime testing)

Hi,
I'm trying to test my process and when I will access a element of my xml, a nullpointer exception is throw. I know that this exception was throw because I try to access a element that not exist. But I don't know why the element doesn't be "there", because I put some logMessage before and the element and the node was printed, when I put the logMessage to print the node that contain the element, the log print empty.
Obs: I just verify the wsdl and the schema.
Ex:
test.xml
________________________________________________
<aa>
<bb>
<cc>
</cc>
</bb>
</aa>
________________________________________________
logMessage (aa)
RESULT:
<bb>
<cc>
</cc>
</bb>
logMessage (aa.bb)
RESULT: "the result is empty"
Someone can help me ? 
ahhh.. more one information, I'm trying to access by the web service component (Catalog Component -> Web Service) 
Hi,
I found the error, the problem was into the input xml file, the name of the element was not correct (case sensitive).

Set Process Options  with Studio 10.3.1 : 'java.lang.IllegalStateException'

Hello,
I am creating a "Set Process Options" activity like in the demo "Expense Reimbursement" of Studio 10.3.1.
When storing the options, I get this error :
The task could not be successfully executed.
Reason: 'java.lang.IllegalStateException: The component must be invoked on a server-side method.'.
Causé(e) par: The component must be invoked on a server-side method.
fuego.lang.ComponentExecutionException: The task could not be successfully executed.
Reason: 'java.lang.IllegalStateException: The component must be invoked on a server-side method.'.
     at fuego.xobject.runtime.components.XObjectInputImpl$1.commit(XObjectInputImpl.java:98)
     at fuego.web.execution.InteractiveInvocation.finish(InteractiveInvocation.java:116)
etc...
------
The error seems to be caused by Fuego.Server.storePropertyFor since I don't get the last "logMessage".
I created objects, methods, and screenflow similar to those in the demo.
Comparing with the log generated by the demo, the difference is :
demo :
ProcessOptions.commitOptions : xml :<xobject.BusinessComponents.ProcessOptions xmlns="http://bea.com/albpm/DynamicXml/version/2.0">
(etc...)
Process read unlock: '/ExpenseReimbursement#Default-1.0' [HasWriteLock=false, ReadLockers=1]
Execution Servlet action type:REDIRECT
ExecutionDispatcher.actionId: REDIRECT
Executor.execId: 10000
Executor.getForwardComponent: fuego.xobject.runtime.components.XObjectHtmlRuntimeController
etc...
mine :
i don't get the "Process read unlock" message and I get :
Executor.execId: 0
Is there any parameter to configure in the engine preferences to make it work ?
or what did I forget in the code ?
What could I do to fix that ?
Thanks !
------
Here is the last code lines arround the error :
logMessage("OptionsEtRéférentiels.enregistrerOptions : nomApplication :"+nomApplication);
if (nomApplication == null) {
     nomApplication = "TPV1";
}
logMessage("OptionsEtRéférentiels.enregistrerOptions : nomApplication :"+nomApplication);
String xml = DynamicXml.createXmlTextFor(this);
logMessage("OptionsEtRéférentiels.enregistrerOptions : xml :"+xml);
Fuego.Server.storePropertyFor(application: nomApplication, name: "OptionsXML", value: xml);
logMessage("OptionsEtRéférentiels.enregistrerOptions : enregistré"); 
Hi,
I think it might be something simple to fix.
Open the Expense Reimbursement project again. Open either of the two methods in the Catalog's BusinessComponents.ProcessOptions that store and retrieve the Fuego.Server properties.
On the right side (to the right of the Variables tab), open the Properties tab. Note that both of these methods have their "Server Side Method" properties set to "Yes".
Make sure that your BPM Object's method's Server Side Method" property is set to "Yes" and I think you should be Okie Dokie.
Dan 
simply that indeed !
thanks.

Can I change the HTTP status codes and messages, by OSB?

I am creating a REST service - with POST method - OSB JSON messages.According to the logic of the proxy we send an error code and a message associated with this codigo.Lo I want is to send these two fields to the consumer.For example:                  << HTTP / 1.1  9996 User not existThese codes (9996) and associate (User does not exist) message, the client defined arbitrarily..-For the code, if achieved show with the following code in the inbound:          Insert 1:               Expression - <http: http-response-code> 9996 </ http: http-response-code>               Location - as last child of               XPath - ./ctx:transport/ctx:response               In Variable - inbound.-Y to the message try this:          Insert 2:               Expression - <tp: response-message> User does not exist </ tp: response-message>               Location - after               XPath - ./ctx:transport/ctx:response/ctx:response-code               In Variable - inbound     And when tested in SoapUI, this gets me:            << HTTP / 1.1 9996 UnknownIn conclusion not recognizing me the <tp: response-message> to insert him in the "inbound".I was looking for information and I think the word Unknown shows me that the 9996 value does not belong to the HTTP status codes.I would like to explain why this happens, and if possible code and send a message defined by the consumer.Thank you.

"Home Grown" Dependency Parser -- Please Help!!

I created a parser that generates the following output:
.
<dependency type='Uses'
subtype='Include'>
<target name='strict.txt'
type='file'/>
<status value='Certain'/>
</dependency>
<dependency type='Provides'
subtype='Principal'>
<target name='TEST.PL'
type='PRIMARY_ACCESS_FILE'/>
<status value='Certain'/>
</dependency>
.
When I run it through the command like tool I get the following error: "Invalid XML. Line 14 : Column 1 : XML-0146: (Error) Unexpected text in content of Element 'parsed_object', expected elements '[dependency, to_parse]'.
.
I tried to use -keepxml, but I can't find where the output goes!!
.
Any help you can send my way would be MUCH appreciated 
FYI - We're using Designer 9i (9.0.2) 
Michael,
The xml should appear in a temp directory when you use -keepxml.
ie.
c:\Documents and Settings\dbrown.ukp11111\Local Settings\Temp\da77xxxxxx.xml
(obscure windows directory!)
Let me know how you are doing and the steps you have taken.
David Brown
SCM Product Manager
I'm doing another full seach of my C:\ for xml files. We'll see what I can get out of that. When I create a spool file from command line tool, it defaults to c:\temp, but the xml doesn't go there. Is there a default xml file name I can search for?
The steps I've take are:
1) Created a java prog to generate the XML following the "rules" from the on-line help.
2) I have a bat file that calls the java program and I registered the bat in the pareser mapping file.
3) From the command like tool:
REPCMD>GLOBAL SHARED WORKAREA>>\> da parse_test\mti.pl -keepxml -pa
Fetching parse_test mapping details.. done
Synchronizing parse_test\mti.pl with C:\MTI\pare_test
mti.pl -- not modified
0 file(s) synchronized
0 file(s) synchronized from 1 folder(s)
0 bytes synchronized in 0.125 seconds
Searching for matching objects to analyze in container \parse_test >>
Analyzing File - \parse_test\mti.pl ...Dependencies analyzed successfully.
Finished Parsing
Importing dependency information into repository...
Invalid XML. Line 14 : Column 1 : XML-0146: (Error) Unexpected text in content of Element 'parsed_object', expected elements '[dependency, to_parse]'.
Error : CDR-14053 : An illegal operation has occurred that has led to an
unexpected error
Cause : An unexpected error has occurred leading to the termination of this
command. This may be due to invalid or corrupted data or an error in
code
Action: Retry the command and if the error persists contact your Oracle
Repository support representative with a note of the events that led
to this error
1 object(s) matched criteria
0 object(s) successfully analyzed
Also, I'm using designer 9.0.2.80 on XP. 
Here's the output from my java program:
<dependency type='Uses' subtype='Include'>
<target name='strict_test.pl'
type='file'/>
<status value='Certain'/>
</dependency>
<dependency type='Provides' subtype='Principal'>
<target name='C:\MTI\PARSE_TEST\MTI.PL'
type='PRIMARY_ACCESS_FILE'/>
<status value='Certain'/>
</dependency>
Michael,
The parser framework requires a return code of 0. I suspect your bat file does not do this.
I produced a parser to spot the 'link' in .html files:-
I added the following to the iamappings file
.html => perl d:\dbrown\link_parser.pl               # just spots the links in HTML
The link_parser.pl looks like:-
# David Brown
# Jan 03
# This is a Perl program that implements an
# parser to detect links in an HTML file.
# For any given file or stdin, it delivers
# the html link file dependencies
# - my first dip into perl
# Needs a new dependency type of 'link'
use strict;
my $full_filename = shift;
local *INPUT;
if (defined $full_filename)
{
# If we are passed a filename on the command line,
# open the file for reading
open INPUT, $full_filename
or die;
}
else
{ 
# If we are not passed a filename, we should read
# from STDIN
INPUT = STDIN;
}while (<INPUT>)
{ 
# Match href "..."
if (/\<link.*href\=+[\"]([^\>\"]+)/)
{   
# Output the dependency type, in this case the fact
# that the C file uses these includes
# $1 will be the included file
#print "$1\n";
print "<dependency type='Uses'\n";
print " subtype='Link'>\n";
print " <target name='$1'\n";
print " type='file'/>\n";
print " <status value='Certain'/>\n";
print "</dependency>\n";
}
}
# The analysis tool is looking for a successful return
exit(0);
BTW I am not a perl programmer.. I also added a new subtype called 'Link'
regards,
David
Thanks for the info. Looks like the missing 0 return code was one of my problems. No I'm getting:
CDR-06016 "IO Problem"
Any ideas? 
Michael,
A similar bug was reported but fixed in 9.0.2.77.0. (I have been using the latest version.)
The workaround is to call a batch file that then runs the perl sample_parser.pl.
the .bat file should contain the following two lines
.
#echo off
perl c:\sample_parser.pl
David

Categories

Resources