O Parallel Job Manager ( PJM) fornece uma instalação e estrutura para envio e gerenciamento de tarefas transacionais em lote que são executadas como uma coleta coordenada de subtarefas paralelas independentes.
As duas imagens a seguir descrevem a arquitetura do PJM e a sequência de uma tarefa paralelo. Primeiro, uma tarefa de nível superior é enviada ao planejador de tarefas, que determina que ela é uma tarefa paralela e despacha para o PJM. O PJM chama o SPI do parametrizador para ajudar a dividir a tarefa em sub-tarefas. O PJM em seguida chama o SPI de sincronização LogicalTX para indicar o início da transação lógica. O PJM então usa o xJCL da sub-tarefa armazenado no repositório para enviar as sub-tarefas para o Planejador de Tarefas. O planejador de tarefas então despacha as sub-tarefas para os terminais de contêineres em lote para execução. Depois que o PJM detecta que as sub-tarefas começaram a executar, ele chama o SPI de ciclo de vida. Nenhum informação de contexto está disponível como parte desta chamada, diferentemente de outras chamadas SPI. Em seguida, o contêiner em lote executa a sub-tarefa. Quando um ponto de verificação é assumido, o SPI coletor de sub-tarefas é chamado. Este SPI coleta informações de estado relevantes sobre a sub-tarefa. Estes dados são enviados ao SPI analisador de sub-tarefa para interpretação. Depois de todas as sub-tarefas atingirem um estado final, os SPIs de sincronização beforeCompletion e afterCompletion são chamados. O SPI analisador também é chamado para calcular o código de retorno da tarefa.
O seguinte imagem resume a arquitetura do PJM, que mostra onde os SPIs são chamados:
A seguinte imagem mostrou a ordem dos eventos em uma tarefa paralela:
O PJM é um aplicativo Enterprise JavaBeans (EJB) que monitora e gerencia subtarefas paralelas. Sub-tarefas paralelas são aplicativos J2EE em lote. O PJM é uma tarefa do Java 2 Platform, Enterprise Edition (J2EE) em lote de uma etapa. O PJM não processa fluxos de dados em lote mas, em vez disso, envia ou reinicia sub-tarefas sob o controle de propriedades de etapa que identificam a sub-tarefa no repositório da tarefa e a quantidade de sub-tarefas a serem processadas.
Uma tarefa paralela é composta de uma tarefa de nível superior que executa o aplicativo ParallelJobManager e um conjunto e subtarefas que executam a lógica de negócios real. As subtarefas executam a mesma definição de tarefa, mas cada uma com entradas potencialmente distintas. Todas as subtarefas são gerenciadas juntas como uma única tarefa lógica.
As definições de xJCL separadas são necessárias ao o nível superior e às subtarefas. Todas as subtarefas são executadas usando a mesma definição de xJCL. Cada instância da subtarefa pode ser parametrizada com propriedades de substituições distintas.
Uma transação lógica é uma unidade de demarcação de trabalho que amplia a execução de uma tarefa paralela. Seu ciclo de vida corresponde ao ciclo de vida combinado das subtarefas da tarefa paralela. Um mecanismo de extensão possibilita a customização para que os recursos gerenciados do aplicativo sejam controlados nessa unidade de escopo do trabalho para propósitos de confirmação e retrocesso.
O nome de uma tarefa paralela é especificado na xJCL que define uma tarefa de nível superior. A tarefa de nível superior de xJCL pode se originar do sistema de arquivos ou do repositório de tarefas do Compute Grid. O nome da tarefa pode ser parametrizado usando a notação da propriedade de substabelecimento padrão: <job name=”${jobname}” … >.
Um ID da tarefa é formado concatenando um nome da tarefa com um número de sequência gerado pelo sistema. Um nome da tarefa e um número de sequência são separados por dois pontos. O nome da tarefa de uma subtarefa é o ID da tarefa paralela. A xJCL para uma subtarefa pode ser originada apenas do repositório de tarefas do Compute Grid. O xJCL da sub-tarefa deve fornecer a propriedade de substabelecimento do nome da tarefa: <job name="${jobname}" … >