6.2. Configurando o Quartz

Antes de configurar o banco de dados no seu servidor de aplicativo, você precisa preparar o banco de dados para o Quartz criar as tabelas Quartz, que irão manter os dados do temporizador, e o arquivo de definição Quartz.
Naturalmente, se você não estiver usando o Quartz (temporizadores) nos seus processos empresariais, ou o Servidor de Execução, você pode ignorar essa seção. Observe que, caso queira replicar os temporizadores nos seus processos empresariais, você precisará usar o componente Quartz.
Para realizar a configuração, siga as instruções a seguir:
  1. Configure o banco de dados. Certifique-se de usar uma das fontes de dados com suporte sem JTA. Observe que, pelo fato do Quartz precisar de uma fonte de dados sem JTA, você não pode usar a fonte de dados do Business Central. No código de exemplo, o PostgreSQL é usado com o usuário bpms e a senha bpms. Esse banco de dados precisará ser conectado ao seu servidor de aplicativo, portanto mantenha um registro nas credenciais e nas informações do banco de dados.
  2. Crie tabelas Quartz no seu banco de dados para permitir a sincronização dos eventos do temporizador. Para fazer isso, utilize o script DDL para o seu banco de dados, disponível no arquivo zip suplementar extraído em QUARTZ_HOME/docs/dbTables.
  3. Crie o arquivo de configuração Quartz quartz-definition.properties no diretório $JBOSS_HOME/PROFILE/configuration/ e defina as propriedades Quartz.

    Exemplo 6.5. Arquivo de configuração Quartz para um banco de dados PostgreSQL

     #============================================================================
    # Configure Main Scheduler Properties  
    #============================================================================
    
    org.quartz.scheduler.instanceName = jBPMClusteredScheduler
    org.quartz.scheduler.instanceId = AUTO
    
    #============================================================================
    # Configure ThreadPool  
    #============================================================================
    
    org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount = 5
    org.quartz.threadPool.threadPriority = 5
    
    #============================================================================
    # Configure JobStore  
    #============================================================================
    
    org.quartz.jobStore.misfireThreshold = 60000
    
    org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT
    org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
    org.quartz.jobStore.useProperties=false
    org.quartz.jobStore.dataSource=managedDS
    org.quartz.jobStore.nonManagedTXDataSource=notManagedDS
    org.quartz.jobStore.tablePrefix=QRTZ_
    org.quartz.jobStore.isClustered=true
    org.quartz.jobStore.clusterCheckinInterval = 20000
    
    #============================================================================
    # Configure Datasources  
    #============================================================================
    org.quartz.dataSource.managedDS.jndiURL=jboss/datasources/psbpmsDS
    org.quartz.dataSource.notManagedDS.jndiURL=jboss/datasources/quartzNotManagedDS
    Observe as fontes de dados, que acomodarão os dois esquemas Quartz, configuradas bem no fim do arquivo.

    Importante

    O intervalo recomendado para a descoberta do cluster é de 20 segundos e está definido em org.quartz.jobStore.clusterCheckinInterval do arquivo quartz-definition.properties. Leve em consideração o impacto no desempenho e modifique a sua configuração, conforme necessário.
    Observe também a propriedade org.quartz.jobStore.driverDelegateClass que define o dialeto DB a ser usado quando comunicando-se com o banco de dados definido (nesse caso, org.quartz.impl.jdbcjobstore.PostgreSQLDelegate. Quando estiver usando Oracle, utilize org.quartz.impl.jdbcjobstore.oracle.OracleDelegate).