BPM Noob Help

Hi, All.

I’ve been using WM IS and TN for about three years. We purchased BPM in the hopes that we could use it some day, as it looks to be very useful. I’m attempting to think about how it would be used for a current project, and am finding it difficult to understand how the BPM elements (tasks, events, etc.) should be used to formulate my process. I know this sounds stupid. I’ve read the BPM documentation a couple of times. It is full of references to things that I see when I poke around on the screen, and explains how to configure each item in detail.

What nothing seems to explain concisely is what the BPM engine is doing with this process. I do see some allusions to how the BPM engine runs in the administration guide, but it is rather veiled. I guess I’m looking for something like a cookbook that says, “when you want to do this… do that…”.

I will start with one scenario for this topic. If you’d like to answer any or all of it, please do. If you know of some document I’m missing or some section of a document that I have that explains this, please direct me to it.

Logical Scenario: My process has an initial stage where the entity that it manages sits and accepts data until that stage of the process is completed. At a point in time, or when a person requests that it be “closed”, that stage is closed and the entity begins to move through the rest of the business process.

My BPM attempts: I was thinking that my start task could go to a receive task to receive a message requesting more data to be added to my entity. I could then have my recieve task transition to a send task to send a message indicating the status of the import. That task could then transition back to the receive task to wait for more data. Then I would have an intermediate timer event on the receive task to be able to interrupt the task and kick it out to continue with the process. But I can’t put an intermediate timer event on a receive task. I tried standalone intermediate message tasks as well, but seem to run into various dead ends. I feel like I’m just missing some fundamental understanding.

What I really don’t understand is exactly how the BPM behaves when it goes “into” each of these types of activities. When does it start a new “thread”? How can I tell how many “threads” are running and where they are? What happens when an task has no valid transition out? How can I get the process to “wait” for some time period and then move on?

I’m hoping that someone can just refer me to something. I’ve been through the administrator’s guide and the process development help.


BTW, I’m on 8.2.1.

Trying a looping subprocess. It turns out I can put an intermediate timer event on a subprocess. Light at the end of the tunnel?

Bzzzzzzzt! Loser! It can’t interrupt the subprocess. Back to the drawing board!

Designer confusion? I just tried putting a boundary timer event on a receive task and it worked…

Hi Jason,

Welcome to SAG encrypted functionality…and BPMN 2.0 too.

Receive (Start step) document --> Save data–> Wait for more data—>Save data --> Wait for more data–> till you trigger user task to satisfy join


Hi, Raj.

Thanks for the response! It’s really hard to fabricate this stuff from nothing, so this really helps me out. Your pattern here requires at least one import (which is, of course sane, but not necessarily guaranteed). How would you structure it to make the import optional?

My first inclination would be to pull the save out of the main line. What does it mean if that “Save Data” task just hangs out by itself by removing the transition from it to the join and just having Receive go straight to the join? (so, receive -> join, trigger-> join, keep -> save -> nothing) Does that keep/save thread just end when the save is done? Or does it have to participate in a join in order to be able to terminate and not cause a problem?

Does a task with no transition out just stay alive on a thread forever and keep the process from terminating?

As I’m chewing on this, it raises another question: if I have an “and” gateway that joins something that happens once (say, “start”) and something that can happen repeatedly (say, “receive”), does the engine start a new thread in the process for each “receive” and is the “start” transition always satisfied for the gateway on all threads? I guess it would have to be in order to have any hope of a receive task participating in a join. As I write this, some part of my subconscious is registering fear, but I can’t put my finger on it yet…