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

org.flowable.cmmn.api.runtime.CaseInstanceBuilder 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;

/**
 * @author Joram Barrez
 * @author Tijs Rademakers
 * @author Micha Kiener
 */
public interface CaseInstanceBuilder {

    /**
     * Set the case definition to be used for creating a new case instance by its id. If both the case definition id and the key
     * are set, the id takes precedence and the key will be ignored. At least one of them needs to be specified within the builder.
     *
     * @param caseDefinitionId the id of the case definition the new case should be based on
     * @return the case instance builder for method chaining
     */
    CaseInstanceBuilder caseDefinitionId(String caseDefinitionId);

    /**
     * Set the case definition to be used for creating a new case instance by its key. If both the case definition id and the key
     * are set, the id takes precedence and the key will be ignored. At least one of them needs to be specified within the builder.
     *
     * @param caseDefinitionKey the key of the case definition the new case should be based on
     * @return the case instance builder for method chaining
     */
    CaseInstanceBuilder caseDefinitionKey(String caseDefinitionKey);
    
    /**
     * When looking up for a case definition by key it would first lookup for a case definition
     * within the given parent deployment.
     * Then it would fallback to the latest case definition with the given key.
     * 

* This is typically needed when the CaseInstanceBuilder is called for example * from the process engine to start a case instance and it needs to * lookup the case definition in the same deployment as the process. * Or when starting a case via a case task from the cmmn engine */ CaseInstanceBuilder caseDefinitionParentDeploymentId(String parentDeploymentId); /** * If the new case instance should have a predefined id, you can set it using this method. * If that predefined id is set, it will be used instead of creating a new one automatically. * * @param caseInstanceId the id of the new case instance to be used * @return the case instance builder for method chaining */ CaseInstanceBuilder predefinedCaseInstanceId(String caseInstanceId); CaseInstanceBuilder name(String name); CaseInstanceBuilder businessKey(String businessKey); CaseInstanceBuilder businessStatus(String businessStatus); CaseInstanceBuilder variables(Map variables); CaseInstanceBuilder variable(String variableName, Object value); CaseInstanceBuilder transientVariables(Map transientVariables); CaseInstanceBuilder transientVariable(String variableName, Object value); CaseInstanceBuilder tenantId(String tenantId); /** * Set the owner of the case to be created to the given user id. * @param userId the id of the user to become the owner of the case * @return the case instance builder for method chaining */ CaseInstanceBuilder owner(String userId); /** * Set the assignee of the case to be created to the given user id. * @param userId the id of the user to become the assignee of the case * @return the case instance builder for method chaining */ CaseInstanceBuilder assignee(String userId); /** * Indicator to override the tenant id of the case definition with the provided value. * The tenantId to lookup the case definition should still be provided if needed. */ CaseInstanceBuilder overrideCaseDefinitionTenantId(String tenantId); /** * Allows to pass any variables if they come from a form. * The difference with regular {@link #variables(Map)} is that the start form will be fetched * and the variables matched with the {@link org.flowable.form.api.FormInfo}. */ CaseInstanceBuilder startFormVariables(Map formVariables); /** * Saves the outcome of the start form for the case, if this case should be started out of a start form. * You can additionally save any form variables along with the outcome and start the case using {@link #startWithForm()}. * * @param outcome the outcome to be registered in the builder * @return the case instance builder for method chaining */ CaseInstanceBuilder outcome(String outcome); /** * Set callback id of the newly created case instance. * * @param callbackId id of the callback * @return case instance builder which creates case instance with defined callback id */ CaseInstanceBuilder callbackId(String callbackId); /** * Set callback type of the newly created case instance. * @param callbackType type of the callback * @return case instance builder which creates case instance with defined callback type */ CaseInstanceBuilder callbackType(String callbackType); /** * Set the reference id on the newly create case instance. */ CaseInstanceBuilder referenceId(String referenceId); /** * Set the reference type on the newly create case instance. */ CaseInstanceBuilder referenceType(String referenceType); /** * Set parent case instanceId of the newly create case instance * * @param parentCaseInstanceId parent case instance identifier * @return modified case instance builder which creates case instance with the reference to parent */ CaseInstanceBuilder parentId(String parentCaseInstanceId); /** * If case definition is not found by key in the specified tenant use default tenant search as a fallback * * @return modified case instance builder */ CaseInstanceBuilder fallbackToDefaultTenant(); /** * Once all the information is set using this builder API, the start method will create the case instance, initialize it according all * the data in the builder and then evaluate the case model to start the case. It will be initialized, evaluated and started in a single * transaction, synchronously, so this method returns once the case model will hit a wait state. * * @return the case instance */ CaseInstance start(); /** * Once all the information is set using this builder API, the startAsync method will create the case instance and initialize its data, but * the case model is not yet evaluated, but will be started and evaluated asynchronously in a different transaction. * * @return the case instance as being persisted, but not yet evaluated through the case model */ CaseInstance startAsync(); /** * Once all the information is set using this builder API, the startWithForm method will create the case instance and initialize its data by * additionally using the submitted form variables and handling them with the start form provided with the case model (e.g. validation). * * @return the case instance as being persisted, but not yet evaluated through the case model */ CaseInstance startWithForm(); String getCaseDefinitionId(); String getCaseDefinitionKey(); String getCaseDefinitionParentDeploymentId(); String getPredefinedCaseInstanceId(); String getName(); String getBusinessKey(); String getBusinessStatus(); Map getVariables(); Map getTransientVariables(); String getTenantId(); String getOwner(); String getAssignee(); String getOverrideDefinitionTenantId(); Map getStartFormVariables(); String getOutcome(); String getCallbackId(); String getCallbackType(); String getReferenceId(); String getReferenceType(); String getParentId(); boolean isFallbackToDefaultTenant(); boolean isStartWithForm(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy