Action BC Class Functionality
Please help on below two scenarios
Can you please help with your ideas/expertise around stopping Siebel OOTB functionality for the below scenario?
1) As per vanilla functionality in Action BC, when status is updated to 'Done', Actual End Date field (TODO_ACTL_END_DT) gets updated with time stamp. This is class functionality.
We have a requirement, where when status is changed to 'Done', an error message must pop up requesting the user to fill the 'Actual End Date' field.
To avoid this OOTB behavior, we have written a browser script to throw an alert message using SWEAlert and we are returning CancelOperation, hence OOTB behavior is being bypassed and it doesn’t populate Actual End Date with timestamp.
2) Another OOTB functionality is, when Actual End Date is populated, system automatically sets status to 'Done'. We are unable to control this behavior of not populating Status to Done when Actual End Date is filled by the user. Once system populates the status to Done, we are populating status to the old value in the script itself, so when the user gets back control, he would see the old status value.
Once the user fills the 'Actual End Date' field and changes the status to 'Done', system should create another activity (as per our requirement).
Currently, the issue we are facing is, system is not behaving as expected when Status is changed to 'Done' or when Actual End Date is being populated. System is not behaving consistently.
Request your help in understanding if OOTB class functionality with Status=Done and Actual End Date can be tweaked or not.
Regards
Bhaskara
+91-7702577769
Hi Vicas,
Can you please provide me the Active Calls/Events info from the dump?
Best regards,
Maggie
Edited by: Maggie Su on May 19, 2010 7:09 AM
Similar Messages
-
How to run a class function on the click event ?
Hi Tecs,
i want tht when someone click on some paricular location on the form, then the class function must be called with some parameter, when someone click on some other location, the function should be called with different parameters.
How this can be done , plz help.
Thnx in advance.Almost every tag supports onclick .. For example h:panelGrid and even h:form.
JSF<h:panelGrid onclick="document.getElementById('formId:hiddenActionId').click(); return false;">
<h:form id="formId">
<h:commandButton id="hiddenActionId" value="action" actionListener="#{myBean.action}" style="display: none;">
<f:attribute name="param1" value="value1" />
<f:attribute name="param2" value="value2" />
</h:commandButton>
</h:form>
</h:panelGrid>MyBeanpublic void action(ActionEvent event) {
String param1 = (String) event.getComponent().getAttributes().get("param1"); // returns "value1"
String param2 = (String) event.getComponent().getAttributes().get("param2"); // returns "value2"
// do your thing
}[EDIT]You really cannot avoid JavaScript. Heck, JSF itself also generates a heap of JavaScript ;)
Message was edited by:
BalusC -
I need a mechanism to expose action script class reference to java script
I need a mechanism to expose action script class reference to java script
Adobe, I think, are quite happy leaving the StageWebView as a highly efficient and low-level component accessing native functionality, so I wouldn't hold my breath on them extending it.
That said, I believe somebody did implement an ANE that gives much more access and, according to the docs, does allow Javascript access.
See UIWebView as per this thread; http://forums.adobe.com/message/4832821#4832821
http://darkredz.com/ios-uiwebview-and-videoplayer-native-extension-for-air-mobile/
G -
Creating a action script class for a flex component
Hi,
I am new to flex.
I have designed a flex component into that I have 4 action script function. I have to write all those function in a separate action script class.
Can anyone tell me how to do that?
Thanks,
TusharI'm not sure I understand the question.
Alex Harui
Flex SDK Developer
Adobe Systems Inc.
Blog: http://blogs.adobe.com/aharui -
PLEASE help..class function not found..
I am writing a simple email validation and I get a TON of errors.
1) is Class function not found. on - function validateEmail();
2) and 11 Undefined variable or class name: document .
The code is listed below -
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
<%
function validateEmail();
if (document.forms[0].EMAIL_ADDRESS.value.length != 0)
if ( (document.forms[0].EMAIL_ADDRESS.value.indexOf("@") == -1) ||
(document.forms[0].EMAIL_ADDRESS.value.charAt(0) == ".") ||
(document.forms[0].EMAIL_ADDRESS.value.charAt(0) == "@") ||
(document.forms[0].EMAIL_ADDRESS.value.length < 6) ||
(document.forms[0].EMAIL_ADDRESS.value.indexOf(".") == -1) ||
(document.forms[0].EMAIL_ADDRESS.charAt(document.forms[0].EMAIL_ADDRESS.value.indexOf("@")+1) == ".") ||
(document.forms[0].EMAIL_ADDRESS.value.charAt(document.forms[0].EMAIL_ADDRESS.value.indexOf("@")-1) == ".") ||
(document.forms[0].EMAIL_ADDRESS.value.charAt(0) == ' ') )
alert ("Please enter valid email address");
document.forms[0].EMAIL_ADDRESS.focus();
document.forms[0].EMAIL_ADDRESS.select();
return false;
else
return true;
%>
</head>
-- lots of input fields with the last being -
<input type="text" name=EMAIL_ADDRESS onBlur="validateEmail();"></td>
????When I remove tags <% %> all of the function ends up in html and thus on my page.
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
<%
function validateEmail();
if (document.forms[0].EMAIL_ADDRESS.value.length != 0)
if ( (document.forms[0].EMAIL_ADDRESS.value.indexOf("@") == -1) ||
(document.forms[0].EMAIL_ADDRESS.value.charAt(0) == ".") ||
(document.forms[0].EMAIL_ADDRESS.value.charAt(0) == "@") ||
(document.forms[0].EMAIL_ADDRESS.value.length < 6) ||
(document.forms[0].EMAIL_ADDRESS.value.indexOf(".") == -1) ||
(document.forms[0].EMAIL_ADDRESS.charAt(document.forms[0].EMAIL_ADDRESS.value.indexOf("@")+1) == ".") ||
(document.forms[0].EMAIL_ADDRESS.value.charAt(document.forms[0].EMAIL_ADDRESS.value.indexOf("@")-1) == ".") ||
(document.forms[0].EMAIL_ADDRESS.value.charAt(0) == ' ') )
alert ("Please enter valid email address");
document.forms[0].EMAIL_ADDRESS.focus();
document.forms[0].EMAIL_ADDRESS.select();
return false;
else
return true;
%>
</head>
<body bgcolor="powderblue">
<Form Name="My Form" Action=userInfoInsert.jsp Method=Post>
<table border="0" width="100%">
<tr>
<td width="100%">
<table border="0" width="100%">
<tr>
<td width="41%">First Name <input type="text" name=FIRST_NAME ></td>
<td width="59%">Last Name
<input type="text" name=LAST_NAME ></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="100%">Address
<input type="text" name=Address ></td>
</tr>
<tr>
<td width="100%">Address
<input type="text" name=Address ></td>
</tr>
<tr>
<td width="100%">
<table border="0" width="100%">
<tr>
<td width="32%">City
<input type="text" name=CITY size=10></td>
<td width="18%">State
<input type="text" name=STATE size=5></td>
<td width="50%">Zip Code
<input type="text" name=ZIP_CODE size=10 ></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="100%">Phone #
<input type="text" name=PHONE size="15" ></td>
</tr>
<tr>
<td width="100%">SSN
<input type="text" name=SSN size="17" ></td>
</tr>
<tr>
<td width="100%">
<table border="0" width="100%">
<tr>
<td width="41%">Hint Question <input type="text" name=FIRST_NAME ></td>
<td width="59%">Hint Answer <input type="text" name=LAST_NAME ></td>
</tr>
</table>
</tr>
<tr>
<td width="100%">User Name <input type="text" name=USER_NAME ></td>
</tr>
<tr>
<td width="100%">Password <input type="text" name=PASSWORD ></td>
</tr>
<tr>
<td width="100%">Re-Password <input type="text" name=RE_PASSWORD ></td>
</tr>
<tr>
<td width="100%">Email Address
<input type="text" name=EMAIL_ADDRESS onBlur="validateEmail();"></td>
</tr>
</table>
<INPUT type=Submit Value=Submit>
</form>
</body>
</html> -
Help with SMTP class function with authentication
My server is no longer supporting the php mail() functionality. I need to use SMTP class function with authentication in my php code and they suggested this to replace it: http://www.yrhostsupport.com/index.php?/Knowledgebase/Article/View/101/2/smtp-class-functi on-with-authentication-in-php-code
So I tried it, but can't get it to work. This is my test form:
<form method="post" action="forms/sendmail-test2.php" onsubmit="return checkEmail(this);">
<script type="text/javascript" language="JavaScript">
</script>
<fieldset><legend>Info</legend>
<label> Name </label>
<input type="text"
name="name" size="30" maxlength="40"/><br />
<label> <span class="redText">*</span> Email </label>
<input name="email" type="text" size="30" maxlength="40"/>
<br />
<label><span class="redText">*</span> Message </label>
<textarea cols="40" rows="5" name="message" type="text" /></textarea><br />
</fieldset>
<input type="reset" value="Reset" />
<input type=submit value="Submit Form" />
</fieldset>
</form>
This is sendmail-test2.php where the form goes. It won't send unless I comment out the first 10 lines.
<?php
include('Mail.php');
//$to = "[email protected]";
//$name = $_REQUEST['name'] ;
//$email = $_REQUEST['email'] ;
//$message = $_REQUEST['name'] ;
//$headers = "From: $email";
//$subject = " price quote";
//$fields = array();
//$fields{"name"} = "Name";
//$fields{"email"} = "Email";
//$fields{"message"} = "Message";
$recipients = '[email protected]'; //CHANGE
$headers['From'] = '[email protected]'; //CHANGE
$headers['To'] = '[email protected]'; //CHANGE
$headers['Subject'] = 'Test message';
$body = 'Test message';
// Define SMTP Parameters
$params['host'] = 'levy.dnsbox25.com';
$params['port'] = '25';
$params['auth'] = 'PLAIN';
$params['username'] = '[email protected]'; //CHANGE
$params['password'] = 'xxxxxx'; //CHANGE
/* The following option enables SMTP debugging and will print the SMTP
conversation to the page, it will only help with authentication issues. */
$params['debug'] = 'true';
// Create the mail object using the Mail::factory method
$mail_object =& Mail::factory('smtp', $params);
// Print the parameters you are using to the page
foreach ($params as $p){
echo "$p<br />";
// Send the message
$mail_object->send($recipients, $headers, $body);
?>
It used to work fine when I used
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
But they said I can't use it any more. I'm good with HTML and CSS but I don't know much about php. Thanks for any help integrating a from into this new code!Thanks, bregent. I changed it to this and it sends, but nothing shows up in the body except "Test message". How would I "insert the form fields' 'email' and 'name' and 'message' in the body"?
<?php
include('Mail.php');
$to = "[email protected]";
$name = $_REQUEST['name'] ;
$email = $_REQUEST['email'] ;
$message = $_REQUEST['name'] ;
//$headers = "From: $email";
$subject = " price quote";
$fields = array();
$fields{"name"} = "Name";
$fields{"email"} = "Email";
$fields{"message"} = "Message";
$recipients = '[email protected]'; //CHANGE
$headers['From'] = '[email protected]'; //CHANGE
$headers['To'] = '[email protected]'; //CHANGE
$headers['Subject'] = 'Test message';
$body = 'Test message';
$fields = array();
$fields{"name"} = "Name";
$fields{"email"} = "Email";
$fields{"message"} = "Message";
// Define SMTP Parameters
$params['host'] = 'levy.dnsbox25.com';
$params['port'] = '25';
$params['auth'] = 'PLAIN';
$params['username'] = '[email protected]'; //CHANGE
$params['password'] = xxx'; //CHANGE
/* The following option enables SMTP debugging and will print the SMTP
conversation to the page, it will only help with authentication issues. */
$params['debug'] = 'true';
// Create the mail object using the Mail::factory method
$mail_object =& Mail::factory('smtp', $params);
// Print the parameters you are using to the page
foreach ($params as $p){
echo "$p<br />";
// Send the message
$mail_object->send($recipients, $headers, $body);
?> -
How to remove the rule or class function in CS5
i need to know how to remove the rule or class function in CS5 at the bottom of the screen there are two options for formating HTML and Css when i click the HTML it only allows me to change the bold or italics or link something but when i click CSS it allows me to format how i want the paragraph aligned and the text size and font when i click on lets say changing the font size a box comes up asking me to name a rule so it applies it to everything else i type i want to know how to stop tht like edit everything on my own and if i use CS5 here will it be compatible with CS4 or CS3 at my skool plzz help ive been frustrated with this
If I use CS5 here will it be compatible with CS4 or CS3 at my skool plzz help ive been frustrated with this
Code is code. It doesn't matter which product you use.
i need to know how to remove the rule or class function in CS5
You can't. DW encourages you to use good coding methods, which means using CSS classes and to keep content (HTML) separate from styles (CSS). For example, if you change font-size on p tags like so:
p {font-size: 38px}
Every paragraph will have 38px sized text.
If you want to apply a special style to just a portion of your text, you must define a CSS class name like so:
.foo {
font-size: 38px;
color: red;
HTML:
<p>This is normal paragraph text <span class="foo"> And this is very big and red.</span></p>
This is normal paragraph text And this is very big and red.
Nancy O.
Alt-Web Design & Publishing
Web | Graphics | Print | Media Specialists
http://alt-web.com/
http://twitter.com/altweb
Message was edited by: Nancy O. -- unfortunately, this forum doesn't support Raw HTML with inline styles. You'll need to paste my code examples into your DW page to see the effect. -
How to set the classpath and path from the jsp to call java class function
Hi Exprets,
I have a requirement to call a java class function which returns a hashmap object from the jsp. The java class in present in one jar file and that jar file is location somewhere in unix path. So the requirement is to set the classpath for that jar file and then create the object of the java class and then call the function.
If any one know how to achieve it, please reply as soon as possible.
thanks in advance,
swapna soni.It is never advisable to store large data sets in the session. But it will depend on a lot of factors:
1. How costly is the query retrieving the data from the database?
If it's a complex query with lots of joins and stuff, then it will be better to store it in the session as processing the query each time will take a lot of time and will decrease performance. On the other hand if the query is simple then it's advisable not to store it in the session, and fetch it each time.
2. Are there chances for the data to become stale within a session?
In this case storing the data is session will mean holding the stale data till the user session lasts which is not right.
3. How many data sets does the session already holds?
If there are large no. of data sets already present in the session, then it's strictly not advisable to store the data in the session.
4. Does the server employ some kind of caching mechanism?
Using session cache can definitely improve performance.
You will have to figure out, what is the best way analyzing all the factors and which would be best in the situation. As per my knowledge, session is the only place where session specific data can be stored.
Also, another thing, if the data set retrieved is some kind of data to be displayed in reports, then it would be better to use a pagination query, which will retrieve only the specific no. of rows at a time. A navigation provided in the UI will retrieve the next/previous data set to display.
Thanks,
Shakti -
Loading Variables in a Class Function
I am having problems loading variables from an external text
file inside of a class function. The text file has been created
properly, and the code that I use in the class is as follows:
_root.createEmptyMovieClip("texRules", -100);
loadVariables("texRules.txt", _root.texRules);
m_Rules = _root.texRules.rules;
I create an empty movie clip on the root frame named
texRules, load the variables into that movie clip with the next
line and then set my member string value equal to the text file
variable named rules. When I run the program, I get an undefined
for my m_Rules.
Here is my texRules.txt:
rules=THESE ARE THE TEXAS HOLD'EM RULES.
Any ideas as to what I am doing incorrectly?I've opted to use the LoadVars instead of creating an empty
movie clip and loading the variables there. Here is my new code.
public function setRules():Void
var rulesLoader:LoadVars = new LoadVars();
rulesLoader.onLoad = function (success:Boolean):Void
if (success)
trace(rulesLoader.rules);
this.m_Rules = rulesLoader.rules;
else
trace( "Unable to load external file.");
rulesLoader.load("texRules.txt");
Here is where I define my properties of my class:
class TexHoldem extends Game
//Class member properties
//Private Properties
private var m_Rules:String;
private var m_Target:MovieClip;
Here is my constructor:
public function TexHoldem(target)
this.m_Target = target;
super("Texas No Limit Hold'Em", 0, 1);
setRules();
The setRules function works fine, the only problem now is
that I can't save the variables once the onLoad function goes out
of scope. I've thought of modifying it so that it returns a type,
but that seems difficult. The two easiest solutions I see is to
create an empty text field that holds the string or find a way to
get the rulesLoader.rules outside of the onLoad scope. Any
suggestions now? Sorry to change the problem on you. -
Static Class Function vs. Instance Variables
I'm making a Wheel class to spin the wheels on some toy
trains as they move back and forth.
Each wheel on the train is an instance of the Wheel class and
there are several of them.
I thought it would be great to just have a static class
function to tell all the Wheels to start turning:
Wheel.go();
The Wheel class keeps a static array of all of its instances
so I thought I would just loop through all of those instances and
issue the wheelInstance.roll() method.
So far it all works. But I was planning to use a setInterval
to call the roll() method and each instance has its own rollID
property that I would like to assign the setInterval ID to. Here is
the problem.
Since the rollID is an instance property I can't access them
from a static class function. Is there any way to do this?
Currently I"m just using an onEnterFrame which doesn't require me
to use the instance properties.Technically yes, realistically for this class no.A
class will probably take several hundred bytes at
least to load, with no data of your own. So adding4
bytes for a int is less than 1% of the total size.
And if you are loading millions of differentclasses
then you should rethink your design.If you don't instantiate the class when you reference
a static variable why would you consume memory for the
class other than the variable itself? I don't
understand what you are talking about with the
"millions of different classes", it's not germane to
the question. Bottom line, referencing a static
variable more than once will save memory.Using a class, static or by instance, requires that the class be loaded. A loaded class creates, at the very least, an instance of java.lang.Class. Any static members of the class are in addition to the storage space needed for the instance of java.lang.Class and for any internal storage needed by the JVM in addition to that.
Thus if one has a static data member when the class is used in any way, the static data member takes storage space. However a member (non-static) does not take storage space.
Of course the meta data for the member could take as much space as the static member so the point could be moot. Is that what you were referring to? -
Any ideas why this would generate an internal error - referring to a static class function in that class constructor's parameter signature?
Test case (on 11.2.0.2) as follows:
SQL> create or replace type TMyObject is object(
2 id integer,
3 name varchar2(30),
4
5 static function DefaultID return integer,
6 static function DefaultName return varchar2,
7
8 constructor function TMyObject(
9 objID integer default TMyObject.DefaultID(), objName varchar2 default TMyObject.DefaultName()
10 )return self as result
11 );
12 /
Type created.
SQL>
SQL> create or replace type body TMyObject is
2
3 static function DefaultID return integer is
4 begin
5 return( 0 );
6 end;
7
8 static function DefaultName return varchar2 is
9 begin
10 return( 'foo' );
11 end;
12
13 constructor function TMyObject(
14 objID integer default TMyObject.DefaultID(), objName varchar2 default TMyObject.DefaultName()
15 )return self as result is
16 begin
17 self.id := objId;
18 self.name := objName;
19 return;
20 end;
21
22 end;
23 /
Type body created.
SQL>
SQL> declare
2 obj TMyObject;
3 begin
4 obj := new TMyObject();
5 end;
6 /
declare
ERROR at line 1:
ORA-06550: line 0, column 0:
PLS-00801: internal error [phd_get_defn:D_S_ED:LHS]If the static class functions are removed from the constructor and applied instead inside the constructor body, it works without error. Likewise you can call the constructor with the static class functions as parameters, without an internal error resulting.
SQL> create or replace type TMyObject is object(
2 id integer,
3 name varchar2(30),
4
5 static function DefaultID return integer,
6 static function DefaultName return varchar2,
7
8 constructor function TMyObject(
9 objID integer default null, objName varchar2 default null
10 )return self as result
11 );
12 /
Type created.
SQL>
SQL> create or replace type body TMyObject is
2
3 static function DefaultID return integer is
4 begin
5 return( 0 );
6 end;
7
8 static function DefaultName return varchar2 is
9 begin
10 return( 'foo' );
11 end;
12
13 constructor function TMyObject(
14 objID integer default null, objName varchar2 default null
15 )return self as result is
16 begin
17 self.id := nvl( objId, TMyObject.DefaultID() );
18 self.name := nvl( objName, TMyObject.DefaultName() );
19 return;
20 end;
21
22 end;
23 /
Type body created.
SQL>
SQL> declare
2 obj TMyObject;
3 begin
4 obj := new TMyObject();
5 end;
6 /
PL/SQL procedure successfully completed.
SQL>
SQL> declare
2 obj TMyObject;
3 begin
4 obj := new TMyObject(
5 objID => TMyObject.DefaultID(),
6 objName => TMyObject.DefaultName()
7 );
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> Had a quick look on support.oracle.com and did not turn up any specific notes dealing with the use of static class functions in the parameter signature of the constructor. Known issue? Any other workaround besides the one above?Hi,
there is a bug: "Bug 8470406: OBJECT INSTANCE CREATION FAILS WITH ERROR PLS-00801 IN 11GR1", it shows the behaviour in 11g but not in 10.2. It gives exactly the symptoms you also see, move it to the body and it works. But there is no solution/patch given.
Herald ten Dam
http://htendam.wordpress.com -
Hey,
I am trying to access another class function. I have 2 Classes and my main menu features are in my Main Class and I want to call that function from my Level Class
What is a good idea to approach this, some how I need to import it in a way but I don't know how I could do that.
Thanks,
McbainGames11Fixed it myself
Answer:
public static var instance:Main;
public function Main()
instance = this;
And I called a function from Main Class in my Level Class using:
Main.instance.function(); -
Instantiation order: package , class , function
hello;
I have a document class, booger.as:
package
trace( "package " );
import flash.display.Sprite;
public class booger extends Sprite
trace( "class " );
public function booger ()
{ trace( "function " );
I would expect the firing order to be:
package
class
function
but the output says otherwise:
class
package
function
any thoughts?
thanks
dsdsdsdsdSweet! Thanks. I am not used to creating an instance of a
class since my background is from mostly VBA programming. I had the
import statement, but not the variable creating an instance of my
timer class. I kept trying to simply call the function by using its
name in the click event of a button. It all makes sense now. -
Experts,
I have a button called 'Go' in JSP.
1. When I click on the button, how can I capture the events?
2. After clicking on the event, I need to call the Java class to perform some backend activity. Pls guide me how?
3. After this, goto next page called result.jsp.
I've gone thro, "Development and Extension Guide u2013 SAP E-Commerce 7.0", but I dont understand how to intergrate the JSP & actions.
Please advise with steps & code..Appreciate your help..
BMHi Bharathi,
If you can open JSP file code in text editor then you can see what JavaScript function is called when you click Go.
Suppose you do not know JSP file name on which Go button is then call your application by below URL with parameter to display JSP File name.
http://<server>:<port>/b2b/b2b/init.do?showmodulename=true
Suppose your go button is on xyz.jsp file and your Go button call submitXYZform() JavaScript function. If submitXYZform() javascript function not define in the file xyz.jsp then try to find out in included Javascript file in xyz.jsp
If java script function just submit the form then check <form> element in xyz.jsp file.
Suppose you use below form.
<form action="<isa:webappsURL name="b2b/xyzformAction.do"/>"
id="form_positions"
name="form_positions"
method="post">
Go to config.xml file and try to find action as below
<action path="/b2b/xyzformAction" type="com.sap.isa.isacore.action.order.xyzformAction">
<forward name="success" path="/b2b/result.do"/>
</action>
If you want to add some custom code then you have to extend standard action class xyzformAction to Z_xyzformAction and update config.xml file
<!--<action path="/b2b/xyzformAction" type="com.sap.isa.isacore.action.order.xyzformAction">
<forward name="success" path="/b2b/result.do"/>
</action>-->
<action path="/b2b/xyzformAction" type="com.sap.isa.isacore.action.orderZ_.xyzformAction">
<forward name="success" path="/b2b/result.do"/>
</action>
As you have mentioned that you want to perform backend activity then you have to follow below step.
1. Create Backend Interface
2. Create Backend Object which Implement Backend Interface created in Step 1. Here you will use JCO API to call RFC, Set import parameter and get value and set value in Java varialbe from Export parameter
3. Add your backend Object class in "backend-config.xml file
4 Create Business Object to access Back end object
5 Create Business Object Manager to manage Business Object created in Step 4
6 Update "bom-config.xml" file for Business Object Manager created in Step 5
7 Use Busines Object in Action class or in JSP page to access data from Backend
After going through above step read Dev and Ext. Guide or Dev and Ext. Tutorial you will understand how to do it.
I hope this information will help you.
Regards.
eCommerce Developer -
BPEL 11g fault policy action java class not sending email
Hi All,
I am trying to attach fault policy to my bpel process. The fault conditions are working fine but the email part from the action class is not able to send email. The code execute properly , i can't see any error message in the log but I cant access the email in my inbox.
I am able to send email from using email bpel activity and also test work flow notification from em console.
I have used both the java options for sending email like javax.mail and oracle.sdp.messaging .
JAVA CODE FOR EMAIL javax.mail
public String handleFault(IFaultRecoveryContext iFaultRecoveryContext){
//Print Fault Meta Data to Console
System.out.println("****************Fault Metadata********************************");
System.out.println("Fault policy id: " + iFaultRecoveryContext.getPolicyId());
System.out.println("Fault type: " + iFaultRecoveryContext.getType());
System.out.println("Partnerlink: " + iFaultRecoveryContext.getReferenceName());
System.out.println("Port type: " + iFaultRecoveryContext.getPortType());
System.out.println("**************************************************************");
//print all properties defined in the fault-policy file
System.out.println("Properties Set for the Fault");
//Print Fault Details to Console if it exists
System.out.println("****************Fault Details********************************");
// if(iFaultRecoveryContext instanceof BPELFaultRecoveryContextImpl)
BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl)iFaultRecoveryContext;
System.out.println("Fault: " + bpelCtx.getFault());
System.out.println("Activity: " + bpelCtx.getActivityName());
System.out.println("Composite Instance: " + bpelCtx.getCompositeInstanceId());
System.out.println("Composite Name: " + bpelCtx.getCompositeName());
System.out.println("***********************************************************");
try {
bpelCtx.addAuditTrailEntry("Sending Email...");
Map props = iFaultRecoveryContext.getProperties();
if (props != null && props.size() > 0) {
setFrom(getParameterValue((ArrayList)props.get("from")));
setTo(getParameterValue((ArrayList)props.get("to")));
setSubject(getParameterValue((ArrayList)props.get("subject")) + bpelCtx.getTitle());
setText(getParameterValue((ArrayList)props.get("text")) + "\n" + "BPEL Process Instance: " + bpelCtx.getInstanceId() + " needs intervention to recover from a technical exception: " + bpelCtx.getFault().getMessage() + ".\n" + "Check the Activities tab in the BPEL Management Console in order to resolve the error as soon as possible.\n" + "This message was automatically generated, please do not reply to it.");
setHost(getParameterValue((ArrayList)props.get("host")));
setPort(getParameterValue((ArrayList)props.get("port")));
bpelCtx.addAuditTrailEntry("to Email getFrom..."+getFrom());
bpelCtx.addAuditTrailEntry("to Email getTo..."+getTo());
bpelCtx.addAuditTrailEntry("to Email getText..."+getText());
bpelCtx.addAuditTrailEntry("to Email getHost..."+getHost());
bpelCtx.addAuditTrailEntry("to Email getPort..."+getPort());
Session mailSession = Session.getDefaultInstance(properties);
Message simpleMessage = new MimeMessage(mailSession);
bpelCtx.addAuditTrailEntry("to Email toAddresses2...");
InternetAddress fromAddress = new InternetAddress(from);
bpelCtx.addAuditTrailEntry("to Email fromAddress..."+fromAddress);
simpleMessage.setFrom(fromAddress);
String[] toAddresses = to.split(";");
if (toAddresses != null && toAddresses.length > 0)
bpelCtx.addAuditTrailEntry("to Email toAddresses3...");
InternetAddress[] toInternetAddresses =new InternetAddress[toAddresses.length];
for (int i = 0; i < toAddresses.length; i++)
bpelCtx.addAuditTrailEntry("to Email toAddresses4444..."+ toAddresses);
toInternetAddresses[i] = new InternetAddress(toAddresses[i]);
bpelCtx.addAuditTrailEntry("to Email toInternetAddresses..."+ toInternetAddresses[i]);
simpleMessage.setRecipients(RecipientType.TO,toInternetAddresses);
simpleMessage.setSubject(subject);
simpleMessage.setText(text);
Transport.send(simpleMessage);
bpelCtx.addAuditTrailEntry("After Email...");
} catch (Exception e) {
bpelCtx.addAuditTrailEntry("fault Message:" + e.getMessage());
//Custom Code to Log Fault to File/DB/JMS or send Emails etc.
return "Manual";
private String getParameterValue(ArrayList parameterList) {
String value = null;
if (parameterList != null && parameterList.size() > 0)
value = (String)parameterList.get(0);
return value;
JAVA CODE FOR EMAIL oracle.sdp.messaging
private void sendMail(IFaultRecoveryContext iFaultRecoveryContext) {
BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl)iFaultRecoveryContext;
bpelCtx.addAuditTrailEntry("In sendMail...");
Map<String, Object> params = new HashMap<String, Object>();
// params.put(key, value); // if optional parameters need to be specified.
MessagingClient messagingClient;
try {
bpelCtx.addAuditTrailEntry("In sendMail111...");
messagingClient =
MessagingClientFactory.createMessagingClient(params);
Message newMessage = MessagingFactory.createMessage();
// newMessage.setContent(createEventPayload(iFaultRecoveryContext),"text/plain");
newMessage.setContent("Component Name :"+bpelCtx.getComponentName()+ "\n Instacne Id :"+bpelCtx.getComponentInstanceId()+
"\n Composite Instance Id :"+bpelCtx.getCompositeInstanceId()+ "\n Composite Name :" bpelCtx.getCompositeName()
"\n Activity name :"+bpelCtx.getActivityName() + "\n Activity Id :" bpelCtx.getActivityId() "\n ECID :" bpelCtx.getECID()
"\n Reference Name :"+bpelCtx.getReferenceName()+ "\n Title :" bpelCtx.getTitle()
"\n Fault :" + bpelCtx.getFault()+ "\n Port Name :"+bpelCtx.getPortType(), "text/plain");
bpelCtx.addAuditTrailEntry("In sendMail222...");
Address sender = MessagingFactory.createAddress(getFrom());
bpelCtx.addAuditTrailEntry("In sendMail sender..."+sender.toString());
bpelCtx.addAuditTrailEntry("from Email..."+getFrom());
String recipientsStr[] = to.split(";");
bpelCtx.addAuditTrailEntry("to Email..."+getTo());
bpelCtx.addAuditTrailEntry("In sendMail333...");
Address[] recipients = MessagingFactory.createAddress(recipientsStr);
bpelCtx.addAuditTrailEntry("In sendMail444...");
newMessage.addSender(sender);
messagingClient.registerAccessPoint(MessagingFactory.createAccessPoint(sender));
newMessage.addAllRecipients(recipients);
bpelCtx.addAuditTrailEntry("In sendMail5555...");
newMessage.getMessageInfo().setSession(MessageSessionType.INBOUND_SESSION);
newMessage.setSubject(getSubject());
bpelCtx.addAuditTrailEntry("Subject..."+getSubject());
String messageId = "";
bpelCtx.addAuditTrailEntry("In sendMail666...");
synchronized (this) {
bpelCtx.addAuditTrailEntry("In sendMail777...");
messageId = messagingClient.send(newMessage);
bpelCtx.addAuditTrailEntry("In sendMail888...");
Status[] statuses = messagingClient.getStatus(messageId);
bpelCtx.addAuditTrailEntry("In sendMail999...");
} catch (MessagingException e) {
bpelCtx.addAuditTrailEntry("inside exception email fault Message:" + e.getMessage());
//e.printStackTrace();
MESSAGES FROM SOA SERVER OUT LOG after test the bpel process:
===========================================
****************Fault?Metadata********************************
Fault?policy?id:?SimpleFaultPolicy
Fault?type:?bpel
Partnerlink:?Service1
Port?type:?{http://kacst.edu.sa/process/nstip/coPINotifyProcess}kacst_process_nstipCoPIMotifyProcess
Properties?Set?for?the?Fault
****************Fault?Details********************************
Fault:?com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault}
messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
parts: {{
summary=<summary>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</summary>
,detail=<detail><exception>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</exception>
</detail>
,code=<code>env:Server</code>}
Activity:?Invoke1
Composite?Instance:?740332
Composite?Name:?TestBPELFaultPolicy
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false
220 taisirsit.kacst.edu.sa ESMTP Sendmail 8.14.4+Sun/8.14.4; Fri, 12 Oct 2012 13:00:45 +0300 (AST)
DEBUG SMTP: connected to host "localhost", port: 25
EHLO taisirsit.kacst.edu.sa
250-taisirsit.kacst.edu.sa Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "EXPN", arg ""
DEBUG SMTP: Found extension "VERB", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "SIZE", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: Found extension "ETRN", arg ""
DEBUG SMTP: Found extension "DELIVERBY", arg ""
DEBUG SMTP: Found extension "HELP", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<[email protected]>
250 2.1.0 <[email protected]>... Sender ok
RCPT TO:<[email protected]>
250 2.1.5 <[email protected]>... Recipient ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP: [email protected]
DATA
354 Enter mail, end with "." on a line by itself
From: [email protected]
To: [email protected]
Message-ID: <[email protected].sa>
Subject: SOA EXCEPTIONInstance #890381 of BPELProcess1
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Testing Email From Fault
BPEL Process Instance: 890381 needs intervention to recover from a technical exception: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault}
messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
parts: {{
summary=<summary>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</summary>
,detail=<detail><exception>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</exception>
</detail>
,code=<code>env:Server</code>}
Check the Activities tab in the BPEL Management Console in order to resolve the error as soon as possible.
This message was automatically generated, please do not reply to it.
250 2.0.0 q9CA0j30012424 Message accepted for delivery
QUIT
221 2.0.0 taisirsit.kacst.edu.sa closing connection
Details from Instance of BPEL PROCESS :
Started invocation of operation "process" on partner "Service1".
Oct 12, 2012 10:00:45 AM [FAULT RECOVERY] Invoked handleBPELFault on custom java action class "com.kacst.fault.CustomFaultHandler".
Oct 12, 2012 10:00:45 AM Sending Email...
Oct 12, 2012 10:00:45 AM to Email [email protected]
Oct 12, 2012 10:00:45 AM to Email [email protected]
Oct 12, 2012 10:00:45 AM to Email getText...Testing Email From Fault BPEL Process Instance: 890381 needs intervention to recover from a technical exception: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault} messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage} parts: {{ summary=<summary>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</summary> ,detail=<detail><exception>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</exception> </detail> ,code=<code>env:Server</code>} . Check the Activities tab in the BPEL Management Console in order to resolve the error as soon as possible. This message was automatically generated, please do not reply to it.
Oct 12, 2012 10:00:45 AM to Email getHost...smtp.kacst.edu.sa
Oct 12, 2012 10:00:45 AM to Email getPort...25
Oct 12, 2012 10:00:45 AM to Email toAddresses2...
Oct 12, 2012 10:00:45 AM to Email [email protected]
Oct 12, 2012 10:00:45 AM to Email toAddresses3...
Oct 12, 2012 10:00:45 AM to Email [email protected]
Oct 12, 2012 10:00:45 AM to Email [email protected]
Oct 12, 2012 10:00:45 AM After Email...
Oct 12, 2012 10:00:45 AM [FAULT RECOVERY] Marked Invoke activity as "pending manual recovery".
Oct 12, 2012 10:00:45 AM Faulted while invoking operation "process" on provider "Service1".
Please suggest.
ThanksHi,
I got the solution. our email server is sending email to the mail accounts those are in the same domain but for different domains its not able to send the email.
you can try with the email those are created on the same email server.
Thanks
Tuku
Maybe you are looking for
-
HI We have a situation like we have to run the mapping paralelly, Also we want to process mapping in the batch by batch. What I mean here is that, depending on the data volume we allocate the data into different batches and we run certain number of b
-
Showing a video on local TV broadcast
What format schould I use for TV production? Blu-ray? or others?
-
Having trouble viewing tiff files in Firefox.
I cannot see tiff files when I visit certain websites. Any suggestions? I have tried to download various tiff viewers, and that didn't solve my problem.
-
Syncing my Music..
How do i update itunes on an ipod 5? every time i try to sync my music from my macbook pro to my ipod, it says i need to update itunes to 11.1... how do i do this? Thanks!
-
can someone tell me when I try to screen share and ask if she will let me see her screen, the option to ask to screen share is greyed out. The weird thing, is, is sometimes, it's greyed out, and sometimes it's black. Can not figure out why that wou