All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.flowable.cmmn.api.runtime.CaseInstanceStartEventSubscriptionModificationBuilder Maven / Gradle / Ivy

There is a newer version: 7.1.0
Show newest version
/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.flowable.cmmn.api.runtime;

import java.util.Map;

import org.flowable.cmmn.api.CmmnRuntimeService;

/**
 * A builder API to modify a manually created case start event subscription which was created and registered using the
 * {@link CmmnRuntimeService#createCaseInstanceStartEventSubscriptionBuilder()} builder API.
 * With this API you can modify one or more such subscriptions like migrating to a specific version of a case definition (if you choose to not automatically
 * migrate then to the latest version upon deployment of a new version).
 *
 * @author Micha Kiener
 */
public interface CaseInstanceStartEventSubscriptionModificationBuilder {

    /**
     * Set the case definition using its specific id the manually created subscription is based on. This is mandatory and must be provided.
     *
     * @param caseDefinitionId the id of the case definition the subscription is based on (an exact version of it)
     * @return the builder to be used for method chaining
     */
    CaseInstanceStartEventSubscriptionModificationBuilder caseDefinitionId(String caseDefinitionId);
    
    /**
     * Set the tenant id in case you are running in a multi tenant environment and the event model needs to be retrieved from a specific tenant.
     *
     * @param tenantId the id of the tenant the subscription is created for
     * @return the builder to be used for method chaining
     */
    CaseInstanceStartEventSubscriptionModificationBuilder tenantId(String tenantId);

    /**
     * Adds a specific correlation parameter value for the subscription to be modified. If you register the same correlation parameter values as when creating
     * and registering the event subscription, only that particular one will be modified with this builder.
     * If you want to modify all manually created subscriptions, don't register any correlation parameter values, which would result in all matching
     * the provided case definition and event-registry start event will be modified.
     *
     * @param parameterName the name of the correlation parameter
     * @param parameterValue the value of the correlation parameter
     * @return the builder to be used for method chaining
     */
    CaseInstanceStartEventSubscriptionModificationBuilder addCorrelationParameterValue(String parameterName, Object parameterValue);

    /**
     * Registers a list of correlation parameter values for the subscription(s) to be modified.
     *
     * @param parameters the map of correlation parameter values to be registered for the subscription
     * @return the builder to be used for method chaining
     */
    CaseInstanceStartEventSubscriptionModificationBuilder addCorrelationParameterValues(Map parameters);

    /**
     * Migrate all the matching event subscriptions to the latest case definition, which should be done if you want to manually upgrade the subscriptions
     * to the latest version of the case definition.
     */
    void migrateToLatestCaseDefinition();

    /**
     * Migrate all matching event subscriptions to the specific case definition.
     * @param caseDefinitionId the id of the case definition to migrate to
     */
    void migrateToCaseDefinition(String caseDefinitionId);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy