Different types of Users for a task in a Business Process - bpel

How to assign a task to different types of users. Each user may have different attributes of completion for example time, accuracy and cost. Thus depending upon a matrix I want to design a scheduling mechanism which minimizes the Cost.
How do I define this type (see image) of process using BPMN specification.
BPMN Image

In such case, I would use multiple instances activity (sometimes called multi instanciation in BPMS)
Multiple instances activity executes the same activity several times (a bit like a loop) but in different configurations. By configuration, I mean the user, the job to do, ...
Two kinds of multiple instances activity exists : parallel or sequencial.
In your case, parallel multiple instances would answer the need.
Hope it helps

Related

Can one Activity Diagram Depict only One process

I am Working on a project for Orders data visualization Dashboard.
This is the use case Diagram:
Currently I'm working on the activity diagram and my question is: Can the Manager and the Shipper login into the system and initiate their own activities in the same diagram?
An activity diagram "specifies behavior by sequencing subordinate units". It can perfectly have several initial nodes, e.g. one for Admin and one for Manager or Shipper. And when the activity is invoked, all those initial nodes would be activated at the same time, starting each a concurrent flow, each being performed at its own pace.
But this makes only sense if the Manager's actions and the Shipper's actions are really related, concurrent and somehow synchronized. E.g. every time an Admin login is performed, a Manager login would be expected.
If the Manager flow as well as the Shipper flow are both independent and in reality unsequenced, you should use separate activity diagrams. In this case, trying to squeeze them into a single diagram could even be misleading.
Additional remarks, unrelated to your question:
Typically you'd have a separate activity diagram for each use case. It's not an obligation, but it's a common practice to describe what happens for a specific use-case. In your case, it would mean that only the Ship Order and the Update product stock would be in a situation where actions could be interdependent.
When activity diagrams are used to design systems, it shows in principle what happens inside the system. The actors are outside the system. So the partitions (columns) would in principle not show what an actor does, but what the system does in relation with an actor. Of course, if you use activity diagrams for process modeling, it would be a different story.
Yes, they can. With each InitialNode a flow begins and the tokens run down the actions independently. Probably at a certain time you will have some synchronization between both (this is not mandatory but otherwise it would probably rather pointless to have two independent flows in the same diagram). In that case you either have a MergeNode (bar) to wait for both tokens to arrive or an action has two incoming edges waiting for both tokens in order to commence.

Can one viewflow task have multiple next state transitions?

A finite state machine can transition into multiple next states. So e.g. from State1, the machine will transition into State2 given input A, or transition into State2 given input B, and so on. Is this possible with django-viewflow?
NB1 I'm aware that it is possible to 'split' workflows. This is an excellent feature but it isn't what I'm looking for. Split workflows provide multiple concurrent workflows, all proceeding individually. I'm looking for a way to choose between different individual workflows, where only one workflow will be chosen and executed, depending on input received.
NB2 It may be possible to achieve what I want using If gateways. Presumably one can store a flag somewhere depending on user input, which the If node then checks and uses to determine which branch to activate. Is this the recommended way of proceeding? If so, are there any specific code examples demonstrating how to do this? Ideally, I don't want to store this sort of workflow information as a flag in my main models - indeed, I don't want to store this ephemeral choice long term at all. So are there other ways of achieving what I want?
One of the advantages of BPMN that it forces to program flow in such a way, that every process decisions are stored permanently and available for further process performance analysis. Skipping a decision store is the antipattern. In the cases where there are a lot of such decisions, In django, it's pretty easy to implement by adding a JSON field to a process model.
But viewflow customize everything. A transition selection could be implemented by overriding activation class done/activate_next methods.

USE-CASE - How to write Use-Case diagram in a Multiple User System?

The system I am trying to develop have three users with varying priority! User_1 has higher priority followed by User_2 and User_3. I tried developing separate use cases for each users but not sure how to handle the priority handling. The problem is that when a lower priority user was controlling system, a higher priority user can override its control and take the control. In that scenario how to develop use cases? Is it advisable to develop seperate use cases or one use case(as all acti in same system simulateously)? If we develop single use case with three user how should we handle the primary actors and secondary actors?
You are right in thinking that you need separate use cases.
If you have a UC Do Something with one actor and another actor takes over, then this is a UC on it's own, of course. Since there are more or less difficult actions involved with this taking over you need to show that in a UC on its own. Once the take-over is done, the UC Do Something is performed by the 2nd actor. If you want or need to show secondary actors you can draw a <<use>> relation between the Take Over and Actor1.
Now for the hierarchy: if you have have just a 2-level hierarchy you can explicitly create two take-over UCs with different priority levels and possible different steps. If you have a multi-level hierarchy you are better off to introduce a new set of actors. This leads to a very similar model:
Now you simply need to explain what the Prio-actors are. There are likely rules which tell when and how an actor is acting in a priority role.
As always: YMMV. Use case synthesis is a very complex process and takes a long time. So this is just an idea how you can go on. It's not the only solution.

How to model directory synchronization in UML or otherwise

How to model - in a UML diagram or similar semi-formal way - an iTunes-like application that synchronizes directory contents. I want to show which data set is the master, and which are the copies that depend on it, which part of the data is always fully synchronized and what may be not fully-synchronized at any given time etc.
use at least two types of diagram. Define classes which interacts within synchronization process .. Directory etc. And use sequence diagram to model interaction (how instances exchange messages and data). Data which are synchronized add to messages as arguments. You can define timing of synchronization using time constraints or by defining initializing time of synchronization process.

Capturing functional requirements on a non-interaction based system

I'm trying to find the functional requirements for a system under development. The problem is that the system shall act on itself on scheduled intervals. For instance, the system shall run an optimization algorithm every 20 minutes. It shall request data from other services on another time interval etc.
I'm having trouble modeling this behavior using use cases. I have considered using time as an actor but that would yield a very complex diagram. Is there any other method for finding the functional requirements for a system that acts without external interaction?
What is the problem having a complex use case diagram if your system is complex? Your solution is ok: each operation that should be invoked on a timely basis should be connected to the time actor.
UML Actors can be summarised as "roles with goals". therefore instead of using one actor for time linked to several usecases. Use several Actors linked to one usecase for each seperate timer event/ interval.

Resources