Package org.jbpm.casemgmt.impl.generator

## Class TableCaseIdGenerator

- java.lang.Object
- - org.jbpm.casemgmt.impl.generator.TableCaseIdGenerator

- All Implemented Interfaces:
    `CaseIdGenerator`

      public class TableCaseIdGenerator
      extends Object
      implements CaseIdGenerator

  Data base tabled backed case id generator. The underlying table keeps single entry per case prefix and updates it (by incrementing current value) on each call to generate method. Generation is done with pessimistic locking to secure correctness and since it's the only operation in transaction it should not cause any performance issues.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `TableCaseIdGenerator​(TransactionalCommandService commandService)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected CaseIdInfo` | `findCaseIdInfoByPrefix​(String prefix)` |
    `String` | `generate​(String prefix, Map<String,​Object> optionalParameters)` | Generates next value for given prefix.
    `String` | `getIdentifier()` | Identifier of the generator so it can be found and registered at runtime
    `void` | `register​(String prefix)` | Should be called only one time per given prefix.
    `String` | `resolveCaseIdPrefix​(String expression, Map<String,​Object> optionalParameters)` | Evaluates the current prefix expression to generate the sequence name given the parameters passed
    `void` | `unregister​(String prefix)` | Unregisters given prefix from the generator.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### TableCaseIdGenerator

          public TableCaseIdGenerator​(TransactionalCommandService commandService)

  - ### Method Detail

    - #### getIdentifier

          public String getIdentifier()

      Description copied from interface: `CaseIdGenerator`
      Identifier of the generator so it can be found and registered at runtime
      Specified by:
        `getIdentifier` in interface `CaseIdGenerator`
      Returns:
        unique identifier

    - #### register

          public void register​(String prefix)

      Description copied from interface: `CaseIdGenerator`
      Should be called only one time per given prefix. Subsequent calls with same prefix do not affect the generator state.
      Specified by:
        `register` in interface `CaseIdGenerator`
      Parameters:
        `prefix` - unique prefix that should be used for generating case identifiers

    - #### unregister

          public void unregister​(String prefix)

      Description copied from interface: `CaseIdGenerator`
      Unregisters given prefix from the generator. It's up to generator implementation to either remove the prefix and its latest value permanently or resume it in case of further registration of the same prefix.
      Specified by:
        `unregister` in interface `CaseIdGenerator`
      Parameters:
        `prefix` - unique prefix that should be used for generating case identifiers

    - #### resolveCaseIdPrefix

          public String resolveCaseIdPrefix​(String expression,
                                            Map<String,​Object> optionalParameters)

      Description copied from interface: `CaseIdGenerator`
      Evaluates the current prefix expression to generate the sequence name given the parameters passed
      Specified by:
        `resolveCaseIdPrefix` in interface `CaseIdGenerator`
        `optionalParameters` - parameters needed to evaluate the expression
      Returns:
        returns the sequence name

    - #### generate

          public String generate​(String prefix,
                                 Map<String,​Object> optionalParameters)

      Description copied from interface: `CaseIdGenerator`
      Generates next value for given prefix. Returned value should include the prefix as part of the returned value.
      Specified by:
        `generate` in interface `CaseIdGenerator`
      Parameters:
        `prefix` - unique prefix that should be used for generating case identifiers
        `optionalParameters` - map of optionalParameters that might be helpful for implementation
      Returns:
        complete case id in format (PREFIX-GENERATED_VALUE)

    - #### findCaseIdInfoByPrefix

          protected CaseIdInfo findCaseIdInfoByPrefix​(String prefix)