Post & Commit
Hi Experts,
I have a multi-block form, which issues POST and COMMIT on different situations. But the operations fire the same triggers and I'm generating some sequences in Commit operation which are getting generated even in POST operation. I need to avoid this situation, Is there a way to identify the mode of operation or a way around.
something like this......
eg. If :System.Commit_Mode = 'POST'|'COMMIT' Then
end if;
Thanks in advance.
Thanks Xenia,
Even I'm doing it that way, but as I'm generating sequences it is giving me a problem. The sequence no. gets generated. I think, I should insert some dummy no. in Post and over write it by original sequence no. during Commit.
Thanks a lot.
null
Similar Messages
-
POST COMMIT FORM issue in Oracle Forms Personalization
Hi All,
I have following requirement in Oracle Forms Personalization :
1. User updates a records( from the table xxtable) in the Form
2. Following this, on saving the record, a stored procedure is called to pick those records which are updated/inserted and display. But its displaying still the old values, since commit has not occured.
3. I have added new forms personalization using POST-DATABASE-COMMIT and POST-FORM-COMMIT. However, none of this trigger is firing.
Used POST-UPDATE and POST-INSERT, but this trigger are not fetching the committed data but picking the old value.
Please let me know, how this requirement can be achieved in Oracle forms personalization?
Many Thanks in Advance.the difference in time is that you doing the following additional tasks in forms that you dont do in sqlplus:
1. you are retrieving data into the fields of the form.
2. creating the record.
which is a network round-trip for each record. AFAIK.
if its an option for you, I would create a global temporary table and then populate the temporary table with the required data. Then build a base table block based on the global temporary table. This way you can use the forms default functionality and its fast because you dont have to populate all the records on the form before you see the first record!
:>) -
hi all,
I have a problem hope it get solved here.
I want to check whether any user is entering duplicate records before it is commited or posted to the database .
like suppose if a user has inserted some records in the detailed block like say patr#, Partdescription ...
001 , XYZ..
002 ,abc..
004,POL...
NOW Suppose if he tries to enter 001 again then a messaged should be displayed that u have already entered the record and should not be duplicated .
it should be noted that I havent posted the records or commited the form.
Similarly like suppose i have a form where in i can enter records like suppose 100 records i have entered without saving just going to next record by arrowkey . now here also i need to prevent duplicate entry without posting and commiting
how can i do
can any one help meSee this thread:
<p> Re: Duplicate item value in a Multi-Record Block -
Post Commit code Review Linking in the TFS Warehouse
Hello
I am having problems trying to find code reviews associated with a change set where the review and been after checkin. So the reviews are generated by History view --> double click on the changeset --> Actions --> Request Review.
I understand that when its from a changeset (post-checkin), there is only a link from the code review to the changeset and nothing between the Changeset and the code review. However when I am looking through the TFS Warehouse I cannot find any table holding
the link between the code review and the changeset. I expected it to be in the FactWorkItemChangeset but its not there.
Is this possible from the TFS Warehouse?
Thanks for looking.Hi SimonAzurec,
Thanks for your post.
Currently, we can only double click on the changeset to check which code review(s) linked to this changeset in Team Explorer. Please refer to the screenshot in this post:
http://stackoverflow.com/questions/14103788/tfs-2012-how-can-i-tell-if-a-changeset-was-code-reviewed.
After you checked in, please open the linked Code Review Request work item in VS, you will find there’s no changeset shows under
LINKS table.
For this scenario, please submit it to User Voice site at:
http://visualstudio.uservoice.com/forums/121579-visual-studio. Microsoft engineers will evaluate them seriously.
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
Hello friends at www.oracle.com ,
while analyzing and testing a Forms program here, I saw that, before POSTing data, the value of :SYSTEM.form_status was CHANGED (that is, database contents were changed at Forms) and, after POSTing, :SYSTEM.form_status became QUERY.
But, if POST built-in doesn't perform a database commit - so I suppose POSTed data isn't viewable to other users yet -, why does the form changes its status, if we do not have a real commit? Can't this lead the user to think data was saved (when, in fact, it's not, because POSTed data aren't committed)?
I read about POST built-in at online help, but it's still not much clear for me, so I ask your help to understand it better.
Hope I was clear - if not, please ask me.
Best regards,
Franklin Goncalves Jr.Sincere thanks for your answers. I really didn't know that POST built-in would fire triggers involved with database transactions, such as POST-COMMIT.
Isn't it better for data integrity that Forms and database be synchronized with the state of each other - that is, Forms should state its data is really committed at database? While I don't see a special reason for using POST, I'll still think POST is not so useful and avoid using it.
In some Forms programs I used a global variable, like :GLOBAL.key_commit_pressed, to determine if KEY-COMMIT was pressed (if user has committed data, that's obvious) while user is working. It doesn't seem to be a bad idea, although I still ask myself if it's really the best one.
But the most important question I have, is to know if POST built-in validates data with database - that is, integrity constraints, database triggers, and so on. I think it might fire, although I still believe the use of POST built-in can confuse both user and developer anytime.
Best regards,
Franklin Goncalves Jr. -
Spring / Toplink Transaction / Commit Issue
Hi,
Im working on a spring / toplink integration on my project.
The problem Im facing has to do with transaction / commits
Im using a TransactionProxyFactoryBean to encapsulate a BusinessProcess responsible for creating a new Company Instance and its main Office.
As the 2 entity have to be created atomicly I have setup a PROPAGATION_REQUIRED on the createCompanyAndMainOffice method of the CompanyBusinessProcess.
The problem is I want to return a session, identified company object and I cant see how to do that correctly.
I tried and create a sub internal method like internalTXCreate called by createCompanyAndMainOffice, that would be the one transactional, so I get the commit at the end of its execution, returning the working copy with the newly inserted id, and perform a load with its its ID on the session from createCompanyAndMainOffice.
But it seems that the TransactionalProxyFactoryBean only intercepts calls on the 'entry point' methods... so back to where I started ...
I check the reference petclinic implementation and the only new* method does mention it returns a non identified BusinessObject which I find a bit disturbing in my case ...
Any idea on the problem ?
Thanks for your help,
Best Regards
Olivier Cuzacq
Software Architect
Groupe MoniteurSomething like this in createCompanyAndMainOffice should work:
return (Owner)getTopLinkTemplate().registerObject(new Owner());
post-commit, the returned Object will be a reference from Toplink shared cache. -
2.1.1/2.1: Posting/committing new rows inside grid not deferred
Hi,
With Preferences - Database - ObjectViewer - Post edits on row change or Set Auto Comit On set, creating a new record (using the Create button or Duplicate Row context menu entry) will immediately try to post/commit the new row, instead of allowing the user to edit first. This usually generates errors because of missing or duplicate values.
Please log a bug against this so posting/committing gets deferred until the user manually changes rows or commits.
Thanks,
K.Same issue in 1.5.5
Logged
Bug 9379438 - with post edit on row change dml issued immidiately after row insertion
-Raghu -
The form claims to update the record, but isn't.
Maybe I just need a sanity check, but this has been driving me bonkers.
This is in a "when-button-pressed" trigger. Everything seems to be fine in the properties of the form fields, and I even get a "FRM-40400" message saying that two records have been updated in the database (since there are two tables attached to this form), but when I go back to the database table, the records have not been populated. There's actually more to this trigger, but since the records aren't being updated, the rest of the trigger can't do its job.
I'm posting the beginning of the trigger just so someone can sanity check me. The fact that I'm even getting the FRM-400 message that says it's updated is confusing me. Everything looks fine from the debugger standpoint. Is there something in here that looks like it would prevent me from being able to update the database? I've left in everything, not just what I deem to be the "relevant" portions, just because I'm not sure what might throw it off.
(anything saying 'soft_messages' can be ignored, it is our own internal way of recording alerts and what kind).
---------begin code snippet------------------------------
DECLARE
subj VARCHAR2(500);
v_body VARCHAR2(5000);
Reqtype varchar2(25) := :INVENTORY.Request_type;
uft UTL_FILE.FILE_TYPE;
fpath VARCHAR2(100);
fname VARCHAR2(100);
i NUMBER;
ret NUMBER;
v_db_name varchar2(50);
v_support_officer varchar2(35);
v_owner varchar2(35);
v_wastemp NUMBER;
cust_name VARCHAR2(50);
cust_phone VARCHAR2(50);
cust_email VARCHAR2(50);
cust_test VARCHAR2(50);
al_button Number;
msg_txt VARCHAR2(1500);
V_SMTP_Mailer Boolean default False;
to_whom VARCHAR2(1000);
Missing_info exception;
Proc_failed exception;
v_node number;
v_id number;
BEGIN
-- Changes the email address so that in production, it goes to the contact, in test it doesn't.
If v_db_name ='PRODUCTION' then
if :INVENTORY.contact_email is not null then
to_Whom := to_Whom||';'||:INVENTORY.contact_email||';';
else
to_Whom:= to_Whom||';';
end if;
END IF;
Message('Working........Please wait');
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'BUSY');
select op_sys.current_db_name into v_db_name from dual;
--Check request type before completing the process
IF :INVENTORY.VENDOR_NO = 632 THEN
If :INVENTORY.Request_type ='DISCONNECT' then
If :INVENTORY.bill_hierarchy is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Billing Hierarchy before completing the process');
Elsif
:INVENTORY.auth_code is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Authorization/Host Code before completing the process');
End if;
ELSIF
:INVENTORY.Request_type ='START' THEN
If :INVENTORY.bill_hierarchy is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Billing Hierarchy before completing the process');
Elsif
:CARD.node is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Node/Card Number before completing the process');
Elsif
:INVENTORY.auth_code is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Authorization/Host Code before completing the process');
End if;
End if;
ELSIF
:INVENTORY.VENDOR_NO = 1268 THEN
If :INVENTORY.Request_type ='DISCONNECT' then
If :INVENTORY.bill_hierarchy is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Billing Hierarchy before completing the process');
Elsif
:CARD.node is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Card No before completing the process');
Elsif
:INVENTORY.auth_code is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Authorization Code before completing the process');
End if;
ELSIF
:INVENTORY.Request_type ='START' THEN
If :INVENTORY.bill_hierarchy is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Billing Hierarchy before completing the process');
Elsif
:CARD.node is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter card number before completing the process');
elsif
:CARD.folder_id is null AND :inventory.vendor_no = 1268 THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter folder ID before completing the process');
elsif
:INVENTORY.PAC is null AND :inventory.vendor_no = 1268 THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter participant access code before completing the process');
Elsif
:INVENTORY.auth_code is null THEN
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
soft_messages('E',true,'Please enter Authorization Code before completing the process');
End if;
End if;
END IF;
If :INVENTORY.tsr_no is null THEN
soft_messages('E',true,'Please enter the TSR number.');
elsif
:INVENTORY.csa is null then
soft_messages('E',true,'Please enter the CSA number.');
elsif
:INVENTORY.tsr_no is null and :INVENTORY.csa is null then
soft_messages('E',true,'Please enter the TSR number and CSA number.');
end if;
if :inventory.vendor_no = 632 then
v_node := :card.cnt_card;
v_id := :card.cnt_id;
if v_node > 1 then
soft_messages('E',true, 'Only one node/account # is required for request, Please correct to continue');
end if;
end if;
if :inventory.vendor_no = 1268 then
if :card.folder_id is not null and :card.node is null then
soft_messages('E',true,'Please enter card number to continue');
elsif
:card.node is not null and :card.folder_id is null then
soft_messages('E',true,'Please enter folder ID to continue');
end if;
end if;
if :inventory.vendor_no = 1268 then
v_node := :card.cnt_card;
v_id := :card.cnt_id;
if v_node <> :inventory.num_requested and v_id <> :inventory.num_requested then
soft_messages('E',true, 'The node and folder ID entered must equal the number requested , Please correct to continue');
end if;
end if;
If (:inventory.tsr_no is not null AND :inventory.csa is not null
AND :inventory.bill_hierarchy is not null AND :card.node is not null
AND :inventory.auth_code is not null) then
msg_txt := 'Are you sure you want to complete this request: '||:inventory.REQUEST_NO||' ?' ;
al_button := DISPLAY_ALERT('CG$ASK_COMMIT',msg_txt);
--If status change is requested
If al_button = 88 then
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'BUSY');
If Reqtype = 'START' and :INVENTORY.status = 'PENDING START' then
:INVENTORY.status :='ACTIVE';
:INVENTORY.COMPL_DATE := SYSDATE;
:INVENTORY.COMPLETED_BY := USER;
Elsif Reqtype = 'START' and :INVENTORY.status = 'ACTIVE' then
:INVENTORY.status :='ACTIVE';
:INVENTORY.CREATE_DATE := SYSDATE;
:INVENTORY.CREATE_USER := USER;
:INVENTORY.COMPL_DATE := SYSDATE;
:INVENTORY.COMPLETED_BY := USER;
Elsif Reqtype = 'DISCONNECT' and :inventory.status = 'PENDING DISCONNECT' then
:INVENTORY.status :='DISCONNECTED';
:INVENTORY.COMPL_DATE := SYSDATE;
:INVENTORY.COMPLETED_BY := USER;
End if;
end if;
/* something is not letting the commit for the card block happen*/
:SYSTEM.MESSAGE_LEVEL := 5;
COMMIT_FORM;
:SYSTEM.MESSAGE_LEVEL := 0;
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
if al_button = 88 then
soft_messages('I',false,'Request has been successfully processed.');
else
soft_messages('I',false,'This Request has not been saved.');
end if;
------------end code snippet-----------------
Everything after this point hinges on the data having been committed.
This is unfortunately code I've inherited, so I'm not sure why the former owner decided that just because you pressed "yes" the request should be declared successfully processed. I've cleaned up what's listed above, but for debugging purposes I've planted little messages throughout this code to let me know what the state of some of the variables are, and everything looks to be correct.
Why would I get a FRM-40400 if it's not actually successfully updating the database?
Cyd"The fact that it's doing a commit no matter what..."
It won't do a commit if the form_status is QUERY. Did you check the form_status before coming to the actual commit statement? If it's QUERY, it won't commit. You need to do check this!
If the form_status is not QUERY, then it will do a commit unless the form is doing something in a pre-commit trigger, or deleting the records in a post commit trigger. The fact you were getting a "are no changes to be saved" message, leads me to believe you may have something going on in a trigger that fires when it encounters your commit statement. You may have to use the debugger to execute your code one line at a time to find out what's going one here. Have you tried doing that?
Other possibilities are:
a. The database or schema you are looking at is not the database or schema Forms is using to save the records.
b. The records being commited are not the records you were expecting.
"FRM-40400 blinking up on the screen"
not sure why it would be blinking... maybe due to the version of Forms Builder you are using. -
How can i get the unitOfWork or the persisting object in to my listener???.
hi,
i have a listener class which extends SessionEventAdapter ....as shown below
public class MyLister extends SessionEventAdapter{
public void postCommitUnitOfWork(SessionEvent event) {
System.out.println("POST COMMIT OF WORK");
// How can i get the unitOfWork or the persisting object in to my listener???
Another class makes use of this listener by adding the listener into a getEventManager() of a session ....
public final class AetbProcessStatusClient {
public static final void main(String[] args)
{ Project project =
XMLProjectReader.read("META- INF/AetbProcessStatus.xml",
Thread.currentThread().getContextClassLoader());
DatabaseSession session = project.createDatabaseSession();
MyLister myListener = new MyLister();
session.getEventManager().addListener(myListener);
session.login();
UnitOfWork uow = session.acquireUnitOfWork();
uow = session.acquireUnitOfWork();
Vector vec =
(Vector)uow.executeQuery("SQFunctionIdProcessStatus", AetbProcessStatus.class);
AetbProcessStatus processStatus = new AetbProcessStatus();
processStatus = (AetbProcessStatus)vec.get(0);
processStatus.setRunStat('E');
processStatus.setProgramSeqNo(10);
uow.commit();
now my question --> How can i get the unitOfWork or the persisting object in to my listener???....
ie the object "processStatus" into my listenerThe SessionEvent's session (getSession()), should be the UnitOfWork. You can access the UnitOfWork or UnitOfWorkImpl methods to access the objects in the unit of work. getUnitOfWorkChangeSet() will return the changes made in the UnitOfWork.
-- James : http://www.eclipselink.org -
Hi all,
I'm using Oracle Forms Builder 10GR2. I have a database block and a procedure which just updates the values of some fields in that DB block. The problem is that the new values don't appear immediately even i have specified commit in the procedure. I have to requery the database block to see the new values. Any ideas how this can be achieved? Also, i tried to specify an INTO clause for those fields but i think this is not working because of their database item property...
In other block, which is not database, i have something like this :
select <value> INTO :<field> FROM <table_name>and the value of that field is automatically refreshed. Is this going to work for db items? If yes, why i'm not able to compile my procedure when the syntax is the same as the non-db items? The error is : Bad bind variable....
Thanks in advance,
Bahchevanov.Hi, this is my procedure, it's simple:
PROCEDURE set_control_balance (p_statement_header_id IN INTEGER, p_control_total_dr in integer, p_control_total_cr in integer
,p_control_dr_line_count in integer,p_control_cr_line_count in integer
,p_control_end_balance in integer )
IS
begin
update ce.ce_statement_headers
set control_total_dr = p_control_total_dr
,control_total_cr = p_control_total_cr
,control_dr_line_count = p_control_dr_line_count
,control_cr_line_count = p_control_cr_line_count
,control_end_balance = p_control_end_balance
where
statement_header_id = p_statement_header_id
exception
when others then
raise;
END;i call the procedure in the WHEN-BUTTON-PRESSED trigger of a button like this:
set_control_balance(:ce_statement_headers_all.statement_header_id
,:ce_statement_headers_all.CTRL_TOTAL_DR
,:ce_statement_headers_all.CTRL_TOTAL_CR
,:ce_statement_headers_all.CTRL_DR_LINE_COUNT
,:ce_statement_headers_all.CTRL_CR_LINE_COUNT
,:ce_statement_headers_all.CTRL_END_BALANCE);
:SYSTEM.message_level := 25;
COMMIT;
CLEAR_RECORD;
GO_BLOCK ('CE_STATEMENT_LINES');
EXECUTE_QUERY;
LAST_RECORD;
HIDE_WINDOW ('XXBG_CE_STATEMENT_LINES_NEW');
But before, pls create POST-COMMIT Trigger Form Level Sorry cannot found such trigger on form level... There is ON-COMMIT,POST-DATABASE-COMMIT,POST-FORM-COMMIT... which of them i have to use?
Thanks in advance,
Bahchevanov. -
How to create and write a BLOB using ImmediateAccess
Hi there,
I'd like to write a BLOB using ScrollableRowSetAccess an ImmediateAccess and thereby want to avoid the use of any SQL-statements.
The problem is that I can't write to an empty BLOB, so that I have to create a dummy-Blob using BLOBDomain and overwrite it afterwards (see code below).
It should be possible to avoid the creation of a dummy-BLOB but I don't know how. Could you please send me a corrected version of my code?
Thanks in advance
write File with filename to the column with index col /(or the column with name colname, if specified) of the table that is specified by ResultSetInfo rsi
public static void writeFileToBlob(int col, String colname, ResultSetInfo rsi, String filename, SessionInfo _sessionInfo)
FileInputStream fin;
Object obj;
ScrollableRowsetAccess srsa= _rsi.getRowsetAccess();
ImmediateAccess ia;
byte []mybytes;
BlobDomain
BLOB blob;
OutputStream out;
byte []myBuffer;
int bytesRead=0;
try{
//open file
fin = new FileInputStream(_filename);
//lock Row
srsa.lockRow();
if (_colname==null)
ia = (ImmediateAccess)srsa.getColumnItem(_col);
else
ia = (ImmediateAccess)srsa.getColumnItem(_colname);
obj= ia.getValueAsObject();
//insert a dummy-BLOB of size 1-byte
mybytes= new byte[1];
blobDom= new BlobDomain();
blobDom.setBytes(mybytes); //ein Byte in den BLOB schreiben
ia.setValue(blobDom); //Wert in Zeile einf|gen
//commit Data
_sessionInfo.getApplicationModule().getTransaction().commit();
//access previously created dummy-Blob
srsa.lockRow();
if (_colname==null)
ia = (ImmediateAccess)srsa.getColumnItem(_col);
else
ia = (ImmediateAccess)srsa.getColumnItem(_colname);
obj= ia.getValueAsObject();
//assign the BLOB
blob= (BLOB) obj;
//open BLOB for writing
out= blob.getBinaryOutputStream();
myBuffer= new byte[10*1024];
//read file and write the BLOB
while ((bytesRead= fin.read(myBuffer)) !=-1)
out.write(myBuffer, 0, bytesRead);
out.flush();
out.close();
fin.close();
ia.setValue(blob);
//commmit data
_sessionInfo.getApplicationModule().getTransaction().commit();
}catch(Exception e){System.out.println("writeblob:"+e);}
nullHere are the issues with your usage of BlobDomain:
1. Streaming support is not implemented in 3.2 version of BlobDomain. It'll be implemented in our next release.
2. Your casting of object returned from getColumnItem is illegal as the objects will be of type BlobDomain and not BLOB.
3. When you create an empty BlobDomain you're in-effect meaning to call the empty_blob() method on the sql-row to create a empty blob locator.
4. You need to use getBytes(), setBytes() to read data out/set data into a blob/clob domain object in JDev 3.2
5. Casting/using oracle.sql.BLOB may lead to non-portable code (you're binding to the jdbc objects which may not be available in all tiers of deployment).
Here's the pseudocode you could use for new blobs.
1. create a new instance of BlobDomain()
2. setBytes() with actual data read from a stream. (Yes this may not work with real large blobs but we've tested blobs ~2MB in size and for larger needs, we're implementing the streaming support scheduled for our next release).
3. set the domain object into an attribute.
4. post/commit your data.
null -
All operations that will force quiescence in a workflow
I have the following list of operations that will force quiescence ...
1) Timed Event actions
2) Set Due Date actions
3) Assign Task... actions
4) Send XML to Client actions
5) Event nodes
6) Done nodes
Is there anything that I am missing?
Also if someone can shed some light on the significance of the "Post
External XML Event" viz-a-viz quiescence and transaction boundries. I am
specifically interested in finding out if what happend when the transaction
mode for the "Post External XML Event" is set to "send immediately"... Will
this cause a transaction to end for the sake?
Regards,
Raoon KundiRaoon Kundi,
You can specify whether you want the message to be sent immediately, or when the
current transaction containing the Post XML Event action commits. Sending the
message immediately sends the message whether or not the transaction completes.
Sending the message on commit ensures that the message is sent only if the transaction
completes successfully and a commit is issued. If the transaction is unsuccessful
and is rolled back, the message is not sent. The default is when the transaction
commits. For more information on workflow transaction boundaries, see Understanding
the BPM Transaction Model in Programming BPM Client Applications.
Advantage of Post Immediate(immediate)
 Performance improvements in one-way asynchronous requests where an event
