Note that there are some explanatory texts on larger screens.

plurals
  1. POSiebel 8 race condition
    primarykey
    data
    text
    <p>Imagine the following set up</p> <ol> <li>A set of <strong>n</strong> independent tasks in a task list must be completed in Siebel</li> <li>Tasks <em>a</em>, <em>b</em> etc can be worked on by separate threads</li> <li>When a thread starts the work flow records the states of all <strong>n</strong> tasks</li> <li>The threads continue to completion and eventually end up sending a JMS message to a queue</li> </ol> <p>We have the following problem:</p> <ul> <li>Thread <em>1</em> that works on task <em>a</em> completes its work and marks task <em>a</em> as <strong>closed</strong></li> <li>At the same time thread <em>2</em> that works on task <em>b</em> also completes its work and marks task <em>b</em> as <strong>closed</strong></li> <li>Two JMS messages are placed on the queue and sent to another back end system </li> <li>Here's the problem: The first JMS message says that the state of the task list is <code>a=closed b=open</code> and the second JMS message says <code>a=open b=closed</code></li> <li>Tasks can legitimately be re-opened by a user of Siebel (let's say for fraud checking purposes)</li> <li>The back end system receives the two JMS messages in any order since the middleware does not guarantee ordering</li> <li>The back end system receives one JMS message saying <code>closed,open</code> and another shortly afterwards that says <code>open,closed</code>. This could happen in any order but the result is the same. It <em>appears</em> to the back end system that the entire task list has not been closed whilst in Siebel all tasks (<em>a</em> and <em>b</em> in this example) have been closed</li> </ul> <p>I am told that there is no way in Siebel that the commit to the database that modifies the state of the tasks being acted upon in the workflow thread can <strong><em>only</em></strong> happen at the very end of the work flow. That means crucially after the JMS messages have been sent out with the misleading state. This is apparently because of the need to roll back a workflow upon error.</p> <p>Questions: Is the above statement true meaning that this problem can never be solved in Siebel? If not then can someone tell me whether it is possible to fix this in Siebel such that a JMS message is sent with the correct state of the tasks. I naively think this is solved using semaphores, but truth be told I've been spoiled in the sense I've never had to deal with semaphores and I sure don't know if that concept even exists in Siebel. Any help?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload