Há apenas um benefício real, mas é enorme:
Separação de Preocupações .
Portanto, em vez de a lógica de orquestração de processos ser incorporada em nosso sistema, ela se torna uma configuração externa. Um mapa, basicamente. Você pode alterá-lo (muito mais) de forma independente, pode ter vários processos, várias versões de processos, várias versões de vários processos em execução ao mesmo tempo, e isso está pronto para qualquer solução decente.
Historicamente, o conceito de SoC ganhou muitas vezes - a partir do princípio Unix "faça uma coisa, mas faça bem" e sendo aplicado repetidamente - como ter componentes de servidor dedicados como ESB, diferentes sistemas de persistência, armazenamento em cache, balanceamento de carga , monitoramento, como dividir CSS de HTML etc.
Seu processo de negócios e suas regras de fluxo geralmente são ortogonais aos seus dados, "telas" da interface do usuário ou "hierarquia" dos usuários. Portanto, faz todo o sentido desenvolvê-lo e alterá-lo separadamente dos outros aspectos do sistema. Essa foi a premissa em que o BPM apareceu no início dos anos 90.
Desde então, muitas das ferramentas e linguagens foram criadas para suportar esse conceito, sendo a mais conhecida a BPMN - uma linguagem gráfica para criar "fluxogramas" que mapeiam diretamente os processos. Enquanto as pessoas reclamam que é grande e difícil de manejar (com mais de 100 símbolos no vocabulário) e defendendo abordagens modernas como o S-BPM (tem apenas 5 símbolos básicos), a prática atual da indústria é manter o BPMN ou seus derivados, subconjuntos ou irmãos.
Você não parece satisfeito com o BPMN:
Os programadores aqui parecem estar realizando uma quantidade significativa de trabalho na camada de linhas e caixas, o que para mim parece uma linguagem de programação visual muito ruim e básica.
Mas não é tão ruim assim. Existe uma teoria por trás disso. E a versão 2.0 teve uma boa visão das deficiências da 1.0.
Se você vai tão longe, por que não usar apenas algum tipo de linguagem de script?
Paradigma imperativo e linguagens de script nem sempre são a melhor resposta. Como você provavelmente já viu em linguagens declarativas (como HTML, CSS, SQL, Drools ou internas do Nginx, Graddle e Maven, Puppet etc.), o código resultante pode ser muito menor e mais limpo do que uma versão escrita em " linguagem decente, como Java ou C ++ ".
Quanto ao seu outro ponto:
até onde eu sei, há linguagens de programação visual neste momento, completas com condicionais e loops.
você já olhou para os eventos e gatilhos ? O BPMN é um idioma e você precisa aprendê-lo antes de usá-lo, ou pelo menos se familiarizar com ele.
Sob o capô, o BPMN é XML, para que você possa editá-lo manualmente ou gerar. E você pode controlá-los por versão, porque o XML é baseado em texto. No entanto, apenas ter um XML que pode ser traduzido em fluxogramas não soa como o seu goona o ajudará, e isso é correto - escrever seu próprio analisador ou editor, pois é uma tarefa difícil e cara, com benefícios questionáveis.
Felizmente, já existem ferramentas no mercado que fazem exatamente isso.
O Activiti é gratuito e bastante popular entre desenvolvedores e proprietários de empresas, devido ao seu preço inicial ( zero ), disponibilidade de informações e humildade. O último ponto é realmente único, pois a Activi se concentra apenas no gerenciamento de seus processos de negócios, sem tentar vinculá-lo a soluções de pacotes completos. Além disso, é aberto - portanto, você só precisa conhecer Java e REST para colocá-lo em funcionamento. A desvantagem é que o lado do cliente, a integração e a lógica de aplicativos / negócios e toda a arquitetura são deixados para o desenvolvedor; portanto, se sua equipe de desenvolvimento é fraca - prepare-se para a falha. O custo total de propriedade pode ser surpreendentemente alto para uma ferramenta gratuita ;)
Do outro lado do espectro está o Pega (Pega PRPC), o rei dos sistemas BPM (de acordo com Gartner e Forester), que parece surpreendentemente bom para a sua idade. Este gigante e uma pia de cozinha é capaz de CRM, OCR e (se não me engano) recursos de reconhecimento de voz, análise preditiva, gerenciamento de regras de negócios e editor de interface do usuário WYSIWYG. Ele vem com um preço sério, no entanto. Não só custa uma fortuna, mas todo o desenvolvimento está sendo feito em um aplicativo da web, o que significa que você precisa usar o navegador, que é o IE8 (além de alguns plugins, além de hacks feios, como usar o Excel para editar tabelas de dados). Além disso, a edição em Java, Javascript ou HTML / CSS também está sendo feita no navegador da web - então diga adeus aos testes de unidade, ao destaque do código IDE, à refatoração e a todos os seus brinquedos de programação que você adorou.
Bom lado disso? você pode implementar um sistema complexo DENTRO DE SEMANAS [ PDF , consulte a página 22]. E sim, o resultado não é garantido.
IBM tem um pouco recentemente (accoring ao ritmo do tempo empresa) ter comprado Lombardi, e agora está oferecendo uma solução muito competitivo (mas , em seguida, você terá que comprar tudo ibm , you'know). Appian é um fornecedor jovem que tem idéias interessantes e feedback positivo, mas a maneira como são escritas (duas linguagens DSL extras, além da visual) simplesmente não me atrai.
Existem outros jogadores e suas soluções. A maioria deles é horrível. Como - seus olhos, cérebro e coração literalmente sangrariam quando você simplesmente os olha. Portanto, confie em sua coragem e não faça com que seus desenvolvedores e usuários o odeiem.
Nota final:
O sistema BPM é o mesmo para processos, o que o Photoshop é para imagens. Não tenha medo que seja visual. Não faça o trabalho não ser adequado para isso (lembre-se de sites criados inteiramente no Photoshop, que eram quase impossíveis de editar?). Mantenha-o simples e não cometa erros;)