Visão Geral: BOM e Modelo de Objeto de Execução (XOM)
Você pode criar o XOM a partir de diferentes fontes de dados.
O modelo de objeto de execução (XOM) é o modelo contra o qual você executa regras. Ele faz referência aos objetos e dados do aplicativo e é a implementação básica do modelo de objeto de negócios (BOM). Os projetos de regras fazem referência ao XOM.
Por meio do XOM, o mecanismo de regras pode acessar objetos e métodos de aplicativos, que podem ser objetos Java™, dados XML ou dados de outras fontes. Em tempo de execução, as regras que foram escritas contra a BOM são executadas contra a XOM.

Cada elemento BOM (elemento de negócios) deve ter um elemento XOM (elemento de execução) correspondente. A correspondência entre elementos de execução e elementos de negócio não precisa ser um-para-um. Se um elemento de negócio se origina de um elemento de execução, não é necessário especificar um mapeamento explícito. Se um elemento de negócio não se originar de um elemento de execução, você deve especificar um mapeamento BOM-para-XOM.
Existem algumas regras internas para o mapeamento implícito de BOM para XOM quando você gera uma BOM a partir de uma XOM. Por exemplo, uma classe BOM é implicitamente mapeada para uma classe XOM com o mesmo nome.
Projetando uma lista de materiais (BOM) para um modelo Java
Quando seu modelo de dados está em Java, você pode gerar uma lista de materiais (BOM) diretamente a partir desse Modelo de Objeto de Execução Java (XOM). Consulte Mapeamento de uma lista de materiais criada a partir de um XOM Java. Você pode usar anotações XOM para configurar a geração da lista de materiais (BOM). Consulte Anotações XOM. Se você deseja estender a BOM com classes e métodos de negócios, é possível mapear esses elementos de negócios para elementos XOM usando o mapeamento BOM-para-XOM no Editor BOM. Você tem duas maneiras de especificar o mapeamento de BOM para XOM: mapeamento de extensor ou mapeamento ARL. Consulte Linguagem de regras e mapeamento de extensor. Os usuários empresariais podem então criar regras de negócios sem precisar se preocupar com os tipos de dados e a plataforma subjacentes.
No momento da implantação, se o seu aplicativo for um aplicativo Java ou web, o Java XOM será empacotado no aplicativo e não haverá etapas específicas de implantação que você precise realizar para o XOM. Você empacota as regras e a definição do mapeamento BOM-para-XOM em um arquivo de conjunto de regras, que fica disponível para o seu aplicativo de chamada por meio do tempo de execução da regra, o Servidor de Execução de Regras.

Se você não tiver um aplicativo Java ou de chamada pela web, seja porque deseja implantar em um servidor de teste para testes e simulação, seja porque deseja expor suas regras como um Serviço de Decisão Transparente Hospedado (HTDS), então você deve implantar o Java XOM no banco de dados do Servidor de Execução de Regras.
Quando você testa e simula a execução da regra, o Decision Runner acessa o Servidor de Execução de Regras para execução, e o Servidor de Execução de Regras recupera o XOM do banco de dados.
Quando você gera um HTDS, o Rule Execution Server recupera o XOM do banco de dados da mesma maneira (consulte Baixando um arquivo WSDL HTDS ).

Considerações sobre o XOM em tempo de execução
Se você usar um ou mais Java XOMs com seu serviço de decisão e planeja usar o aplicativo web HTDS (Hosted Transparent Decision Service), é necessário projetar cuidadosamente seus XOMs. Seus XOMs são usados em todo o HTDS e estão sujeitos a introspecção e serialização/desserialização:
- A serialização de Java para JSON ou XML ocorre quando você gera solicitações REST de amostra ou fornece respostas SOAP ou REST.
- A desserialização de JSON ou XML para Java ocorre quando você processa solicitações SOAP ou REST.
- A introspecção do modelo ocorre ao gerar um descritor de API ( OpenAPI, WADL ou WSDL).
Como consequência, você deve respeitar os requisitos padrão de serialização ao projetar seus XOMs:
- Certifique-se de que suas classes Java possam ser instanciadas pelos mecanismos de serialização. Defina construtores sem parâmetros para classes Java e getters e setters para todos os campos necessários, ou use anotações para orientar os mecanismos de serialização ao criar objetos a partir de suas classes Java.
- Evite ciclos no seu modelo.
- (Recomendado) Use anotações para ignorar campos e propriedades que não são úteis para o seu serviço de decisão.
- (Opcional) Anote suas classes e/ou métodos Java com anotações Jackson para JSON ou anotações JAXB para XML para influenciar a serialização e desserialização dos parâmetros do serviço de decisão e a geração de descritores de API.
Projetando um BOM para um modelo XML
Quando seu modelo de dados está em XML, você pode gerar uma BOM diretamente a partir desse XOM dinâmico. Consulte Visão geral: modelo de objeto de execução dinâmico (XOM) e tipos simples integrados. Se você deseja estender a BOM com classes e métodos de negócios, é possível mapear esses elementos de negócios para elementos XOM usando o mapeamento BOM-para-XOM no Editor BOM. Você especifica esse mapeamento com o mapeamento ARL. Consulte Linguagem de regras e mapeamento de extensores. Os usuários empresariais podem então criar regras de negócios sem precisar se preocupar com os tipos de dados e a plataforma subjacentes.
No momento da implantação, os arquivos de mapeamento Dynamic XOM e BOM-to-XOM são empacotados com as regras no arquivo do conjunto de regras, que fica então disponível para o aplicativo de chamada por meio do tempo de execução da regra, o Rule Execution Server.
