Class 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.
    • 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)