0 Replies Latest reply on Mar 16, 2018 12:09 PM by makvell

    duplicate database records on set task variables

    makvell

      I have a project with data model that has a "Client" object (JPA) with "documents" field (Set of ClDocument (JPA) objects).

      they are described as follows:

       

      @javax.persistence.Entity
      public class Client implements java.io.Serializable {
      
      
         @javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.AUTO, generator = "CLIENT_ID_GENERATOR")
         @javax.persistence.Id
         @javax.persistence.SequenceGenerator(sequenceName = "CLIENT_ID_SEQ", name = "CLIENT_ID_GENERATOR")
         private java.lang.Long id;
      
      
         @javax.persistence.OneToMany(fetch = javax.persistence.FetchType.EAGER, cascade = { javax.persistence.CascadeType.ALL })
         private java.util.Set<ClDocument> documents;
         ...
      

       

      @javax.persistence.Entity
      public class ClDocument implements java.io.Serializable {
      
      
         @javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.AUTO, generator = "CLDOCUMENT_ID_GENERATOR")
         @javax.persistence.Id
         @javax.persistence.SequenceGenerator(name = "CLDOCUMENT_ID_GENERATOR", sequenceName = "CLDOCUMENT_ID_SEQ")
         private java.lang.Long id;
      
      
         private java.lang.String name;
         
         @javax.persistence.Column(length = 2000)
         private java.lang.String description;
         ...
      
      

       

      In another project where the model is added as a dependency created the process with one human task, where input and output has name = client, and type = Client. We use an external user interface that communicates with the backend through the rest services deployed on the same server where the bpm is deployed. There is a call that postpones the task with code like this:

       

      RemoteRestRuntimeEngineBuilder builder = RemoteRuntimeEngineFactory.newRestBuilder()
         .addUrl(new URL("URL here"))
         .addUserName("username")
         .addPassword("password")
         .addDeploymentId(DEPLOYMENT_ID)
         .addProcessInstanceId(instanceId);
      engine = builder.disableTaskSecurity().build();
      
      ((RemoteRuntimeEngine) runtime).getRemoteTaskService().addOutputContent(taskId, taskData);
      
      

       

      Our problem - UI sends us an object client with list of 3 documents, but after call this code, in database we see 6 documents. if you take the task again and postpone it again, the number of documents in the database will increase again.

      I do not understand why this happens, maybe it's some known problem or misconfiguration?