Topic
  • 11 replies
  • Latest Post - ‏2013-02-26T21:34:35Z by SystemAdmin
sactel
sactel
23 Posts

Pinned topic process instances / IME handling in Clustered env

‏2012-01-03T15:07:13Z |
A process is deployed on IBM BPM7.5 Standard edition. I am planning to use Gold toplogy (Remote messaging, remote support ,web) for clustering.
My process after getting started by an external application, needs data to be sent to the process. For this IME (intermediate message event) is defined at that point in the process.

My question is in the clustered environment how is the application going to communicate to the specific process instance and pass the data.

Broader question is that in clustered environment how are process (BPD) instances, UCA (IME, SME etc) components related with the clustered process server instances?

Thanks & Regards,
sactel
Updated on 2013-02-26T21:34:35Z at 2013-02-26T21:34:35Z by SystemAdmin
  • AnthonyBpm
    AnthonyBpm
    390 Posts

    Re: process instances / IME handling in Clustered env

    ‏2012-01-03T19:14:39Z  
    Hi Sactel:

    The IME is placed in the event manager queue (either sync or asyc depending on how you configured) and a member of the cluster will process the IME based on the order it was received and the IME configuration. The IME's correlation ID is the mechanism that is used to ensure that the proper process picks up and processes the message.

    This Undestanding Events and UCAs wiki article may help further..

    hth
  • sactel
    sactel
    23 Posts

    Re: process instances / IME handling in Clustered env

    ‏2012-01-04T00:14:09Z  
    Hi Sactel:

    The IME is placed in the event manager queue (either sync or asyc depending on how you configured) and a member of the cluster will process the IME based on the order it was received and the IME configuration. The IME's correlation ID is the mechanism that is used to ensure that the proper process picks up and processes the message.

    This Undestanding Events and UCAs wiki article may help further..

    hth
    Thanks.Gone thru the link mentioned below.

    The question is how the process instances exists in cluster. P1 (process) created in cluster member 1 (node1 ) so if request comes to the cluster member 2 will it be redirected to cluster member 2 (node2) and this is possible because there a single Messaging Engine -active as per the cluster topology (Gold topology for std edt)?

    Regards,
    sactel
  • sactel
    sactel
    23 Posts

    Re: process instances / IME handling in Clustered env

    ‏2012-01-04T00:17:44Z  
    • sactel
    • ‏2012-01-04T00:14:09Z
    Thanks.Gone thru the link mentioned below.

    The question is how the process instances exists in cluster. P1 (process) created in cluster member 1 (node1 ) so if request comes to the cluster member 2 will it be redirected to cluster member 2 (node2) and this is possible because there a single Messaging Engine -active as per the cluster topology (Gold topology for std edt)?

    Regards,
    sactel
    correcting and re-sending my response .

    The question is how the process instances exists in cluster. P1 (process) created in cluster member 1 (node1 ) so if request comes to the cluster member 2 (node 2) will it be redirected to cluster member 1 and this is possible because there a single Messaging Engine -active as per the cluster topology (Gold topology for std edt)? how is this is handled?
    Regards,
    sactel
  • SystemAdmin
    SystemAdmin
    7615 Posts

    Re: process instances / IME handling in Clustered env

    ‏2012-01-04T02:53:28Z  
    • sactel
    • ‏2012-01-04T00:17:44Z
    correcting and re-sending my response .

    The question is how the process instances exists in cluster. P1 (process) created in cluster member 1 (node1 ) so if request comes to the cluster member 2 (node 2) will it be redirected to cluster member 1 and this is possible because there a single Messaging Engine -active as per the cluster topology (Gold topology for std edt)? how is this is handled?
    Regards,
    sactel
    This is all coordinated through the DB. Since every cluster member is looking at the same database, and the process instance is in that database, there is no node specific data. There is no need for node 2 to hand items off to node 1. The movement of tokens in a BPD is singly threaded, so if node 1 is for example, moving a token due to task completion, and node 2 is attempting to move a token due to an IME event, the first one to start the node move locks the other out of the DB record until its tokens come to rest. Then the other node can do what it needs to do to the BPD Instance.
  • sactel
    sactel
    23 Posts

    Re: process instances / IME handling in Clustered env

    ‏2012-01-12T03:28:32Z  
    This is all coordinated through the DB. Since every cluster member is looking at the same database, and the process instance is in that database, there is no node specific data. There is no need for node 2 to hand items off to node 1. The movement of tokens in a BPD is singly threaded, so if node 1 is for example, moving a token due to task completion, and node 2 is attempting to move a token due to an IME event, the first one to start the node move locks the other out of the DB record until its tokens come to rest. Then the other node can do what it needs to do to the BPD Instance.
    Thanks Andrew for the answer.

    One last query - does that mean all the cluster members will have same process instances (say p1) running ?

    Thanks & Regards
  • SystemAdmin
    SystemAdmin
    7615 Posts

    Re: process instances / IME handling in Clustered env

    ‏2012-01-12T20:14:32Z  
    • sactel
    • ‏2012-01-12T03:28:32Z
    Thanks Andrew for the answer.

    One last query - does that mean all the cluster members will have same process instances (say p1) running ?

    Thanks & Regards
    Every server that is running and pointed at the same process sever schema will see all process instances and tasks, no matter which server/node started the instance.
  • AnthonyBpm
    AnthonyBpm
    390 Posts

    Re: process instances / IME handling in Clustered env

    ‏2012-01-12T21:30:15Z  
    • sactel
    • ‏2012-01-12T03:28:32Z
    Thanks Andrew for the answer.

    One last query - does that mean all the cluster members will have same process instances (say p1) running ?

    Thanks & Regards
    This analogy may help (or make things worse) to compliment Andrew's insights...

    I tend to think of the database as the 'brain'. Each member of the cluster is connected to the brain and has the same access to data and responsibilities as the other. That means that each cluster member is aware of the process instances that are running, as the brain keeps track of all of the instances that are in-flight.

    So when a user hits a server in your cluster for their "/portal" request, regardless of which server they were directed to (per load balancing setup) they will have the same "/portal" and corresponding data/access. Keeping that in mind, if you start a process from that cluster member, it will store all of the information in the event manager/brain/database and thus all other cluster members are now "aware" of that new process because they're pulling their information from the event manager/brain/database.

    Hopefully I articulated that well enough and didn't make things more complicated.
  • SystemAdmin
    SystemAdmin
    7615 Posts

    Re: process instances / IME handling in Clustered env

    ‏2012-01-13T02:20:02Z  
    This analogy may help (or make things worse) to compliment Andrew's insights...

    I tend to think of the database as the 'brain'. Each member of the cluster is connected to the brain and has the same access to data and responsibilities as the other. That means that each cluster member is aware of the process instances that are running, as the brain keeps track of all of the instances that are in-flight.

    So when a user hits a server in your cluster for their "/portal" request, regardless of which server they were directed to (per load balancing setup) they will have the same "/portal" and corresponding data/access. Keeping that in mind, if you start a process from that cluster member, it will store all of the information in the event manager/brain/database and thus all other cluster members are now "aware" of that new process because they're pulling their information from the event manager/brain/database.

    Hopefully I articulated that well enough and didn't make things more complicated.
    That is actually a very useful way to look at it in my opinion. Thanks for the post. I fully intend to steal it for future discussions. :-)
  • sactel
    sactel
    23 Posts

    Re: process instances / IME handling in Clustered env

    ‏2012-01-13T04:53:04Z  
    That is actually a very useful way to look at it in my opinion. Thanks for the post. I fully intend to steal it for future discussions. :-)
    Hi Anthony, that is indeed a 'compliment' to Andrew's Post

    Thanks for these replies.

    Best Regards,
  • SystemAdmin
    SystemAdmin
    7615 Posts

    Re: process instances / IME handling in Clustered env

    ‏2013-02-26T14:40:04Z  
    • sactel
    • ‏2012-01-13T04:53:04Z
    Hi Anthony, that is indeed a 'compliment' to Andrew's Post

    Thanks for these replies.

    Best Regards,
    May be my question is kind of related, may be not..

    We are planning on implementing custom logs on our clustered env, and each time system logs to this custom file, we need to specify the location path of the log4j.xml so the properties of the custom file are known to the log service.

    My question is, from within a task, how would we know which path (node1 / node2) to provide, until we know which server node it is on right now ? n is there a way to know that ?
  • SystemAdmin
    SystemAdmin
    7615 Posts

    Re: process instances / IME handling in Clustered env

    ‏2013-02-26T21:34:35Z  
    May be my question is kind of related, may be not..

    We are planning on implementing custom logs on our clustered env, and each time system logs to this custom file, we need to specify the location path of the log4j.xml so the properties of the custom file are known to the log service.

    My question is, from within a task, how would we know which path (node1 / node2) to provide, until we know which server node it is on right now ? n is there a way to know that ?
    In theory, you could write a java connector that returned the hostname using the Java APIs. But that's not really ideal. Because:

    • You might failover between nodes at any time.
    • I'm not sure how you are using log4j, but reading the config file each time doesn't seem normal.
    • Nodes in the cluster should really be identical: put the config files in the same location on every server. (Or in a commonly address shared location.) That way you don't have to figure out what node you are on.

    David