may be fired before transaction commits.
Caveats with Post Immediate
 Duplicate Messages: Messages may be redelivered, if request side workflow
transaction was rolled-back and retried.
 Wrong Address in Addressed Response Message: A request is originated
from uncommitted workflow running in a live transactional context, and the transaction
is later rolled-back. In this case, workflow instance will be removed, as it was
never committed, and a response for such request will not find the addressed instance
to be notified.
 No-Instance-Found-Race-Condition: A request is originated from uncommitted
workflow running in a live transactional context, and response comes back before
transaction is committed. In this case, response can’t find uncommitted workflow
instance, and retries for a configurable of times after sleeping for configured
retry interval between all retries. This will reduce the window for race condition
significantly. Improper tuning may still show the problem more often. Tuning can
guarantee robustness only when retry times*retry interval is more than transaction
timeout.
Advantages of Post Commit(when transaction commits)
 No-Instance-Found-Race-Condition is a remote possibility. Cause for all
occurrences of this race condition in “Post Commit” are outside scope of WLI (ORACLE,
for example, sometimes has shown delays between transaction commit, and row being
visible to other transactions).
 No Duplicate Messages
 Wrong Address not possible.
Caveats with Post Commit
 May add a new resource to already running transaction (slowing down 2phase
commit processing).
 Delay in posting the XML event message (only sent when transaction commits).
