La SOA, comme son nom l’indique est une architecture fondée sur les services. Mais, à tant parler de services, n’aurait-on pas perdu de vue les processus.

En première approche, on peut définir un processus comme un enchainement de tâches. Un processus peut être coordonné par un acteur unique, on parle alors d’orchestration, ou par coopération entre des acteurs coordonnant chacun une sous partie du processus, on parle alors de chorégraphie. Au sein d’un système d’information, la plupart des processus sont exécutés par orchestration. Et c’est seulement lorsqu’un processus implique plusieurs systèmes d’information (entre partenaires par exemple) que le mode d’exécution par chorégraphie est généralement intéressant.

Les processus les plus simples correspondent à des traitements exécutés de bout en bout, sans interruption. Un tel processus est sans-état, et invoque le plus souvent des services lors de son exécution. Un processus procédural peuvent être implémentés via des langages spécifiques (DSL ou Domain Specific Language) ou bien directement dans un langage classique tel que C# ou Java.

D’autres processus sont avec-état et sont pilotés par des événements. Un tel processus prend naissance suite à un événement métier spécifique (état initial). Le processus suit ensuite son cours en fonction de l’occurrence d’autres événements métiers (états intermédiaires), et s’achève à un moment donné (état final). Un processus événementiel a pour particularité de pouvoir se mettre en sommeil, pendant un temps indéterminé, dans l’attente de tel ou tel événement métier. Un tel processus a bien un début et une fin, mais contrairement au processus procédural, il peut se mettre en attente. Dans ce cas, l’état d’avancement du processus doit être sauvegardé, pour permettre au processus de reprendre plus tard. Les langages classiques ne sont pas adaptés à la description de tels processus. Seul des langages spécifiques comportant la notion d’état d’attente sont adaptés.

La notion de processus permet de décrire des business process, des traitements divers, et pourquoi pas la navigation dans un site Web. Les processus peuvent invoquer des services lors de leur exécution. Cette approche permet de donner une vision globale sur le processus, les détails sont ensuite implémentés par les services. Le processus modélise ce qui est variable dans le temps, alors que les services implémentent ce qui est stable dans le temps.

Finalement, la SOA n’a-t-elle pas pour enjeux de déterminer ce qui est de l’ordre du service et ce qui est de l’ordre du processus ?