Just change the subject to discuss on one point. 

=> How make workflow application (in one image) delegate activation (and/or 
subworkflow) to another image.


>> Yes sure. But at this is an important requirement for me, I prefer to
>> talk about it first :)
> 
> Distributed systems design is a different subject. Different constraints,
> different solutions. 

I don’t really agree. Of course you’re right but I see little interest in 
having a process engine in a centralized manner (today is more about 
decentralized solution than ever and we have smalltalk heritage about message 
passing). 

Because, in centralized workflow, complexity is the proper use of the tool. You 
work in a decentralized world with a centralized tool. You have to plug to 
existing IS through mails, sms, REST API or whatever… All workflow systems I’ve 
seen (I’m not expert though) are that way and quite boring to use by the way… 
Then, we enter the real of model transformation so as to be interoperable. 
Whereas I kind of like the concepts, I find it’s like programming in C vs. in 
Smalltalk fo information exchange… Slow, couter intuitive, web based most of 
the time… 

So to come back to the subject, to me, to have a powerful workflow engine, one 
has first to consider actors on several applications hence images (at starts). 
Of course several actors on the same image can be interesting, so doing it 
first has sense.

To me, but I know I see things superficially (I’m not a programmer), we could 
have something quite simple that does the job. 

Of course it raises questions like we had with Max. I copy below as my response 
(see PS). 
But to sumup, the simple version I need will be one person runs a workflow in a 
RootFrame. Then he has activities he is responsible but I can delegate some 
other. It’s possible to have subworkflows (but again associated to him or an 
actor in the image). We could « just add » the possibility to activate a 
distant step (or a distant subworkflow). Me (Alice) ask someone else  (Bob) to 
do an activity (a step). 

Here is how I see it:

-My process activate this task (image Alice). I send a signal, a message to the 
appropriate actor (image of Bob). I just wait until I receive other signals 
(progression metadata, resources, deliverables…). Of course cancelling an 
activation is useful there as Bob can never answer.
- I (image Alice) have not a lot of responsibility except waiting. 
- An interesting option would be to be able to ping for completion. 

-The distant image manager (and scheduler) receive a signal, a message so that 
a step has to be done. 
-Bob does the job on its own. Send progressively elements (eventually). He has 
to send at least when the job is over (eventually devliverables as documents, 
informations, …).

The key to me is to consider systems that are distributed (decentralized 
actually) not in computer terms but in human terms… It changes everything as 
less complex. Look at workflow right now, it only allows manual completion of 
activations (step being realized)…. So it’s basically a human clicking on a 
button to tell the system the activity is over ! I would prefer having this 
functionality in a distributed/decentralized manner than having workflow more 
powerful in a centralized manner.

So to me we need to extend and reify better the possibility to delegate and 
clicks on buttons (regarding questions) and of course in a decentralized manner.

I hope you understand what I mean. I hope too not being to naive about such a 
design. But to me, we need two basic building blocks to provide what I (we?) 
need:
- the possibility to inform to someone or to a group (wait no response - but 
eventually information on status like reception, first reading, complete 
reading)
- the possibility to request someone or to a group (I wait for a response)

Don’t hesitate to criticize, discuss, I’m all ears ;-)

Cheers,

Cédrick


PS: The discussion about this point with Max

>> Announcements would certainly be an interesting way to decouple Workflow 
>> from other parts of the system.
>> 
>> 
> 
> Yes an important design decision.
> 
> 
>>> 
>>> I’d like to have an incomingMessageBox for each user and eventually 
>>> transform these message in concrete action (user i/o) ? Or dispatch in 
>>> JobQueues (each user being a distant worker thread). Again, the distinction 
>>> between Scheduler and BPEngin is fuzzy to me.
>> 
>>> 
>>> Does it make sense to you ?
>> 
>> Yes, it does :) What I've asked myself (out of curiosity) is whether you 
>> want to have 
>> 
>> - a dedicated instance for executing workflows
>> 
>> - a distributed workflow with autonomous synchronisation (parts of a 
>> workflow could run on every uses instance, others would need to be executed 
>> through agreement)
>> 
>> - a partially distributed workflow with one or more managing nodes that 
>> control the core steps (e.g. you could designate parts of a workflow as 
>> independant)
>> 
>> 
> 
> I’m not really sure what I want :) . 
> I think the 3 are possible/interesting. What I don’t want is a centralized 
> approach (if it exists, it has to be a very special case).
> 
> My project is about having autonomous personnel systems. My system have a 
> priori several nodes (one application per device). It’s a decentralized 
> (federated/distributed) network of nodes.
> My system interact (exchange information basically through messages) with 
> other species having an equivalent node-based system.
> All is about keeping version history of the information (yes it looks like 
> GIT that I try not to use ^^ - GITHUB could probably be a special kind of 
> node BTW). 
> 
> So I was thinking that one of the exchanged « messages » type could be « 
> activations » sent by someone responsible of the workflow. So :
> 
> At first, I want each personal system to have the BP Engine and be able to 
> execute workflow alone (personal routine, planification, suggestions, …) => 
> normal usage
> Soon, it becomes distributed, for instance if the person have several devices 
> that share the system and the activations.
> 
> And if we consider interactions with other persons (and organisations which 
> are group of persons), then we quickly have distributed (or partially 
> distributed) workflows. 
> Not crystal clear I guess :-) 
> This is a subject I’d like to propose a PhD on. I try to convince a web dev 
> company to develop such a distributed organizational tool but… no positive 
> answer for now). I need to push more !
> So I give it a try by mysel and here we are.
> 
> To better respond to you question, here is a simple use case I imagine:
> - I’m the responsible of the workflow execution.
> - When I assign a task A to someone (or an organization, or something like a 
> smart object), I delegate the realization and then it would be a special case 
> of SubWorkflow that is distant.
> 1) once activated, I send a special message to the other personal system. 
> + deadline/metadata + interaction contracts (do I only wait or can I see the 
> actual progression ? To which level?)
> 2) I wait. 
> — I'm able to ask for the realization status, a degree of completion,  
> —— Depending on the contract (level of agreement), I can have more or less 
> right on seing the realization but that's not the point here. First, I want 
> to delegate and have information about the realization degree (+eventual bad 
> event that could have arose)
> 3) I received the completion message + eventual document, artefacts, 
> summarized information (note that the system respect privacy by defaults - 
> all exchange is under control).
> 4) my workflow continues
> 
> So it’s a bit of a distributed workflow under a central control node but with 
> distributed sub-workflows. It seems doable without too much effort. Maybe 
> declaring DistantSubFlow and having proper history (using messaging 
> functionalities to get status update)
> But again, quickly, that would be very interesting to consider several 
> managing nodes (I guess another PHD on itself for this one). 



Reply via email to