Which Pattern warrants which delivery mode?
 One-Way Asynchronous (fire and forget)
Ideal for Post-Immediate, but must deal with redelivery issues.
 Two-way asynchronous
Ideal for Post-Commit, for the reasons mentioned above (Post-Immediate may see
“No-instance-found race condition”, “Message redelivery” or “wrong address in
response” problems).
 Two-way synchronous
Ideal for Post-Commit, for the reasons mentioned above (Post-Immediate may see
“No-instance-found race condition”, “Message redelivery” or “wrong address in
response” problems).
Hope
"Raoon Kundi" <[email protected]> wrote:
I have the following list of operations that will force quiescence ...
1) Timed Event actions
2) Set Due Date actions
3) Assign Task... actions
4) Send XML to Client actions
5) Event nodes
6) Done nodes
Is there anything that I am missing?
Also if someone can shed some light on the significance of the "Post
External XML Event" viz-a-viz quiescence and transaction boundries.
I am
specifically interested in finding out if what happend when the transaction
mode for the "Post External XML Event" is set to "send immediately"...
Will
this cause a transaction to end for the sake?
Regards,
Raoon Kundi -
How to use trigger/plugin in DSEE 6.3.1
Hi All,
I have DSEE 6.3.1 installed and would like to setup an trigger whenever an application user changes some attributes in LDAP, I googled and came across we can use triggers but not sure how to use those. Is triggers are same as plugins or one of the builtin plugin provide trigger functionality?
The requirement is- Whenever an application owner changes any attribute in LDAP I want to set an trigger and get that changed value in a plain text file for audit purpose. The trigger should work post commit and not pre commit just want to confirm the changes as been written in LDAP.
Found following plugins available in DSEE 6.3.1-
7-bit check
ACL Plugin
ACL preoperation
Binary Syntax
Boolean Syntax
CLEAR
CRYPT
Case Exact String Syntax
Case Ignore String Syntax
CaseExactMatch Plugin
Class of Service
Country String Syntax
DES
DSMLv2-SOAP-HTTP
Distinguished Name Syntax
Generalized Time Syntax
Integer Syntax
Internationalization Plugin
MemberOf Plugin
Monitoring Plugin
Multimaster Replication Plugin
NS-MTA-MD5
ObjectDeletionMatch
Octet String Syntax
Pass Through Authentication
Postal Address Syntax
RMCE
Replication Repair
Retro Changelog Plugin
Roles Plugin
SHA
SSHA
State Change Plugin
Strong Password Check
Telephone Syntax
URI Syntax
chaining database
gle
ldbm database
pswsync
referential integrity postoperation
subtree entry counter for departments in domains
subtree entry counter for domains within a domain
subtree entry counter for mail lists
subtree entry counter for nested departments
subtree entry counter for total domains
subtree entry counter for users
uid uniqueness
value counter for departments
value counter for mail lists
Request your help in this issue.I am trying to use the regular ldapsearch command from commandline and not any C/Java code, like-
ldapsearch -D "cn=directory manager" -p 1389 -h localhost -w abcd1234 -r -C PS:any:1:0 -b dc=abc,dc=com ou=emp
despite using -r and -C option it just comes out displaying below entries
ou=emp,dc=abc,dc=com
ou=emp
objectClass=top
objectClass=organizationalUnit
also tried with below command -
ldapsearch -D "cn=directory manager" -p 1389 -h localhost -w abcd1234 -r -C PS:any:1:0 -b dc=techm,dc=com objectclass=person
it displays long list and just comes out, not sure why its not doing the persistent search after using -r and -C options.
request you to give some good idea on this. -
JDBC Receiver Adapter: Guarnteed delivery
Hi All,
I have a JDBC receiver scenario. I was investigating the Guarnteed ( Exactly Once ) delivery option of the JDBC receiver adapter. The Following two scenarios needs to be validated
The Technical scenario is SAP R/3 --- XI -
Database
Scenario1 : The message has been triggered by SAP r/3 to XI. The Target Database then crashed. The message errors out in the Adapter engine and was not sent to the database. Would the messsage be resent again, till successful delivery. Do we need to set the Advance Mode, parameter "Number of Re-tries of database Transaction on SQL error". Or should this happen automatically from the Adapter without any setting in the adapter configuration.
Scenario2: There is a setting as Exactly Once Handling .
i have gone through the documentation on SAP help
[http://help.sap.com/erp2005_ehp_03/helpdata/EN/22/b4d13b633f7748b4d34f3191529946/frameset.htm]
But this is not very illustrative
it has 2 modes
PERSISTENCE ( values local and DB )
CONFLICT RESOLUTION ( Error or Redo )
Is this only after a post-commit system crash? Can anybody provide some more documentation, or blogs for the same.
In all we would expect that, a message Triggered from R/3 should always be delivered to the database.
please let me know know your opinions on the same.
Thanks in advance,
Best Regards
AbhishekWould the messsage be resent again, till successful delivery
The default behaviour of adapter engine is to try sending data to receiver 3 times at an interval of 5 minutes after which the message goes into system error. You may change this behavior through visual admin. After this, you may also manually restart the message.
Do we need to set the Advance Mode, parameter "Number of Re-tries of database Transaction on SQL error"
This is not mandatory. As I mentioned above, it is handled to a certain exten automatically.
Is this only after a post-commit system crash?
The persistance factors when defined could help in error handling cases. This could also be used when a system crash occurs at the time of message processing. Then the message processing has to be done for the second time and one of the two conflict resolution methods are used.
Regards,
Prateek -
Hello,
I am having a problem with my datasource refreshing after I insert a row into a table using the executeSQL tag. I am using BC4J/JSP. I tried to use the "refreshdatasource" tag, but this messes up the scrolling functionality because it resets the cursor on every reload. Is there a way I can make the datasource display my changes w/o using refreshdatasource??
Thanks,
DustyUse the createRow() and insertRow() methods of the RowSet(). This will make the new row visisble in the row cache. You need to make sure you post\commit your changes to the database. See if the following HOWTO helps:
re:WEB Generated Forms Navigation
Maybe you are looking for
-
It seems Firefox just gets "hung-up" often so I can't click on anything, and/or any action takes a long time. Then it will work fine for a few minutes, then stop responding again. I have to close it and start it again quite often, but that never fixe
-
Can I listen to different music on my computer while Apple TV is playing?
Hi, I don't see anything in the literature online that answers this question, so I'm hoping someone who own's a 2nd Gen Apple TV can answer this. Here's what I'd like to do: 1. Listen to classical music from iTunes on my computer while working in my
-
What I want is a code so I can buy my Lord of the Rings Extended Edition Videos because its upseting to see how easy it is to ruin these codes. The code was for 25$ for Itunes and now its ruined please help me its Christmas and I just got my Ipod Tou
-
Selection Conditions on Info Package
Hi Experts Please advise me on how to proceed My requirment is to include selection condition in INFOPACKAGE as the total data that data source is extracting is nearly 200 million records to minimize the extraction of data to be loaded to DSo...my
-
Music lost replaced with large 'other' file
Hi. All my music disappeared from my 3gs which now has a large amount of 'other' files - I assume the corrupt music files. I'm having to re-sync my music but how do I get rid of the large other files. DO I need to restore from a back up? Ta