Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-20 Thread Frank Leymann
Great: we are in agreement :-))


Best regards,
Frank

2016-06-20 9:05 GMT+02:00 Vinod Kavinda :

> Hi Frank,
> Agreed for the both suggestions.
>
> As Nandika mentioned "Not accepting a change in the substitute" is the
> option we also decided, whenever we have the ability to do so. But there
> are situations that we cannot do this when the cyclic situation arisen due
> to a time event. Theoratically, we don't have anyone to assign this task at
> this point, so it has to go back to Business Administrator as you suggested.
>
> However, in Activiti the corresponding role is "Task Owner". We will have
> to assign to task owner in this situation. One issue is the task owner is
> optional. Only in such a situation(no owner), we will have to make the task
> Claimable/Unreserved.
>
> Regards,
> Vinod
>
> On Mon, Jun 20, 2016 at 10:48 AM, Nandika Jayawardana 
> wrote:
>
>> Hi Frank,
>>
>> Not accepting a change in the substitute when there is a cyclic situation
>> is the options we decided as well.
>>
>> Regards
>> Nandika
>>
>> On Fri, Jun 17, 2016 at 11:26 PM, Frank Leymann  wrote:
>>
>>> Hi Vinod,
>>>
>>> Whenever a user changes his/her substitute, we check for a circular
>>> dependency.  This check happens independent of the fact whether substitutes
>>> are defined when the user are created ("modeling time") or when the
>>> substitute of a user is changed during "runtime". Is that your
>>> understanding too?
>>>
>>> If a circular dependency is detected, the request for the new substitute
>>> is not accepted.  And, yes, that's problematic because it may become quite
>>> cumbersome or even impossible to find a possible substitute (i.e. one that
>>> our cycle checker will accept).  For example, in case of n users U1,
>>> U2,...,Un user Ui has substitute Si and Si = U(i+1) with U(n+1)=U1 - we
>>> have a problem. During modeling time their may be time to fix the problem,
>>> but during runtime that may be critical.  Setting the Reserved or
>>> inProgress tasks of the user just defining his new substitute in state
>>> Ready doesn't help because there may be no potential owners who may get
>>> aware about the task.
>>>
>>> For this purpose, the key principle of Human Task is that the engine
>>> must do everything to push tasks to (at least) Reserve status. This is done
>>> by corresponding deadline processing, or by nomination: i.e. the engine
>>> informs the Business Administrator of the task who then assigns the task to
>>> an owner. But this may result in a burden of the Business Administrator in
>>> case he will get many tasks to nominate.
>>>
>>> So, let's discuss. My current preference is to *not accept* a change in
>>> the substitute definition in case a cyclic structure would result.  WDYT?
>>>
>>>
>>>
>>> Best regards,
>>> Frank
>>>
>>> 2016-06-16 3:31 GMT+02:00 Vinod Kavinda :
>>>
 Hi Frank,
 Yes, it's when changing the substitute user. We have to use the second
 suggestion also.

 In a scenario where substitution starts in a future time(not just after
 changing the substitute user), we do not have the option of rejecting the
 substitution request. In such a scenario, we will have to make his tasks
 unclaimed!

 Regards,
 Vinod
 On Jun 16, 2016 2:28 AM, "Frank Leymann"  wrote:

 Hi Vinod,

 yes, that's a well-known issue :-)   I suggest to adopt your first
 suggestion, namely checking circular dependencies when a new substitute has
 been specified (I guess that's what you meant - not when adding a new user,
 right?).



 Best regards,
 Frank

 2016-06-15 13:25 GMT+02:00 Vinod Kavinda :

