## Provided Capabilities (1)

Name | Dynamic | Other provider points
--- | --- | ---
org.wildfly.ejb3.timer-service.timer-persistence-service | true | /subsystem=ejb3/service=timer-service/file-data-store=*

## Attributes (5)

- allow-execution - If this node is allowed to execute timers. If this is false then the timers will be added to the database, and another node may execute them. Note that depending on your refresh interval if you add timers with a very short delay they will not be executed until another node refreshes.

  Type | BOOLEAN
  Default Value | true
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | resource-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "BOOLEAN"
          },
          "description" : "If this node is allowed to execute timers. If this is false then the timers will be added to the database, and another node may execute them. Note that depending on your refresh interval if you add timers with a very short delay they will not be executed until another node refreshes.",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : true,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "resource-services",
          "capability-reference" : null
      }

- database - The type of database that is in use. SQL can be customised per database type. Common values are: postgresql, mysql, mariadb, db2, hsql, h2, oracle, mssql and sybase.

  Type | STRING
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | resource-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "STRING"
          },
          "description" : "The type of database that is in use. SQL can be customised per database type. Common values are: postgresql, mysql, mariadb, db2, hsql, h2, oracle, mssql and sybase.",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "min-length" : 1,
          "max-length" : 2147483647,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "resource-services",
          "capability-reference" : null
      }

- datasource-jndi-name - The datasource that is used to persist the timers

  Type | STRING
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | resource-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "STRING"
          },
          "description" : "The datasource that is used to persist the timers",
          "expressions-allowed" : true,
          "required" : true,
          "nillable" : false,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "resource-services",
          "capability-reference" : null
      }

- partition - The partition name. This should be set to a different value for every node that is sharing a database to prevent the same timer being loaded by multiple noded.

  Type | STRING
  Default Value | default
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | resource-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "STRING"
          },
          "description" : "The partition name. This should be set to a different value for every node that is sharing a database to prevent the same timer being loaded by multiple noded.",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : "default",
          "min-length" : 0,
          "max-length" : 2147483647,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "resource-services",
          "capability-reference" : null
      }

- refresh-interval - Interval between refreshing the current timer set against the underlying database. A low value means timers get picked up more quickly, but increase load on the database.

  Type | INT
  Default Value | -1
  Is the attribute nillable? | true
  Does the attribute allow expression? | true
  Where is the attribute stored? | configuration
  Access Type | read-write
  Is restarted required? | resource-services
  Stability Level | default
  Raw DMR model |
      {
          "type" : {
              "TYPE_MODEL_VALUE" : "INT"
          },
          "description" : "Interval between refreshing the current timer set against the underlying database. A low value means timers get picked up more quickly, but increase load on the database.",
          "expressions-allowed" : true,
          "required" : false,
          "nillable" : true,
          "default" : -1,
          "stability" : "default",
          "access-type" : "read-write",
          "storage" : "configuration",
          "restart-required" : "resource-services",
          "capability-reference" : null
      }

## Operations (2)

- add - Adds a database store

  Request Parameter | Type | Required | Expressions Allowed | Default value | Description
  --- | --- | --- | --- | --- | ---
  allow-execution | BOOLEAN | false | true | true | If this node is allowed to execute timers. If this is false then the timers will be added to the database, and another node may execute them. Note that depending on your refresh interval if you add timers with a very short delay they will not be executed until another node refreshes.
  database | STRING | false | true |  | The type of database that is in use. SQL can be customised per database type. Common values are: postgresql, mysql, mariadb, db2, hsql, h2, oracle, mssql and sybase.
  datasource-jndi-name | STRING | true | true |  | The datasource that is used to persist the timers
  partition | STRING | false | true | default | The partition name. This should be set to a different value for every node that is sharing a database to prevent the same timer being loaded by multiple noded.
  refresh-interval | INT | false | true | -1 | Interval between refreshing the current timer set against the underlying database. A low value means timers get picked up more quickly, but increase load on the database.

  Raw DMR model |
      {
          "operation-name" : "add",
          "description" : "Adds a database store",
          "request-properties" : {
              "allow-execution" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "BOOLEAN"
                  },
                  "description" : "If this node is allowed to execute timers. If this is false then the timers will be added to the database, and another node may execute them. Note that depending on your refresh interval if you add timers with a very short delay they will not be executed until another node refreshes.",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : true,
                  "stability" : "default"
              },
              "database" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "STRING"
                  },
                  "description" : "The type of database that is in use. SQL can be customised per database type. Common values are: postgresql, mysql, mariadb, db2, hsql, h2, oracle, mssql and sybase.",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "min-length" : 1,
                  "max-length" : 2147483647,
                  "stability" : "default"
              },
              "datasource-jndi-name" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "STRING"
                  },
                  "description" : "The datasource that is used to persist the timers",
                  "expressions-allowed" : true,
                  "required" : true,
                  "nillable" : false,
                  "stability" : "default"
              },
              "partition" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "STRING"
                  },
                  "description" : "The partition name. This should be set to a different value for every node that is sharing a database to prevent the same timer being loaded by multiple noded.",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : "default",
                  "min-length" : 0,
                  "max-length" : 2147483647,
                  "stability" : "default"
              },
              "refresh-interval" : {
                  "type" : {
                      "TYPE_MODEL_VALUE" : "INT"
                  },
                  "description" : "Interval between refreshing the current timer set against the underlying database. A low value means timers get picked up more quickly, but increase load on the database.",
                  "expressions-allowed" : true,
                  "required" : false,
                  "nillable" : true,
                  "default" : -1,
                  "stability" : "default"
              }
          },
          "reply-properties" : {},
          "stability" : "default",
          "read-only" : false,
          "runtime-only" : false
      }

- remove - Removes a database store

  Raw DMR model |
      {
          "operation-name" : "remove",
          "description" : "Removes a database store",
          "request-properties" : {},
          "reply-properties" : {},
          "stability" : "default",
          "read-only" : false,
          "restart-required" : "all-services",
          "runtime-only" : false
      }

## Galleon Features

Galleon features are to be used when creating Galleon feature-packs.

- subsystem.ejb3.service.timer-service.database-data-store

      <feature spec="subsystem.ejb3.service.timer-service.database-data-store">
        <param name="database-data-store" value="{resource name}"/>
        <param name="allow-execution" value="{value}"/>
        <param name="database" value="{value}"/>
        <param name="datasource-jndi-name" value="{value}"/>
        <param name="partition" value="{value}"/>
        <param name="refresh-interval" value="{value}"/>
      <feature/>