Todas as instâncias de um fluxo de processo possuem um objeto dinâmico do .Net chamado "BO (Business Object)", através de um JSON (JavaScript Object Notation), este objeto é criado ao iniciar a instância, percorre por todos os passos do fluxo e pode ser acessado ou modificado de acordo com a necessidade, no caso permitindo em todos os passos a inclusão, exclusão e alteração de suas propriedades e valores.
O .NET Framework é uma iniciativa da empresa Microsoft, que visa uma plataforma única para desenvolvimento e execução de sistemas e aplicações. Uma das linguagens suportadas pelo .Net é a C#, uma linguagem de programação poderosa, multiparadigma, de tipagem forte. Saiba mais.
A Plataforma Beew4y adotou a linguagem C# para permitir que os usuários possam escrever regras, scripts e plug-ins.
JSON (JavaScript Object Notation) é um modelo para armazenamento e transmissão de informações no formato texto. Saiba mais.
Uma nova instância de um fluxo de processo pode ser iniciada manualmente, através de um agendamento ou através de uma chamada para a API do Beew4y. Em todos os casos, um JSON independente se está preenchido ou vazio é enviado como parâmetro para a nova instância. Ao iniciar a instância, internamente o Beew4y converte o JSON enviado para o formato Dynamic do .Net e adiciona suas propriedades e valores no "BO (Business Object)".
Se o JSON enviado à instância for vazio, o "BO (Business Object)" será criado apenas com um propriedade chamada "BPAId". Por exemplo:
JSON de entrada:
{}
Objeto BO criado:

O valor da propriedade "BPAId" é o identificador da instância chamado "GUID", dependendo da necessidade do seu fluxo, utilize está propriedade.
Se o JSON enviado à instância tiver propriedades e valores preenchidos o "BO (Business Object)" será criado com a propriedade "BPAId" e também com as propriedades e valores do JSON. Por exemplo:
JSON de entrada:
{
"Funcionario": "José da Costa",
"CodigoProduto": "105005697",
"NomeProduto": "Notebook XYZ 16 GB RAM",
"Valor": 6700
}
Objeto BO criado:

Saiba mais sobre os componentes de início do BPA para instânciar os fluxos de processo clicando aqui.
Conforme informado anteriormente, o "BO (Business Object)" percorre por todos os passos do fluxo, podendo ser acessado e modificado. A maioria dos componentes disponíveis para o desenho de um fluxo e também os plugins, permitem o acesso e utilização do "BO" para escrever expressões e também scripts de programação Para isso deve se utilizar a sintaxe da linguagem C# suportada pela plataforma Beew4y.
Em um cenário de exemplo que o "BO (Business Object)" possui as seguintes propriedades:

Imagine uma regra de negócio, que caso o valor do produto seja maior R$5000 deve ser aplicado um desconto de R$250. Para obter o valor do produto devemos acessar a propriedade que o representa e utilizar essa propriedade em uma expressão condicional, caso a condição seja verdadeira, devemos calcular o valor com desconto, adicionar este valor em uma nova propriedade do "BO" e alterar o valor da propriedade "DescontoAplicado" para true.
Uma regra de negócio deste tipo, poderia ser resolvida escrevendo um script de programação da seguinte maneira:
{
if (bo.Valor > 5000){ //nesta linha foi acessado o valor de uma propriedade do BO e este valor foi utilizado em uma expressão condicional.
bo.ValorComDesconto = bo.Valor - 250; //nesta linha foi adicionado uma nova propriedade no BO e o valor desta propriedade é o resultado de uma subtração utilizando outra propriedade do BO.
bo.DescontoAplicado = true; //nesta linha foi alterado o valor de propriedade do BO.
}
}
Após a execução do script o "BO (Business Object)" ficará da seguinte forma:

Tome cuidado para não utilizar propriedades inexistentes no "BO (Business Object)". Caso isso aconteça ocorrerá um erro na execução da instância e o fluxo não seguirá para o próximo passo até a correção ser realizada.
Saiba mais sobre os componentes do BPA que permite o acesso e utilização do "BO (Business Object)" para escrever expressões ou scripts de programação, clicando aqui.