> Hi all,
> I ran into an issue while implementing this.
>
> What if we ran into a *circular dependency between user substitutes*?
> We can't calculate a transitive substitute in this scenario. No one will 
> be
> available to take up the tasks of the unavailable user.
>
> Here is my suggestion for this:
>
> *Circular dependency detected while adding a new user*
> We abort this user addition and reply back to the user asking for a
> new substitute.
>
> *Circular dependency detected while resolving transitive subs in a
> scheduled event (Due to a user's substitution starting at this point )*
>
> Mark the transitive sub is "UNDEFINED". Future tasks that are
> assigning to this user will be reverted back as unclaimed tasks (remove 
> the
> assignee).
>
> Any suggestions?
>
>
>
>
> On Thu, Jun 9, 2016 at 8:31 AM, Vinod Kavinda  wrote:
>
>> Hi Frank,
>> Agreed.
>> I have created Jira [1] to track this improvement after the Human
>> Task integration with BPMN engine.
>>
>> [1] - https://wso2.org/jira/browse/BPS-1043
>>
>> Regards,
>> Vinod
>>
>> On Wed, 

Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-20 Thread Vinod Kavinda
Hi Frank,
Agreed for the both suggestions.

As Nandika mentioned "Not accepting a change in the substitute" is the
option we also decided, whenever we have the ability to do so. But there
are situations that we cannot do this when the cyclic situation arisen due
to a time event. Theoratically, we don't have anyone to assign this task at
this point, so it has to go back to Business Administrator as you suggested.

However, in Activiti the corresponding role is "Task Owner". We will have
to assign to task owner in this situation. One issue is the task owner is
optional. Only in such a situation(no owner), we will have to make the task
Claimable/Unreserved.

Regards,
Vinod

On Mon, Jun 20, 2016 at 10:48 AM, Nandika Jayawardana 
wrote:

> Hi Frank,
>
> Not accepting a change in the substitute when there is a cyclic situation
> is the options we decided as well.
>
> Regards
> Nandika
>
> On Fri, Jun 17, 2016 at 11:26 PM, Frank Leymann  wrote:
>
>> Hi Vinod,
>>
>> Whenever a user changes his/her substitute, we check for a circular
>> dependency.  This check happens independent of the fact whether substitutes
>> are defined when the user are created ("modeling time") or when the
>> substitute of a user is changed during "runtime". Is that your
>> understanding too?
>>
>> If a circular dependency is detected, the request for the new substitute
>> is not accepted.  And, yes, that's problematic because it may become quite
>> cumbersome or even impossible to find a possible substitute (i.e. one that
>> our cycle checker will accept).  For example, in case of n users U1,
>> U2,...,Un user Ui has substitute Si and Si = U(i+1) with U(n+1)=U1 - we
>> have a problem. During modeling time their may be time to fix the problem,
>> but during runtime that may be critical.  Setting the Reserved or
>> inProgress tasks of the user just defining his new substitute in state
>> Ready doesn't help because there may be no potential owners who may get
>> aware about the task.
>>
>> For this purpose, the key principle of Human Task is that the engine must
>> do everything to push tasks to (at least) Reserve status. This is done by
>> corresponding deadline processing, or by nomination: i.e. the engine
>> informs the Business Administrator of the task who then assigns the task to
>> an owner. But this may result in a burden of the Business Administrator in
>> case he will get many tasks to nominate.
>>
>> So, let's discuss. My current preference is to *not accept* a change in
>> the substitute definition in case a cyclic structure would result.  WDYT?
>>
>>
>>
>> Best regards,
>> Frank
>>
>> 2016-06-16 3:31 GMT+02:00 Vinod Kavinda :
>>
>>> Hi Frank,
>>> Yes, it's when changing the substitute user. We have to use the second
>>> suggestion also.
>>>
>>> In a scenario where substitution starts in a future time(not just after
>>> changing the substitute user), we do not have the option of rejecting the
>>> substitution request. In such a scenario, we will have to make his tasks
>>> unclaimed!
>>>
>>> Regards,
>>> Vinod
>>> On Jun 16, 2016 2:28 AM, "Frank Leymann"  wrote:
>>>
>>> Hi Vinod,
>>>
>>> yes, that's a well-known issue :-)   I suggest to adopt your first
>>> suggestion, namely checking circular dependencies when a new substitute has
>>> been specified (I guess that's what you meant - not when adding a new user,
>>> right?).
>>>
>>>
>>>
>>> Best regards,
>>> Frank
>>>
>>> 2016-06-15 13:25 GMT+02:00 Vinod Kavinda :
>>>
 Hi all,
 I ran into an issue while implementing this.

 What if we ran into a *circular dependency between user substitutes*?
 We can't calculate a transitive substitute in this scenario. No one will be
 available to take up the tasks of the unavailable user.

 Here is my suggestion for this:

 *Circular dependency detected while adding a new user*
 We abort this user addition and reply back to the user asking for a new
 substitute.

 *Circular dependency detected while resolving transitive subs in a
 scheduled event (Due to a user's substitution starting at this point )*

 Mark the transitive sub is "UNDEFINED". Future tasks that are assigning
 to this user will be reverted back as unclaimed tasks (remove the 
 assignee).

 Any suggestions?




 On Thu, Jun 9, 2016 at 8:31 AM, Vinod Kavinda  wrote:

> Hi Frank,
> Agreed.
> I have created Jira [1] to track this improvement after the Human Task
> integration with BPMN engine.
>
> [1] - https://wso2.org/jira/browse/BPS-1043
>
> Regards,
> Vinod
>
> On Wed, Jun 8, 2016 at 10:03 PM, Nandika Jayawardana  > wrote:
>
>> Yes, Once the task engine refactoring is complete, we can integrate
>> our own task implementation with activiti . Then we can overcome the
>> current limitations of user 

Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-19 Thread Nandika Jayawardana
Hi Frank,

Not accepting a change in the substitute when there is a cyclic situation
is the options we decided as well.

Regards
Nandika

On Fri, Jun 17, 2016 at 11:26 PM, Frank Leymann  wrote:

> Hi Vinod,
>
> Whenever a user changes his/her substitute, we check for a circular
> dependency.  This check happens independent of the fact whether substitutes
> are defined when the user are created ("modeling time") or when the
> substitute of a user is changed during "runtime". Is that your
> understanding too?
>
> If a circular dependency is detected, the request for the new substitute
> is not accepted.  And, yes, that's problematic because it may become quite
> cumbersome or even impossible to find a possible substitute (i.e. one that
> our cycle checker will accept).  For example, in case of n users U1,
> U2,...,Un user Ui has substitute Si and Si = U(i+1) with U(n+1)=U1 - we
> have a problem. During modeling time their may be time to fix the problem,
> but during runtime that may be critical.  Setting the Reserved or
> inProgress tasks of the user just defining his new substitute in state
> Ready doesn't help because there may be no potential owners who may get
> aware about the task.
>
> For this purpose, the key principle of Human Task is that the engine must
> do everything to push tasks to (at least) Reserve status. This is done by
> corresponding deadline processing, or by nomination: i.e. the engine
> informs the Business Administrator of the task who then assigns the task to
> an owner. But this may result in a burden of the Business Administrator in
> case he will get many tasks to nominate.
>
> So, let's discuss. My current preference is to *not accept* a change in
> the substitute definition in case a cyclic structure would result.  WDYT?
>
>
>
> Best regards,
> Frank
>
> 2016-06-16 3:31 GMT+02:00 Vinod Kavinda :
>
>> Hi Frank,
>> Yes, it's when changing the substitute user. We have to use the second
>> suggestion also.
>>
>> In a scenario where substitution starts in a future time(not just after
>> changing the substitute user), we do not have the option of rejecting the
>> substitution request. In such a scenario, we will have to make his tasks
>> unclaimed!
>>
>> Regards,
>> Vinod
>> On Jun 16, 2016 2:28 AM, "Frank Leymann"  wrote:
>>
>> Hi Vinod,
>>
>> yes, that's a well-known issue :-)   I suggest to adopt your first
>> suggestion, namely checking circular dependencies when a new substitute has
>> been specified (I guess that's what you meant - not when adding a new user,
>> right?).
>>
>>
>>
>> Best regards,
>> Frank
>>
>> 2016-06-15 13:25 GMT+02:00 Vinod Kavinda :
>>
>>> Hi all,
>>> I ran into an issue while implementing this.
>>>
>>> What if we ran into a *circular dependency between user substitutes*?
>>> We can't calculate a transitive substitute in this scenario. No one will be
>>> available to take up the tasks of the unavailable user.
>>>
>>> Here is my suggestion for this:
>>>
>>> *Circular dependency detected while adding a new user*
>>> We abort this user addition and reply back to the user asking for a new
>>> substitute.
>>>
>>> *Circular dependency detected while resolving transitive subs in a
>>> scheduled event (Due to a user's substitution starting at this point )*
>>>
>>> Mark the transitive sub is "UNDEFINED". Future tasks that are assigning
>>> to this user will be reverted back as unclaimed tasks (remove the assignee).
>>>
>>> Any suggestions?
>>>
>>>
>>>
>>>
>>> On Thu, Jun 9, 2016 at 8:31 AM, Vinod Kavinda  wrote:
>>>
 Hi Frank,
 Agreed.
 I have created Jira [1] to track this improvement after the Human Task
 integration with BPMN engine.

 [1] - https://wso2.org/jira/browse/BPS-1043

 Regards,
 Vinod

 On Wed, Jun 8, 2016 at 10:03 PM, Nandika Jayawardana 
 wrote:

> Yes, Once the task engine refactoring is complete, we can integrate
> our own task implementation with activiti . Then we can overcome the
> current limitations of user tasks.
>
> Regards
> Nandika
>
> On Wed, Jun 8, 2016 at 7:18 PM, Milinda Perera 
> wrote:
>
>>
>> On Wed, Jun 8, 2016 at 6:49 PM, Frank Leymann  wrote:
>>
>>> Dear Vinod,
>>>
>>> understood.  My recommendation is that we should argue as long as
>>> possible independent from a certain implementation: if we may decide to
>>> move from Activiti to Camunda, we should have the architecture/design 
>>> right
>>> to port our implementation with minimal effort. That's why I argue in 
>>> terms
>>> of the BPMN recommended state model, and when we agree on the 
>>> principles we
>>> can map it to the underlying engine. Does this sound acceptable?
>>>
>>> Which brings up the following question:  When we support User Tasks
>>> in Activiti, don't we use our 

Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-17 Thread Frank Leymann
Hi Vinod,

Whenever a user changes his/her substitute, we check for a circular
dependency.  This check happens independent of the fact whether substitutes
are defined when the user are created ("modeling time") or when the
substitute of a user is changed during "runtime". Is that your
understanding too?

If a circular dependency is detected, the request for the new substitute is
not accepted.  And, yes, that's problematic because it may become quite
cumbersome or even impossible to find a possible substitute (i.e. one that
our cycle checker will accept).  For example, in case of n users U1,
U2,...,Un user Ui has substitute Si and Si = U(i+1) with U(n+1)=U1 - we
have a problem. During modeling time their may be time to fix the problem,
but during runtime that may be critical.  Setting the Reserved or
inProgress tasks of the user just defining his new substitute in state
Ready doesn't help because there may be no potential owners who may get
aware about the task.

For this purpose, the key principle of Human Task is that the engine must
do everything to push tasks to (at least) Reserve status. This is done by
corresponding deadline processing, or by nomination: i.e. the engine
informs the Business Administrator of the task who then assigns the task to
an owner. But this may result in a burden of the Business Administrator in
case he will get many tasks to nominate.

So, let's discuss. My current preference is to *not accept* a change in the
substitute definition in case a cyclic structure would result.  WDYT?



Best regards,
Frank

2016-06-16 3:31 GMT+02:00 Vinod Kavinda :

> Hi Frank,
> Yes, it's when changing the substitute user. We have to use the second
> suggestion also.
>
> In a scenario where substitution starts in a future time(not just after
> changing the substitute user), we do not have the option of rejecting the
> substitution request. In such a scenario, we will have to make his tasks
> unclaimed!
>
> Regards,
> Vinod
> On Jun 16, 2016 2:28 AM, "Frank Leymann"  wrote:
>
> Hi Vinod,
>
> yes, that's a well-known issue :-)   I suggest to adopt your first
> suggestion, namely checking circular dependencies when a new substitute has
> been specified (I guess that's what you meant - not when adding a new user,
> right?).
>
>
>
> Best regards,
> Frank
>
> 2016-06-15 13:25 GMT+02:00 Vinod Kavinda :
>
>> Hi all,
>> I ran into an issue while implementing this.
>>
>> What if we ran into a *circular dependency between user substitutes*? We
>> can't calculate a transitive substitute in this scenario. No one will be
>> available to take up the tasks of the unavailable user.
>>
>> Here is my suggestion for this:
>>
>> *Circular dependency detected while adding a new user*
>> We abort this user addition and reply back to the user asking for a new
>> substitute.
>>
>> *Circular dependency detected while resolving transitive subs in a
>> scheduled event (Due to a user's substitution starting at this point )*
>>
>> Mark the transitive sub is "UNDEFINED". Future tasks that are assigning
>> to this user will be reverted back as unclaimed tasks (remove the assignee).
>>
>> Any suggestions?
>>
>>
>>
>>
>> On Thu, Jun 9, 2016 at 8:31 AM, Vinod Kavinda  wrote:
>>
>>> Hi Frank,
>>> Agreed.
>>> I have created Jira [1] to track this improvement after the Human Task
>>> integration with BPMN engine.
>>>
>>> [1] - https://wso2.org/jira/browse/BPS-1043
>>>
>>> Regards,
>>> Vinod
>>>
>>> On Wed, Jun 8, 2016 at 10:03 PM, Nandika Jayawardana 
>>> wrote:
>>>
 Yes, Once the task engine refactoring is complete, we can integrate our
 own task implementation with activiti . Then we can overcome the current
 limitations of user tasks.

 Regards
 Nandika

 On Wed, Jun 8, 2016 at 7:18 PM, Milinda Perera 
 wrote:

>
> On Wed, Jun 8, 2016 at 6:49 PM, Frank Leymann  wrote:
>
>> Dear Vinod,
>>
>> understood.  My recommendation is that we should argue as long as
>> possible independent from a certain implementation: if we may decide to
>> move from Activiti to Camunda, we should have the architecture/design 
>> right
>> to port our implementation with minimal effort. That's why I argue in 
>> terms
>> of the BPMN recommended state model, and when we agree on the principles 
>> we
>> can map it to the underlying engine. Does this sound acceptable?
>>
>> Which brings up the following question:  When we support User Tasks
>> in Activiti, don't we use our HumanTask implementation as User Task as 
>> BPMN
>> 2.0 assumes? But we use the simplified implementation that Activiti 
>> ships?
>> If we do the latter, what is our strategy of our HumanTask 
>> implementation?
>>
>
>
>
>  +1, Soon or Later I think replacing Activiti User Task or introducing
> as a new type of user task, 

Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-15 Thread Vinod Kavinda
Hi Frank,
Yes, it's when changing the substitute user. We have to use the second
suggestion also.

In a scenario where substitution starts in a future time(not just after
changing the substitute user), we do not have the option of rejecting the
substitution request. In such a scenario, we will have to make his tasks
unclaimed!

Regards,
Vinod
On Jun 16, 2016 2:28 AM, "Frank Leymann"  wrote:

Hi Vinod,

yes, that's a well-known issue :-)   I suggest to adopt your first
suggestion, namely checking circular dependencies when a new substitute has
been specified (I guess that's what you meant - not when adding a new user,
right?).



Best regards,
Frank

2016-06-15 13:25 GMT+02:00 Vinod Kavinda :

> Hi all,
> I ran into an issue while implementing this.
>
> What if we ran into a *circular dependency between user substitutes*? We
> can't calculate a transitive substitute in this scenario. No one will be
> available to take up the tasks of the unavailable user.
>
> Here is my suggestion for this:
>
> *Circular dependency detected while adding a new user*
> We abort this user addition and reply back to the user asking for a new
> substitute.
>
> *Circular dependency detected while resolving transitive subs in a
> scheduled event (Due to a user's substitution starting at this point )*
>
> Mark the transitive sub is "UNDEFINED". Future tasks that are assigning to
> this user will be reverted back as unclaimed tasks (remove the assignee).
>
> Any suggestions?
>
>
>
>
> On Thu, Jun 9, 2016 at 8:31 AM, Vinod Kavinda  wrote:
>
>> Hi Frank,
>> Agreed.
>> I have created Jira [1] to track this improvement after the Human Task
>> integration with BPMN engine.
>>
>> [1] - https://wso2.org/jira/browse/BPS-1043
>>
>> Regards,
>> Vinod
>>
>> On Wed, Jun 8, 2016 at 10:03 PM, Nandika Jayawardana 
>> wrote:
>>
>>> Yes, Once the task engine refactoring is complete, we can integrate our
>>> own task implementation with activiti . Then we can overcome the current
>>> limitations of user tasks.
>>>
>>> Regards
>>> Nandika
>>>
>>> On Wed, Jun 8, 2016 at 7:18 PM, Milinda Perera 
>>> wrote:
>>>

 On Wed, Jun 8, 2016 at 6:49 PM, Frank Leymann  wrote:

> Dear Vinod,
>
> understood.  My recommendation is that we should argue as long as
> possible independent from a certain implementation: if we may decide to
> move from Activiti to Camunda, we should have the architecture/design 
> right
> to port our implementation with minimal effort. That's why I argue in 
> terms
> of the BPMN recommended state model, and when we agree on the principles 
> we
> can map it to the underlying engine. Does this sound acceptable?
>
> Which brings up the following question:  When we support User Tasks in
> Activiti, don't we use our HumanTask implementation as User Task as BPMN
> 2.0 assumes? But we use the simplified implementation that Activiti ships?
> If we do the latter, what is our strategy of our HumanTask implementation?
>



  +1, Soon or Later I think replacing Activiti User Task or introducing
 as a new type of user task, with our WS-HumanTask it the best option.
 AFAIR similar idea is in our future roadmap @Hasitha @Nandika : isn't
 it?

 --
 Milinda Perera
 Software Engineer;
 WSO2 Inc. http://wso2.com ,
 Mobile: (+94) 714 115 032


>>>
>>>
>>> --
>>> Nandika Jayawardana
>>> WSO2 Inc ; http://wso2.com
>>> lean.enterprise.middleware
>>>
>>
>>
>>
>> --
>> Vinod Kavinda
>> Software Engineer
>> *WSO2 Inc. - lean . enterprise . middleware .*
>> Mobile : +94 (0) 712 415544
>> Blog : http://soatechflicks.blogspot.com/
>>
>>
>
>
> --
> Vinod Kavinda
> Software Engineer
> *WSO2 Inc. - lean . enterprise . middleware .*
> Mobile : +94 (0) 712 415544
> Blog : http://soatechflicks.blogspot.com/
>
>
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-15 Thread Frank Leymann
Hi Vinod,

yes, that's a well-known issue :-)   I suggest to adopt your first
suggestion, namely checking circular dependencies when a new substitute has
been specified (I guess that's what you meant - not when adding a new user,
right?).



Best regards,
Frank

2016-06-15 13:25 GMT+02:00 Vinod Kavinda :

> Hi all,
> I ran into an issue while implementing this.
>
> What if we ran into a *circular dependency between user substitutes*? We
> can't calculate a transitive substitute in this scenario. No one will be
> available to take up the tasks of the unavailable user.
>
> Here is my suggestion for this:
>
> *Circular dependency detected while adding a new user*
> We abort this user addition and reply back to the user asking for a new
> substitute.
>
> *Circular dependency detected while resolving transitive subs in a
> scheduled event (Due to a user's substitution starting at this point )*
>
> Mark the transitive sub is "UNDEFINED". Future tasks that are assigning to
> this user will be reverted back as unclaimed tasks (remove the assignee).
>
> Any suggestions?
>
>
>
>
> On Thu, Jun 9, 2016 at 8:31 AM, Vinod Kavinda  wrote:
>
>> Hi Frank,
>> Agreed.
>> I have created Jira [1] to track this improvement after the Human Task
>> integration with BPMN engine.
>>
>> [1] - https://wso2.org/jira/browse/BPS-1043
>>
>> Regards,
>> Vinod
>>
>> On Wed, Jun 8, 2016 at 10:03 PM, Nandika Jayawardana 
>> wrote:
>>
>>> Yes, Once the task engine refactoring is complete, we can integrate our
>>> own task implementation with activiti . Then we can overcome the current
>>> limitations of user tasks.
>>>
>>> Regards
>>> Nandika
>>>
>>> On Wed, Jun 8, 2016 at 7:18 PM, Milinda Perera 
>>> wrote:
>>>

 On Wed, Jun 8, 2016 at 6:49 PM, Frank Leymann  wrote:

> Dear Vinod,
>
> understood.  My recommendation is that we should argue as long as
> possible independent from a certain implementation: if we may decide to
> move from Activiti to Camunda, we should have the architecture/design 
> right
> to port our implementation with minimal effort. That's why I argue in 
> terms
> of the BPMN recommended state model, and when we agree on the principles 
> we
> can map it to the underlying engine. Does this sound acceptable?
>
> Which brings up the following question:  When we support User Tasks in
> Activiti, don't we use our HumanTask implementation as User Task as BPMN
> 2.0 assumes? But we use the simplified implementation that Activiti ships?
> If we do the latter, what is our strategy of our HumanTask implementation?
>



  +1, Soon or Later I think replacing Activiti User Task or introducing
 as a new type of user task, with our WS-HumanTask it the best option.
 AFAIR similar idea is in our future roadmap @Hasitha @Nandika : isn't
 it?

 --
 Milinda Perera
 Software Engineer;
 WSO2 Inc. http://wso2.com ,
 Mobile: (+94) 714 115 032


>>>
>>>
>>> --
>>> Nandika Jayawardana
>>> WSO2 Inc ; http://wso2.com
>>> lean.enterprise.middleware
>>>
>>
>>
>>
>> --
>> Vinod Kavinda
>> Software Engineer
>> *WSO2 Inc. - lean . enterprise . middleware .*
>> Mobile : +94 (0) 712 415544
>> Blog : http://soatechflicks.blogspot.com/
>>
>>
>
>
> --
> Vinod Kavinda
> Software Engineer
> *WSO2 Inc. - lean . enterprise . middleware .*
> Mobile : +94 (0) 712 415544
> Blog : http://soatechflicks.blogspot.com/
>
>
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-15 Thread Vinod Kavinda
Hi all,
I ran into an issue while implementing this.

What if we ran into a *circular dependency between user substitutes*? We
can't calculate a transitive substitute in this scenario. No one will be
available to take up the tasks of the unavailable user.

Here is my suggestion for this:

*Circular dependency detected while adding a new user*
We abort this user addition and reply back to the user asking for a new
substitute.

*Circular dependency detected while resolving transitive subs in a
scheduled event (Due to a user's substitution starting at this point )*

Mark the transitive sub is "UNDEFINED". Future tasks that are assigning to
this user will be reverted back as unclaimed tasks (remove the assignee).

Any suggestions?




On Thu, Jun 9, 2016 at 8:31 AM, Vinod Kavinda  wrote:

> Hi Frank,
> Agreed.
> I have created Jira [1] to track this improvement after the Human Task
> integration with BPMN engine.
>
> [1] - https://wso2.org/jira/browse/BPS-1043
>
> Regards,
> Vinod
>
> On Wed, Jun 8, 2016 at 10:03 PM, Nandika Jayawardana 
> wrote:
>
>> Yes, Once the task engine refactoring is complete, we can integrate our
>> own task implementation with activiti . Then we can overcome the current
>> limitations of user tasks.
>>
>> Regards
>> Nandika
>>
>> On Wed, Jun 8, 2016 at 7:18 PM, Milinda Perera  wrote:
>>
>>>
>>> On Wed, Jun 8, 2016 at 6:49 PM, Frank Leymann  wrote:
>>>
 Dear Vinod,

 understood.  My recommendation is that we should argue as long as
 possible independent from a certain implementation: if we may decide to
 move from Activiti to Camunda, we should have the architecture/design right
 to port our implementation with minimal effort. That's why I argue in terms
 of the BPMN recommended state model, and when we agree on the principles we
 can map it to the underlying engine. Does this sound acceptable?

 Which brings up the following question:  When we support User Tasks in
 Activiti, don't we use our HumanTask implementation as User Task as BPMN
 2.0 assumes? But we use the simplified implementation that Activiti ships?
 If we do the latter, what is our strategy of our HumanTask implementation?

>>>
>>>
>>>
>>>  +1, Soon or Later I think replacing Activiti User Task or introducing
>>> as a new type of user task, with our WS-HumanTask it the best option.
>>> AFAIR similar idea is in our future roadmap @Hasitha @Nandika : isn't it?
>>>
>>> --
>>> Milinda Perera
>>> Software Engineer;
>>> WSO2 Inc. http://wso2.com ,
>>> Mobile: (+94) 714 115 032
>>>
>>>
>>
>>
>> --
>> Nandika Jayawardana
>> WSO2 Inc ; http://wso2.com
>> lean.enterprise.middleware
>>
>
>
>
> --
> Vinod Kavinda
> Software Engineer
> *WSO2 Inc. - lean . enterprise . middleware .*
> Mobile : +94 (0) 712 415544
> Blog : http://soatechflicks.blogspot.com/
>
>


-- 
Vinod Kavinda
Software Engineer
*WSO2 Inc. - lean . enterprise . middleware .*
Mobile : +94 (0) 712 415544
Blog : http://soatechflicks.blogspot.com/
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-08 Thread Vinod Kavinda
Hi Frank,
Agreed.
I have created Jira [1] to track this improvement after the Human Task
integration with BPMN engine.

[1] - https://wso2.org/jira/browse/BPS-1043

Regards,
Vinod

On Wed, Jun 8, 2016 at 10:03 PM, Nandika Jayawardana 
wrote:

> Yes, Once the task engine refactoring is complete, we can integrate our
> own task implementation with activiti . Then we can overcome the current
> limitations of user tasks.
>
> Regards
> Nandika
>
> On Wed, Jun 8, 2016 at 7:18 PM, Milinda Perera  wrote:
>
>>
>> On Wed, Jun 8, 2016 at 6:49 PM, Frank Leymann  wrote:
>>
>>> Dear Vinod,
>>>
>>> understood.  My recommendation is that we should argue as long as
>>> possible independent from a certain implementation: if we may decide to
>>> move from Activiti to Camunda, we should have the architecture/design right
>>> to port our implementation with minimal effort. That's why I argue in terms
>>> of the BPMN recommended state model, and when we agree on the principles we
>>> can map it to the underlying engine. Does this sound acceptable?
>>>
>>> Which brings up the following question:  When we support User Tasks in
>>> Activiti, don't we use our HumanTask implementation as User Task as BPMN
>>> 2.0 assumes? But we use the simplified implementation that Activiti ships?
>>> If we do the latter, what is our strategy of our HumanTask implementation?
>>>
>>
>>
>>
>>  +1, Soon or Later I think replacing Activiti User Task or introducing as
>> a new type of user task, with our WS-HumanTask it the best option.
>> AFAIR similar idea is in our future roadmap @Hasitha @Nandika : isn't it?
>>
>> --
>> Milinda Perera
>> Software Engineer;
>> WSO2 Inc. http://wso2.com ,
>> Mobile: (+94) 714 115 032
>>
>>
>
>
> --
> Nandika Jayawardana
> WSO2 Inc ; http://wso2.com
> lean.enterprise.middleware
>



-- 
Vinod Kavinda
Software Engineer
*WSO2 Inc. - lean . enterprise . middleware .*
Mobile : +94 (0) 712 415544
Blog : http://soatechflicks.blogspot.com/
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-08 Thread Milinda Perera
On Wed, Jun 8, 2016 at 6:49 PM, Frank Leymann  wrote:

> Dear Vinod,
>
> understood.  My recommendation is that we should argue as long as possible
> independent from a certain implementation: if we may decide to move from
> Activiti to Camunda, we should have the architecture/design right to port
> our implementation with minimal effort. That's why I argue in terms of the
> BPMN recommended state model, and when we agree on the principles we can
> map it to the underlying engine. Does this sound acceptable?
>
> Which brings up the following question:  When we support User Tasks in
> Activiti, don't we use our HumanTask implementation as User Task as BPMN
> 2.0 assumes? But we use the simplified implementation that Activiti ships?
> If we do the latter, what is our strategy of our HumanTask implementation?
>



 +1, Soon or Later I think replacing Activiti User Task or introducing as a
new type of user task, with our WS-HumanTask it the best option.
AFAIR similar idea is in our future roadmap @Hasitha @Nandika : isn't it?

-- 
Milinda Perera
Software Engineer;
WSO2 Inc. http://wso2.com ,
Mobile: (+94) 714 115 032
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-08 Thread Frank Leymann
Dear Vinod,

understood.  My recommendation is that we should argue as long as possible
independent from a certain implementation: if we may decide to move from
Activiti to Camunda, we should have the architecture/design right to port
our implementation with minimal effort. That's why I argue in terms of the
BPMN recommended state model, and when we agree on the principles we can
map it to the underlying engine. Does this sound acceptable?

Which brings up the following question:  When we support User Tasks in
Activiti, don't we use our HumanTask implementation as User Task as BPMN
2.0 assumes? But we use the simplified implementation that Activiti ships?
If we do the latter, what is our strategy of our HumanTask implementation?


Best regards,
Frank

2016-06-08 11:35 GMT+02:00 Vinod Kavinda :

> Hi Frank,
> Activiti has not defined states compliant with WS-HumanTask. It has only
> Created, Claimed and Completed states.
>
> Regards,
> Vinod
>
> On Wed, Jun 8, 2016 at 2:52 PM, Frank Leymann  wrote:
>
>> Dear Vinod,
>>
>> BPMN 2.0 explicitly refers to WS-HumanTask as implementation of a User
>> Task (see pp 166 ff) - although they say that there are many potential
>> different implementations, HumanTask is preferred (...and I co-authored
>> these sections, summarizing the position of the group ;-)). Thus, BPMN 2.0
>> does not refer to any states because its implementation dependent, but each
>> implementation has to define the states - otherwise we run into non-defined
>> situations we are discussion here.  Has Activiti these states defined?
>>
>>
>> Best regards,
>> Frank
>>
>> 2016-06-06 7:41 GMT+02:00 Vinod Kavinda :
>>
>>> Please find my comments inline..
>>>


> *Task Reassignment at the end of substitution period*
> When a user that was on vacation come back, we will not assign his
> past tasks back to himself from his substitute. Since we cannot track the
> progress of the tasks once it is assigned to a user, this is not 
> reasonable.
> We will stop substitution of future tasks at this point.
>

 ​That's not typically what is required.  We should at least reassign
 tasks that are not yet InProgess. ​ But Ready and Reserved tasks should be
 reassigned to the user returned in any case.

>>>
>>> Totally agreed to this if it is in a WS-Human task context.
>>>
>>> We are considering User tasks in BPMN here. In Activiti there is no such
>>> notion as task status. There is no such status like "In progress". Once a
>>> task is assigned to someone, we have to assume that he is working on it.
>>> If we automatically reassign tasks to original user, it will be a mess.
>>> (eg: in call centers, user A assign his tasks to B and go out. B is on a
>>> call for a task came from B. While he is on call A comes back, tasks get
>>> reassigned back to him. He will make another call for the same task, since
>>> the task is not completed, complete mix up!!)
>>>
>>> I don't think we should automatically reassign without the assignee
>>> consent. If we really need, we can have a API that a user can retrieve his
>>> own tasks thet were substituted to someone else.
>>>
>>> Vinod Kavinda
>>> Software Engineer
>>> *WSO2 Inc. - lean . enterprise . middleware .*
>>> Mobile : +94 (0) 712 415544
>>> Blog : http://soatechflicks.blogspot.com/
>>>
>>>
>>
>
>
> --
> Vinod Kavinda
> Software Engineer
> *WSO2 Inc. - lean . enterprise . middleware .*
> Mobile : +94 (0) 712 415544
> Blog : http://soatechflicks.blogspot.com/
>
>
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-08 Thread Frank Leymann
Vinod,

re-assignment must consider the state of the task. In your scenario, the
task that B is working on is inProgress (BPMN / HumanTask terminology =
"active/workedOn" in informal terminology also used in BPMN spec) and will
not (!) be re-assigned. Note that "claimed" means that a human being said
that she will work on it in some near future but that she is not yet
working on it; thus, it can still be re-assigned.



Best regards,
Frank

2016-06-06 7:41 GMT+02:00 Vinod Kavinda :

> Please find my comments inline..
>
>>
>>
>>> *Task Reassignment at the end of substitution period*
>>> When a user that was on vacation come back, we will not assign his past
>>> tasks back to himself from his substitute. Since we cannot track the
>>> progress of the tasks once it is assigned to a user, this is not reasonable.
>>> We will stop substitution of future tasks at this point.
>>>
>>
>> ​That's not typically what is required.  We should at least reassign
>> tasks that are not yet InProgess. ​ But Ready and Reserved tasks should be
>> reassigned to the user returned in any case.
>>
>
> Totally agreed to this if it is in a WS-Human task context.
>
> We are considering User tasks in BPMN here. In Activiti there is no such
> notion as task status. There is no such status like "In progress". Once a
> task is assigned to someone, we have to assume that he is working on it.
> If we automatically reassign tasks to original user, it will be a mess.
> (eg: in call centers, user A assign his tasks to B and go out. B is on a
> call for a task came from B. While he is on call A comes back, tasks get
> reassigned back to him. He will make another call for the same task, since
> the task is not completed, complete mix up!!)
>
> I don't think we should automatically reassign without the assignee
> consent. If we really need, we can have a API that a user can retrieve his
> own tasks thet were substituted to someone else.
>
> Vinod Kavinda
> Software Engineer
> *WSO2 Inc. - lean . enterprise . middleware .*
> Mobile : +94 (0) 712 415544
> Blog : http://soatechflicks.blogspot.com/
>
>
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-08 Thread Vinod Kavinda
Hi Frank,
Activiti has not defined states compliant with WS-HumanTask. It has only
Created, Claimed and Completed states.

Regards,
Vinod

On Wed, Jun 8, 2016 at 2:52 PM, Frank Leymann  wrote:

> Dear Vinod,
>
> BPMN 2.0 explicitly refers to WS-HumanTask as implementation of a User
> Task (see pp 166 ff) - although they say that there are many potential
> different implementations, HumanTask is preferred (...and I co-authored
> these sections, summarizing the position of the group ;-)). Thus, BPMN 2.0
> does not refer to any states because its implementation dependent, but each
> implementation has to define the states - otherwise we run into non-defined
> situations we are discussion here.  Has Activiti these states defined?
>
>
> Best regards,
> Frank
>
> 2016-06-06 7:41 GMT+02:00 Vinod Kavinda :
>
>> Please find my comments inline..
>>
>>>
>>>
 *Task Reassignment at the end of substitution period*
 When a user that was on vacation come back, we will not assign his past
 tasks back to himself from his substitute. Since we cannot track the
 progress of the tasks once it is assigned to a user, this is not 
 reasonable.
 We will stop substitution of future tasks at this point.

>>>
>>> ​That's not typically what is required.  We should at least reassign
>>> tasks that are not yet InProgess. ​ But Ready and Reserved tasks should be
>>> reassigned to the user returned in any case.
>>>
>>
>> Totally agreed to this if it is in a WS-Human task context.
>>
>> We are considering User tasks in BPMN here. In Activiti there is no such
>> notion as task status. There is no such status like "In progress". Once a
>> task is assigned to someone, we have to assume that he is working on it.
>> If we automatically reassign tasks to original user, it will be a mess.
>> (eg: in call centers, user A assign his tasks to B and go out. B is on a
>> call for a task came from B. While he is on call A comes back, tasks get
>> reassigned back to him. He will make another call for the same task, since
>> the task is not completed, complete mix up!!)
>>
>> I don't think we should automatically reassign without the assignee
>> consent. If we really need, we can have a API that a user can retrieve his
>> own tasks thet were substituted to someone else.
>>
>> Vinod Kavinda
>> Software Engineer
>> *WSO2 Inc. - lean . enterprise . middleware .*
>> Mobile : +94 (0) 712 415544
>> Blog : http://soatechflicks.blogspot.com/
>>
>>
>


-- 
Vinod Kavinda
Software Engineer
*WSO2 Inc. - lean . enterprise . middleware .*
Mobile : +94 (0) 712 415544
Blog : http://soatechflicks.blogspot.com/
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-08 Thread Frank Leymann
Dear Vinod,

BPMN 2.0 explicitly refers to WS-HumanTask as implementation of a User Task
(see pp 166 ff) - although they say that there are many potential different
implementations, HumanTask is preferred (...and I co-authored these
sections, summarizing the position of the group ;-)). Thus, BPMN 2.0 does
not refer to any states because its implementation dependent, but each
implementation has to define the states - otherwise we run into non-defined
situations we are discussion here.  Has Activiti these states defined?


Best regards,
Frank

2016-06-06 7:41 GMT+02:00 Vinod Kavinda :

> Please find my comments inline..
>
>>
>>
>>> *Task Reassignment at the end of substitution period*
>>> When a user that was on vacation come back, we will not assign his past
>>> tasks back to himself from his substitute. Since we cannot track the
>>> progress of the tasks once it is assigned to a user, this is not reasonable.
>>> We will stop substitution of future tasks at this point.
>>>
>>
>> ​That's not typically what is required.  We should at least reassign
>> tasks that are not yet InProgess. ​ But Ready and Reserved tasks should be
>> reassigned to the user returned in any case.
>>
>
> Totally agreed to this if it is in a WS-Human task context.
>
> We are considering User tasks in BPMN here. In Activiti there is no such
> notion as task status. There is no such status like "In progress". Once a
> task is assigned to someone, we have to assume that he is working on it.
> If we automatically reassign tasks to original user, it will be a mess.
> (eg: in call centers, user A assign his tasks to B and go out. B is on a
> call for a task came from B. While he is on call A comes back, tasks get
> reassigned back to him. He will make another call for the same task, since
> the task is not completed, complete mix up!!)
>
> I don't think we should automatically reassign without the assignee
> consent. If we really need, we can have a API that a user can retrieve his
> own tasks thet were substituted to someone else.
>
> Vinod Kavinda
> Software Engineer
> *WSO2 Inc. - lean . enterprise . middleware .*
> Mobile : +94 (0) 712 415544
> Blog : http://soatechflicks.blogspot.com/
>
>
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-07 Thread Frank Leymann
I refer to the states defined in the HumanTask spec:
http://docs.oasis-open.org/bpel4people/ws-humantask-1.1-spec-cd-06.pdf
Section 4.10 defines these states - "claimed" is not what the standard
defines because different implementations had slightly different semantics,
thus, we renamed the states and defined their operational semantics...


Best regards,
Frank

2016-06-06 17:55 GMT+02:00 Manuranga Perera :

> There is no such status like "In progress".
>
> Isn't "claiming" a task is equivalent to making "in progress".
>
> In your example of call, I'll first claim and then start the call.
>
> On Mon, Jun 6, 2016 at 11:51 AM, Manuranga Perera  wrote:
>
>> I think as much as possible we have to achieve this with Event-driven
>>> architecture rather than schedulers.
>>>
>> +1
>>
>>> So we can use simple cache mechanism as below
>>
>> While this is possible, I don't see why we are trying to shave off a few
>> milliseconds from the task creation and make the it more complex even
>> sacrificing correctness. Isn't this some premature optimization ?
>>
>> --
>> With regards,
>> *Manu*ranga Perera.
>>
>> phone : 071 7 70 20 50
>> mail : m...@wso2.com
>>
>
>
>
> --
> With regards,
> *Manu*ranga Perera.
>
> phone : 071 7 70 20 50
> mail : m...@wso2.com
>
> ___
> Architecture mailing list
> Architecture@wso2.org
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-06 Thread Manuranga Perera
>
> ​Initial discussion was to run this tasks at midnight, because all the
> substitution start at beginning of a day.

Ok, now I understand what you meant initially.

> Since we are moving to time-stamp based approach, we will not required to
> calculate this ​for all users; but calculate for some users (if there are
> transitive substitutes.), when a substitution of an user starts.

 Agreed.

> ​Who will trigger this event. ?

It is a task, that will be scheduled when the substitution is created. What
I meant is we can '*think*' about that as a timed *event *since it's per
user. It don't matter, really.

To summarize: +1 for the task approach where only one user is handled in
the task.

On Mon, Jun 6, 2016 at 1:17 PM, Hasitha Aravinda  wrote:

> Hi Manu,
>
> On Mon, Jun 6, 2016 at 10:12 PM, Manuranga Perera  wrote:
>
>> ​Let's say, engine hasn't received any new task creation requests
>>> ​ for​
>>>  this particular user during T1-T5. Then engine will not able to
>>> reassign above X tasks back to user B during this time period. But user B
>>> should able to
>>> ​perform
>>>  above task after T1.
>>> This is why we can't
>>> ​ use​
>>>  event driven pattern here.
>>
>> Let's take an example. Say we use event driven pattern here and we have
>>> substitution from user A to user B which
>>> ​is
>>>  defined at T0, starts at T1 and end at T10. Currently User A has x
>>> number of in-progress tasks.
>>
>>
>> Yes, we do need tasks to re-assign the user, but this doesn't mean we
>> need a separate task to calculate for all users.
>>
>
> ​Initial discussion was to run this tasks at midnight, because all the
> substitution start at beginning of a day. So we had to calculate this for
> all users.
>
> Since we are moving to time-stamp based approach, we will not required to
> calculate this ​for all users; but calculate for some users (if there are
> transitive substitutes.), when a substitution of an user starts.
> ​
>
>
>> We can consider this task as the end of substitution event.
>>
>
> ​W
> ho will trigger this event. ?
>
> Thanks,
> Hasitha. ​
>
>
>>
>> --
>> With regards,
>> *Manu*ranga Perera.
>>
>> phone : 071 7 70 20 50
>> mail : m...@wso2.com
>>
>
>
>
> --
> --
> Hasitha Aravinda,
> Associate Technical Lead,
> WSO2 Inc.
> Email: hasi...@wso2.com
> Mobile : +94 718 210 200
>



-- 
With regards,
*Manu*ranga Perera.

phone : 071 7 70 20 50
mail : m...@wso2.com
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-06 Thread Hasitha Aravinda
Hi Manu,

On Mon, Jun 6, 2016 at 10:12 PM, Manuranga Perera  wrote:

> ​Let's say, engine hasn't received any new task creation requests
>> ​ for​
>>  this particular user during T1-T5. Then engine will not able to reassign
>> above X tasks back to user B during this time period. But user B should
>> able to
>> ​perform
>>  above task after T1.
>> This is why we can't
>> ​ use​
>>  event driven pattern here.
>
> Let's take an example. Say we use event driven pattern here and we have
>> substitution from user A to user B which
>> ​is
>>  defined at T0, starts at T1 and end at T10. Currently User A has x
>> number of in-progress tasks.
>
>
> Yes, we do need tasks to re-assign the user, but this doesn't mean we need
> a separate task to calculate for all users.
>

​Initial discussion was to run this tasks at midnight, because all the
substitution start at beginning of a day. So we had to calculate this for
all users.

Since we are moving to time-stamp based approach, we will not required to
calculate this ​for all users; but calculate for some users (if there are
transitive substitutes.), when a substitution of an user starts.
​


> We can consider this task as the end of substitution event.
>

​W
ho will trigger this event. ?

Thanks,
Hasitha. ​


>
> --
> With regards,
> *Manu*ranga Perera.
>
> phone : 071 7 70 20 50
> mail : m...@wso2.com
>



-- 
--
Hasitha Aravinda,
Associate Technical Lead,
WSO2 Inc.
Email: hasi...@wso2.com
Mobile : +94 718 210 200
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-06 Thread Manuranga Perera
>
> ​Let's say, engine hasn't received any new task creation requests
> ​ for​
>  this particular user during T1-T5. Then engine will not able to reassign
> above X tasks back to user B during this time period. But user B should
> able to
> ​perform
>  above task after T1.
> This is why we can't
> ​ use​
>  event driven pattern here.

Let's take an example. Say we use event driven pattern here and we have
> substitution from user A to user B which
> ​is
>  defined at T0, starts at T1 and end at T10. Currently User A has x number
> of in-progress tasks.


Yes, we do need tasks to re-assign the user, but this doesn't mean we need
a separate task to calculate for all users. We can consider this task as
the end of substitution event.

-- 
With regards,
*Manu*ranga Perera.

phone : 071 7 70 20 50
mail : m...@wso2.com
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-06 Thread Manuranga Perera
>
>  There is no such status like "In progress".
>>
>> Isn't "claiming" a task is equivalent to making "in progress".
>
> In your example of call, I'll first claim and then start the call.
>
> No, Unclaimed tasks do not have an Assignee. We are talking about
> substituting assignees here.


Unclaimed  tasks has 'activiti:candidateUsers'. I though substitution
feature will be about moving around unclaimed tasks.
-- 
With regards,
*Manu*ranga Perera.

phone : 071 7 70 20 50
mail : m...@wso2.com
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-06 Thread Hasitha Aravinda
On Mon, Jun 6, 2016 at 9:21 PM, Manuranga Perera  wrote:

> I think as much as possible we have to achieve this with Event-driven
>> architecture rather than schedulers.
>>
> +1
>

​
Let's take an example. Say we use event driven pattern here and we have
substitution from user A to user B which
​is
 defined at T0, starts at T1 and end at T10. Currently User A has x number
of in-progress tasks.

Let's say, engine hasn't received any new task creation requests
​ for​
this particular user during T1-T5. Then engine will not able to reassign
above X tasks back to user B during this time period. But user B should
able to
​perform
 above task after T1.

This is why we can't
​ use​
event driven pattern here.
​


> So we can use simple cache mechanism as below
>
> While this is possible, I don't see why we are trying to shave off a few
> milliseconds from the task creation and make the it more complex even
> sacrificing correctness. Isn't this some premature optimization ?
>
> --
> With regards,
> *Manu*ranga Perera.
>
> phone : 071 7 70 20 50
> mail : m...@wso2.com
>
> ___
> Architecture mailing list
> Architecture@wso2.org
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>
​Thanks,
Hasitha.
-- 
--
Hasitha Aravinda,
Associate Technical Lead,
WSO2 Inc.
Email: hasi...@wso2.com
Mobile : +94 718 210 200
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-06 Thread Vinod Kavinda
> There is no such status like "In progress".
>
> Isn't "claiming" a task is equivalent to making "in progress".
>
> In your example of call, I'll first claim and then start the call.
>

No, Unclaimed tasks do not have an Assignee. We are talking about
substituting assignees here.

>
> On Mon, Jun 6, 2016 at 11:51 AM, Manuranga Perera  wrote:
>
>> I think as much as possible we have to achieve this with Event-driven
>>> architecture rather than schedulers.
>>>
>> +1
>>
>>> So we can use simple cache mechanism as below
>>
>> While this is possible, I don't see why we are trying to shave off a few
>> milliseconds from the task creation and make the it more complex even
>> sacrificing correctness. Isn't this some premature optimization ?
>>
>> --
>> With regards,
>> *Manu*ranga Perera.
>>
>> phone : 071 7 70 20 50
>> mail : m...@wso2.com
>>
>
>
>
> --
> With regards,
> *Manu*ranga Perera.
>
> phone : 071 7 70 20 50
> mail : m...@wso2.com
>



-- 
Vinod Kavinda
Software Engineer
*WSO2 Inc. - lean . enterprise . middleware .*
Mobile : +94 (0) 712 415544
Blog : http://soatechflicks.blogspot.com/
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-06 Thread Manuranga Perera
>
> There is no such status like "In progress".

Isn't "claiming" a task is equivalent to making "in progress".

In your example of call, I'll first claim and then start the call.

On Mon, Jun 6, 2016 at 11:51 AM, Manuranga Perera  wrote:

> I think as much as possible we have to achieve this with Event-driven
>> architecture rather than schedulers.
>>
> +1
>
>> So we can use simple cache mechanism as below
>
> While this is possible, I don't see why we are trying to shave off a few
> milliseconds from the task creation and make the it more complex even
> sacrificing correctness. Isn't this some premature optimization ?
>
> --
> With regards,
> *Manu*ranga Perera.
>
> phone : 071 7 70 20 50
> mail : m...@wso2.com
>



-- 
With regards,
*Manu*ranga Perera.

phone : 071 7 70 20 50
mail : m...@wso2.com
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-06 Thread Manuranga Perera
>
> I think as much as possible we have to achieve this with Event-driven
> architecture rather than schedulers.
>
+1

> So we can use simple cache mechanism as below

While this is possible, I don't see why we are trying to shave off a few
milliseconds from the task creation and make the it more complex even
sacrificing correctness. Isn't this some premature optimization ?

-- 
With regards,
*Manu*ranga Perera.

phone : 071 7 70 20 50
mail : m...@wso2.com
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-05 Thread Vinod Kavinda
Please find my comments inline..

>
>
>> *Task Reassignment at the end of substitution period*
>> When a user that was on vacation come back, we will not assign his past
>> tasks back to himself from his substitute. Since we cannot track the
>> progress of the tasks once it is assigned to a user, this is not reasonable.
>> We will stop substitution of future tasks at this point.
>>
>
> ​That's not typically what is required.  We should at least reassign tasks
> that are not yet InProgess. ​ But Ready and Reserved tasks should be
> reassigned to the user returned in any case.
>

Totally agreed to this if it is in a WS-Human task context.

We are considering User tasks in BPMN here. In Activiti there is no such
notion as task status. There is no such status like "In progress". Once a
task is assigned to someone, we have to assume that he is working on it.
If we automatically reassign tasks to original user, it will be a mess.
(eg: in call centers, user A assign his tasks to B and go out. B is on a
call for a task came from B. While he is on call A comes back, tasks get
reassigned back to him. He will make another call for the same task, since
the task is not completed, complete mix up!!)

I don't think we should automatically reassign without the assignee
consent. If we really need, we can have a API that a user can retrieve his
own tasks thet were substituted to someone else.

Vinod Kavinda
Software Engineer
*WSO2 Inc. - lean . enterprise . middleware .*
Mobile : +94 (0) 712 415544
Blog : http://soatechflicks.blogspot.com/
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-02 Thread Nandika Jayawardana
Shall we provide a UI from bpmn explorer for the user substitution. We
should also provide the capability to view a substitute defined for a given
user. So we need to introduce the substitute lookup API as well. Shall we
define a permission  for the substitute operation as well. In case the user
calling the substitute operation is not the owner of the tasks, then they
should have the substitute permission.

Regards
Nandika

On Thu, Jun 2, 2016 at 1:13 PM, Frank Leymann  wrote:

> Fantastic!  Thanks!
>
>
> Best regards,
> Frank
>
> 2016-06-02 5:21 GMT+02:00 Vinod Kavinda :
>
>> Hi Frank,
>> Yes, the determining of users as substitutes will be a transitive process.
>>
>> Regards,
>> Vinod
>>
>> On Wed, Jun 1, 2016 at 10:48 PM, Frank Leymann  wrote:
>>
>>> Hi Vinod,
>>>
>>> great that you are implementing it!
>>>
>>> As described in [1], substitution processing is transitive. Your diagram
>>> doesn't explicitly depict this transitive processing: are you considering
>>> this but the diagram leaves that out for clarity?
>>>
>>>
>>> [1] https://mail.google.com/mail/u/0/#sent/154edd36fb959ac5
>>>
>>>
>>> Best regards,
>>> Frank
>>>
>>> 2016-06-01 11:25 GMT+02:00 Vinod Kavinda :
>>>
 Hi all,

 In BPMN user tasks, if a task assignee became unavailable (eg: on
 vacation), assigned tasks are getting delayed and anyone else cannot work
 on them either.

 This feature is to provide an API to allow automatically substitute the
 user in future tasks and to reassign the existing tasks. Follow the below
 diagrams for more details.

 *Upon user unavailable request*




 *​​​*substitute(user, tasks, from, to, substitute) :

- user - user going to be unavailable
- tasks - optional. list of tasks that should reassign. All tasks
will be reassigned if not provided
- from, to - optional. unavailable period. if not provided, current
timestamp to forever
- substitute - optional. user who tasks getting assigned to. the
already defined user is used if not provided

 updateSubstitute() : update the DB with user unavailability and
 substitute user.

 getTaskList(user) : get the tasks with the user as assignee

 delegateTasks() : change assignee to substitute

 scheduleForrevert(from,to) : start a scheduler, to update the DB at the
 'to' and 'from' timestamps.

 *New Task creation*

 All the task creation events will be validated by this listener after
 this feature is enabled.

 After the given time period, the database will be updated. After this
 point user won't be substituted.

 Please provide your suggestions.

 Regards,
 Vinod
 ​






 --
 Vinod Kavinda
 Software Engineer
 *WSO2 Inc. - lean . enterprise . middleware .*
 Mobile : +94 (0) 712 415544
 Blog : http://soatechflicks.blogspot.com/


>>>
>>
>>
>> --
>> Vinod Kavinda
>> Software Engineer
>> *WSO2 Inc. - lean . enterprise . middleware .*
>> Mobile : +94 (0) 712 415544
>> Blog : http://soatechflicks.blogspot.com/
>>
>>
>


-- 
Nandika Jayawardana
WSO2 Inc ; http://wso2.com
lean.enterprise.middleware
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-02 Thread Frank Leymann
Fantastic!  Thanks!


Best regards,
Frank

2016-06-02 5:21 GMT+02:00 Vinod Kavinda :

> Hi Frank,
> Yes, the determining of users as substitutes will be a transitive process.
>
> Regards,
> Vinod
>
> On Wed, Jun 1, 2016 at 10:48 PM, Frank Leymann  wrote:
>
>> Hi Vinod,
>>
>> great that you are implementing it!
>>
>> As described in [1], substitution processing is transitive. Your diagram
>> doesn't explicitly depict this transitive processing: are you considering
>> this but the diagram leaves that out for clarity?
>>
>>
>> [1] https://mail.google.com/mail/u/0/#sent/154edd36fb959ac5
>>
>>
>> Best regards,
>> Frank
>>
>> 2016-06-01 11:25 GMT+02:00 Vinod Kavinda :
>>
>>> Hi all,
>>>
>>> In BPMN user tasks, if a task assignee became unavailable (eg: on
>>> vacation), assigned tasks are getting delayed and anyone else cannot work
>>> on them either.
>>>
>>> This feature is to provide an API to allow automatically substitute the
>>> user in future tasks and to reassign the existing tasks. Follow the below
>>> diagrams for more details.
>>>
>>> *Upon user unavailable request*
>>>
>>>
>>>
>>>
>>> *​​​*substitute(user, tasks, from, to, substitute) :
>>>
>>>- user - user going to be unavailable
>>>- tasks - optional. list of tasks that should reassign. All tasks
>>>will be reassigned if not provided
>>>- from, to - optional. unavailable period. if not provided, current
>>>timestamp to forever
>>>- substitute - optional. user who tasks getting assigned to. the
>>>already defined user is used if not provided
>>>
>>> updateSubstitute() : update the DB with user unavailability and
>>> substitute user.
>>>
>>> getTaskList(user) : get the tasks with the user as assignee
>>>
>>> delegateTasks() : change assignee to substitute
>>>
>>> scheduleForrevert(from,to) : start a scheduler, to update the DB at the
>>> 'to' and 'from' timestamps.
>>>
>>> *New Task creation*
>>>
>>> All the task creation events will be validated by this listener after
>>> this feature is enabled.
>>>
>>> After the given time period, the database will be updated. After this
>>> point user won't be substituted.
>>>
>>> Please provide your suggestions.
>>>
>>> Regards,
>>> Vinod
>>> ​
>>>
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Vinod Kavinda
>>> Software Engineer
>>> *WSO2 Inc. - lean . enterprise . middleware .*
>>> Mobile : +94 (0) 712 415544
>>> Blog : http://soatechflicks.blogspot.com/
>>>
>>>
>>
>
>
> --
> Vinod Kavinda
> Software Engineer
> *WSO2 Inc. - lean . enterprise . middleware .*
> Mobile : +94 (0) 712 415544
> Blog : http://soatechflicks.blogspot.com/
>
>
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] BPMN - Bulk Task Reassignment, Substitution feature

2016-06-01 Thread Frank Leymann
Hi Vinod,

great that you are implementing it!

As described in [1], substitution processing is transitive. Your diagram
doesn't explicitly depict this transitive processing: are you considering
this but the diagram leaves that out for clarity?


[1] https://mail.google.com/mail/u/0/#sent/154edd36fb959ac5


Best regards,
Frank

2016-06-01 11:25 GMT+02:00 Vinod Kavinda :

> Hi all,
>
> In BPMN user tasks, if a task assignee became unavailable (eg: on
> vacation), assigned tasks are getting delayed and anyone else cannot work
> on them either.
>
> This feature is to provide an API to allow automatically substitute the
> user in future tasks and to reassign the existing tasks. Follow the below
> diagrams for more details.
>
> *Upon user unavailable request*
>
>
>
>
> *​​​*substitute(user, tasks, from, to, substitute) :
>
>- user - user going to be unavailable
>- tasks - optional. list of tasks that should reassign. All tasks will
>be reassigned if not provided
>- from, to - optional. unavailable period. if not provided, current
>timestamp to forever
>- substitute - optional. user who tasks getting assigned to. the
>already defined user is used if not provided
>
> updateSubstitute() : update the DB with user unavailability and substitute
> user.
>
> getTaskList(user) : get the tasks with the user as assignee
>
> delegateTasks() : change assignee to substitute
>
> scheduleForrevert(from,to) : start a scheduler, to update the DB at the
> 'to' and 'from' timestamps.
>
> *New Task creation*
>
> All the task creation events will be validated by this listener after this
> feature is enabled.
>
> After the given time period, the database will be updated. After this
> point user won't be substituted.
>
> Please provide your suggestions.
>
> Regards,
> Vinod
> ​
>
>
>
>
>
>
> --
> Vinod Kavinda
> Software Engineer
> *WSO2 Inc. - lean . enterprise . middleware .*
> Mobile : +94 (0) 712 415544
> Blog : http://soatechflicks.blogspot.com/
>
>
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture