As tarefas são expressas utilizando-se um dialeto XML (Extensible Markup Language) denominado xJCL (XML Job Control Language). Esse dialeto possui construções para expressar todas as informações necessárias para tarefas de cálculo intenso e em lote, embora alguns elementos do xJCL sejam aplicáveis apenas a tarefas de cálculo intenso e em lote. Consulte o xJCL fornecido com os aplicativos de amostra, a tabela xJCL e o documento do esquema xJCL XSD para obter informações adicionais sobre o xJCL. A definição de xJCL de uma tarefa não faz parte do aplicativo de Compute Grid, mas é construída separadamente e enviada para o planejador de tarefa para execução. O planejador de tarefa utiliza as informações no xJCL para determinar onde e quando a tarefa deve ser executada.
A tabela a seguir resume os elementos xJCL:
Elemento | Cálculo intenso | Batch | Subelemento | Atributos | Descrição |
---|---|---|---|---|---|
tarefa | Y | Y | não-aplicável | não-aplicável | Define o escopo da descrição de uma tarefa do batch. |
não-aplicável | Y | Y | não-aplicável | nome | Nome da tarefa. Esse nome deve corresponder ao nome do aplicativo de Compute Grid. |
não-aplicável | Y | Y | jndi-name | não-aplicável | O nome de JNDI fornecido ao bean de sessão sem preservação de estado do controlador de tarefas quando o aplicativo de Compute Grid é implementado no WebSphere Application Server. |
não-aplicável | Y | Y | step-scheduling-criteria | Consulte o elemento step-scheduling-criteria | não-aplicável |
não-aplicável | A | Y | checkpoint-algorithm | Consulte o elemento checkpoint-algorithm | não-aplicável |
não-aplicável | Y | Y | job-step | Consulte o elemento job-step | não-aplicável |
job-step | não-aplicável | não-aplicável | não-aplicável | não-aplicável | não-aplicável |
não-aplicável | Y++ | Y | não-aplicável | nome | Nome da etapa. Essas informações são retornadas nos comandos operacionais. |
não-aplicável | A | Y | step-scheduling | Consulte o elemento step-scheduling | Permite a lógica condicional com base nos códigos de retorno de etapas que determinam se a etapa de lote deve ser chamada ou não |
não-aplicável | A | Y | checkpoint-algorithm-ref | Consulte o elemento checkpoint-algorithm-ref | Especifica o algoritmo de ponto de verificação a ser utilizado para a etapa da tarefa do batch. |
não-aplicável | Y | A | nome de classe | não-aplicável | Nome completo da classe que implementa a tarefa de computação intensiva. |
não-aplicável | A | Y | JNDI-name | não-aplicável | Nome de JNDI lógico do início do bean da etapa de lote do bean de entidade que o ambiente de execução em lote utilizará para carregar a etapa de tarefa do lote. |
não-aplicável | não-aplicável | não-aplicável | props | Consulte o elemento props | Propriedades Name-value a serem transmitidas para a etapa |
não-aplicável | A | Y | batch-data-streams | Consulte o elemento batch-data-streams | Uma seqüência de elementos bds. Cada bds contém as informações de configuração necessárias para criar um fluxo de dados em lote. |
prop | Y | Y | não-aplicável | não-aplicável | Uma única instância de um par nome-valor que serve como uma propriedade. |
não-aplicável | não-aplicável | não-aplicável | não-aplicável | nome | Nome da propriedade. |
não-aplicável | não-aplicável | não-aplicável | não-aplicável | Value | Valor da propriedade. |
props | Y | Y | não-aplicável | não-aplicável | Série de elementos prop utilizados para transmitir as propriedades do par nome-valor para as etapas, o bds, algoritmos de ponto de verificação e algoritmos de resultados. |
não-aplicável | não-aplicável | não-aplicável | prop | Consulte o elemento prop | não-aplicável |
bds | A | Y | não-aplicável | não-aplicável | Única instância de uma implementação do fluxo de dados em lote disponibilizada para utilização pela tarefa do batch. |
não-aplicável | não-aplicável | não-aplicável | logical-name | não-aplicável | Uma cadeia incorporada na etapa de batch e utilizada por ela para solicitar do ambiente de tempo de execução em lote uma instância do fluxo de dados em lote específica. |
não-aplicável | não-aplicável | não-aplicável | impl-class | não-aplicável | Nome completo da classe de implementação do fluxo de dados em lote. |
não-aplicável | não-aplicável | não-aplicável | props | Consulte os elementos Props | Lista de propriedades transmitidas para a classe de implementação do fluxo de dados em lote. |
batch-data-streams | A | Y | não-aplicável | não-aplicável | Série de elementos bds |
não-aplicável | não-aplicável | não-aplicável | bds | consulte o elemento bds | não-aplicável |
step-scheduling | A | Y | não-aplicável | não-aplicável | Pode ser aplicado a etapas de tarefas para criar fluxos condicionais baseados em código de retorno de uma tarefa em lote. Pode comparar valores de códigos de retorno definidos para essa tarefa em lote para decidir se uma etapa deve ser chamada ou não durante o processamento de uma tarefa em lote. Os valores dos códigos de retorno são comparados utilizando-se o elemento return code-expression. |
não-aplicável | não-aplicável | não-aplicável | returncode- expression | consulte returncode-expression | Returncode- expression a ser avaliado. |
não-aplicável | não-aplicável | não-aplicável | não-aplicável | condição | Se houver mais de um elemento returncode-expression no elemento step-scheduling, os operadores condicionais poderão ser aplicados a eles. Os operadores condicionais suportados são: AND, OR. |
returncode-expression | A | Y | não-aplicável | não-aplicável | Utilizado em tags de planejamento de etapas para decidir se uma etapa de tarefa em lote será executada com base em códigos de retorno de outras etapas em lote. |
não-aplicável | não-aplicável | não-aplicável | não-aplicável | step | Nome da etapa cujo código de retorno será comparado nesta expressão. |
não-aplicável | não-aplicável | não-aplicável | não-aplicável | operador | Operador a ser utilizado para a expressão de código de retorno; os operadores suportados são: eq (igual a), lt (menor que), gt (maior que), le (menor ou igual a), ge (maior ou igual a). |
não-aplicável | não-aplicável | não-aplicável | não-aplicável | Value | O valor com o qual comparar o código de retorno. |
step-scheduling-criteria | A | Y | não-aplicável | não-aplicável | Descreve a seqüência na qual as etapas da tarefa serão processadas. O planejamento seqüencial atual é suportado e as etapas são chamadas na ordem de exibição no xJCL. |
não-aplicável | não-aplicável | não-aplicável | scheduling-mode | não-aplicável | Seqüência na qual chamar as etapas: o único valor possível é sequential |
checkpoint-algorithm | A | Y | não-aplicável | não-aplicável | Declara um algoritmo de ponto de verificação que pode ser utilizado para uma etapa de tarefa do batch. |
não-aplicável | não-aplicável | não-aplicável | não-aplicável | nome | Nome do algoritmo. |
não-aplicável | não-aplicável | não-aplicável | nome de classe | não-aplicável | Classe que implementa este algoritmo. |
não-aplicável | não-aplicável | não-aplicável | props | consulte o elemento props | Seqüência de elementos props do algoritmo de ponto de verificação. |
checkpoint-algorithm-ref | A | Y | não-aplicável | não-aplicável | Referência a um elemento de algoritmo de ponto de verificação. |
não-aplicável | não-aplicável | não-aplicável | não-aplicável | nome | Nome do algoritmo de ponto de verificação que está sendo referenciado. |
não-aplicável | não-aplicável | não-aplicável | props | consulte o elemento props | Seqüência de elementos prop para o algoritmo de ponto de verificação. |
+ Somente tarefas de cálculo intenso de etapa única são suportadas.
A tabela a seguir resume os elementos xJCL:
Elemento | Cálculo Intenso J2EE | Lote J2EE | Utilitário Nativo | Subelemento | Atributos | Descrição |
---|---|---|---|---|---|---|
tarefa | Y | Y | A | Define o escopo da descrição de uma tarefa do batch. | ||
Y | Y | Y | nome | Nome da tarefa. Esse nome deve corresponder ao nome do aplicativo de Compute Grid | ||
Y | Y | Y | accounting | Atributo de informações adicionais de contabilidade. | ||
Y | Y | Y | classe | Atributo adicional da classe de job, que identifica a classe de job em que a tarefa será executada. | ||
Y | Y | Y | default-application-name | O nome do aplicativo a ser utilizado quando nenhum atributo application-name de etapa da tarefa for localizado. | ||
Y | Y | A | jndi-name | O nome de JNDI fornecido ao bean de sessão sem estado do controlador de tarefas quando o aplicativo de Compute Grid é implementado no WebSphere Application Server. | ||
Y | Y | Y | critérios de job-scheduling | required-capability | O required-capability da tarefa, que deve ser definido em um terminal para a tarefa a ser despachada para esse terminal. | |
Y | Y | A | critérios de step-scheduling |
consulte o elemento step-scheduling-criteria | ||
A | Y | A | checkpoint-algorithm | consulte o elemento checkpoint-algorithm | ||
A | Y | Y | results-algorithm | consulte o elemento results-algorithms | ||
Y | Y | Y | substitution-props++ |
consulte o elemento prop | O required-capability da tarefa, que deve ser definido em um terminal para a tarefa a ser despachada para esse terminal | |
job-step | ||||||
S* | Y | A | nome | Nome opcional da etapa. Essas informações são retornadas nos comandos operacionais. | ||
S* | Y | A | application-name | Nome opcional do aplicativo executado pela etapa. O nome do atributo é utilizado se application-name for omitido e o atributo no nível da tarefa default-application-name for omitido. | ||
A | Y | A | step-scheduling | Consulte o elemento step-scheduling | Permite a lógica condicional baseada em códigos de retorno de etapas que determinam se a etapa de lote deve ser chamada ou não. | |
A | Y | A | JNDI-name | Nome de JNDI lógico do início do bean da etapa de lote do bean de entidade que o ambiente de execução em lote utilizará para carregar a etapa da tarefa em lote. | ||
Y | Y | A | nome de classe | Nome completo da classe que implementa a tarefa de computação intensiva. | ||
Y | A | A | checkpoint-algorithm-ref | Especifica o algoritmo de ponto de verificação a ser utilizado para a etapa da tarefa do batch. | ||
A | Y | A | results-ref | Consulte o elemento results-ref | Especifica o algoritmo de resultados a ser utilizado para a execução da etapa da tarefa do lote. | |
A | Y | A | batch-data-streams | Consulte o elemento batch-data-streams | Uma seqüência de elementos bds. Cada bds contém as informações de configuração necessárias para criar um fluxo de dados de batch. | |
Y | Y | A | props | Consulte o elemento props | Propriedades Name-value a serem transmitidas para a etapa. | |
A | A | Y | exec | Consulte o elemento exec | Identifica a executável associada à etapa da tarefa. | |
A | A | Y | env-entries | Consulte o elemento env-entries | Identifica as propriedades ambientais associadas à etapa da tarefa. | |
prop | Y | Y | A | Uma única instância de um par nome-valor que serve como uma propriedade. | ||
nome | Nome da propriedade. | |||||
Value | Valor da propriedade. | |||||
props | Y | Y | A | prop | Consulte o elemento prop | |
env-entries | A | A | Y | Série de elementos prop utilizados para transmitir as propriedades do par nome-valor para as etapas, o bds, algoritmos de ponto de verificação e algoritmos de resultados. | ||
env-var | Consulte o elemento env-var | |||||
exec | A | A | Y | Série de elementos prop utilizados para transmitir as propriedades do par nome-valor para as etapas, o bds, algoritmos de ponto de verificação e algoritmos de resultados. | ||
executable | O nome da executável associada à etapa da tarefa. | |||||
arg | Consulte o elemento line | |||||
line | A | A | Y | Argumentos da linha de comandos transmitidos para o executável da etapa da tarefa. | ||
bds | A | Y | A | Única instância de uma implementação do fluxo de dados em lote disponibilizada para a tarefa em lote. | ||
logical-name | Uma cadeia incorporada na etapa de lote e utilizada por ela para solicitar do ambiente de tempo de execução em lote uma instância do fluxo de dados em lote específica. | |||||
impl-class | Nome completo da classe da classe de implementação do fluxo de dados em lote. | |||||
props | Consulte os elementos props | Lista de propriedades transmitidas para a classe de implementação do fluxo de dados em lote. | ||||
batch-data-streams | A | Y | A | Série de elementos bds | ||
bds | Consulte o elemento bds | |||||
step-scheduling | A | Y | Aplica-se a etapas de tarefas para criar fluxos condicionais baseados em código de retorno de uma tarefa em lote. Compara valores de códigos de retorno definidos para essa tarefa em lote para decidir se uma etapa será chamada ou não durante o processamento de uma tarefa em lote. Os valores dos códigos de retorno são comparados utilizando o elemento returncode-expression. | |||
returncode- expression | consulte returncode-expression | Returncode- expression a ser avaliado. | ||||
condição | Se houver mais de um elemento returncode-expression no elemento step-scheduling, os operadores condicionais serão aplicados a eles. Os operadores condicionais suportados são: AND, OR. | |||||
returncode-expression | A | Y | Utilizado em tags step-scheduling para decidir se uma etapa de tarefa do batch deve ser executada com base em códigos de retorno de outras etapas da tarefa. | |||
step | Nome da etapa cujo código de retorno será comparado nesta expressão. | |||||
operador | Operador a ser utilizado para a expressão de código de retorno; os operadores suportados são: eq (igual a), lt (menor que), gt (maior que), le (menor ou igual a), ge (maior ou igual a). | |||||
Value | O valor com o qual comparar o código de retorno. | |||||
step-scheduling-criteria | A | Y | Descreve a seqüência na qual as etapas da tarefa serão processadas. O planejamento seqüencial atual é suportado; ou seja, as etapas são chamadas na ordem em que aparecem no xJCL. | |||
scheduling-mode | Seqüência na qual chamar as etapas, o único valor possível no momento é sequential. | |||||
checkpoint-algorithm | A | Y | Declara um algoritmo de ponto de verificação que pode ser utilizado para uma etapa de tarefa do batch. | |||
nome | Nome do algoritmo. | |||||
nome de classe | Classe que implementa este algoritmo. | |||||
props | Consulte o elemento props | Seqüência de elementos prop do algoritmo de ponto de verificação. | ||||
checkpoint-algorithm-ref | A | Y | Referência a um elemento de algoritmo de ponto de verificação. | |||
nome | Nome do algoritmo de ponto de verificação que está sendo referenciado. | |||||
props | Consulte o elemento props | Seqüência de elementos prop do algoritmo de ponto de verificação. |
++ O elemento xJCL substitution-props é discutido abaixo.
<checkpoint-algorithm-ref name="${checkpoint}" />
<substitution-props> <prop name="wsbatch.count" value="5" /> <prop name="checkpoint" value="timebased" /> <prop name="checkpointInterval" value="15" /> <prop name="postingsDataStream" value="${was.install.root}${file.separator}temp${file.separator}postings" /> </substitution-props>
A substituição de variáveis simbólicas ocorre no tempo de execução. No tempo de execução, a cadeia ${variable-name} é substituída pelo valor da propriedade quando o xJCL é enviado para execução. Utilizando as propriedades do exemplo anterior, a cadeia ${checkpoint} é substituída pela cadeia baseada no tempo antes do envio da tarefa.
Variáveis simbólicas podem ser indiretas. Por exemplo: name=FILENAME value=${${filename}} utilizado com o par nome/valor filename=postingsDataStream utiliza o mesmo resultado de especificar name=FILENAME value=${postingsDataStream}.
Variáveis simbólicas também podem ser compostas. Por exemplo, name=postingsDataStream value=${was.install.root}${file.separator}temp${file.separator}postings.
Os pares nome/valor não devem ser definidos no elemento substitution-props do documento de tarefas. Os pares nome/valor props definidos no elemento substitution-props são valores padrão para as variáveis denominadas. Se não forem definidos no elemento substitution-props, os pares nome/valor devem ser transmitidos nas APIs do planejador de tarefas quando a tarefa for enviada ou definidas nas propriedades de sistema para a JVM. Cada variável simbólica definida no corpo de um documento de tarefas deve ser resolvido para que o xJCL seja considerado válido. Cada par nome/valor definido no documento de tarefas deve ser resolvido para uma variável simbólica localizada no corpo do xJCL para que o xJCL seja considerado válido.
Se os pares nome/valor forem definidos no documento do xJCL e transmitidos para as APIs do planejador de tarefas no momento do envio da tarefa, os pares nome/valor transmitidos nas APIs do Planejador de Tarefas irão sobrepor os valores padrão definidos no documento do xJCL. Se pares nome/valor não forem transmitidos nas APIs do planejador de tarefas nem definidos como padrões no documento do xJCL, os pares nome/valor para as variáveis simbólicas devem ser definidos nas propriedades da JVM do sistema para que o xJCL seja considerado válido.