Hi everyone, I'm having the same problem, i need to create a entity when the process started.
<code>
org.activiti.engine.ActivitiIllegalArgumentException: Value of primary key for JPA-Entity cannot be null
at org.activiti.engine.impl.variable.JPAEntityMappings.getIdString(JPAEntityMappings.java:174) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.variable.JPAEntityMappings.getJPAIdString(JPAEntityMappings.java:87) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.variable.JPAEntityVariableType.setValue(JPAEntityVariableType.java:68) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.setValue(VariableInstanceEntity.java:184) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.create(VariableInstanceEntity.java:80) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.createAndInsert(VariableInstanceEntity.java:67) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.VariableScopeImpl.createVariableInstance(VariableScopeImpl.java:386) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.ExecutionEntity.createVariableInstance(ExecutionEntity.java:1163) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.VariableScopeImpl.createVariableLocal(VariableScopeImpl.java:297) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.VariableScopeImpl.createVariableLocal(VariableScopeImpl.java:284) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.VariableScopeImpl.setVariable(VariableScopeImpl.java:264) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.VariableScopeImpl.setVariable(VariableScopeImpl.java:247) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.persistence.entity.VariableScopeImpl.setVariables(VariableScopeImpl.java:190) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:103) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:37) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57) ~[activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47) [activiti-spring-5.16.4.jar:5.16.4]
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133) [spring-tx-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45) [activiti-spring-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:37) [activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40) [activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35) [activiti-engine-5.16.4.jar:5.16.4]
at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:77) [activiti-engine-5.16.4.jar:5.16.4]
at br.gov.mprj.mgp2.api.business.adapter.ActivitiAdapter.iniciarProcessoParametro(ActivitiAdapter.java:22) [classes/:na]
at specs.incluirParametro.IncluirParametroCamposObrigatoriosAcceptance.incluirParametroComNome(IncluirParametroCamposObrigatoriosAcceptance.java:28) [test-classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
</code>
This is my process definition:
<code>
<process id="processParametro">
<startEvent id="iniciarProcessoParametro"/>
<sequenceFlow sourceRef="iniciarProcessoParametro" targetRef="criarParametro"/>
<serviceTask id="criarParametro"
name="Incluir Parametro"
activiti:expression="${parametroService.create(parametro)}"
activiti:resultVariable="parametroCriado"/>
<sequenceFlow sourceRef="criarParametro" targetRef="avaliarInclusaoParametro"/>
<userTask id="avaliarInclusaoParametro"
name="Avaliar Inclusão de Parametro"/>
<sequenceFlow sourceRef="avaliarInclusaoParametro" targetRef="finalizarProcessoParametro"/>
<endEvent id="finalizarProcessoParametro"/>
</process>
</code>
And this is my java code:
<java>
public Parametro iniciarProcessoParametro(Parametro parametro) {
Map<String, Object> variaveis = new HashMap<>();
variaveis.put("parametro", parametro);
ProcessInstance processParametro = runtimeService.startProcessInstanceByKey("processParametro", variaveis);
Object parametroCriado = runtimeService.getVariable(processParametro.getId(), "parametroCriado");
return (Parametro) parametroCriado;
}
</java>
Parametro is a @Entity with the id = null because the entity has not been persited yet.
My dought is: is it possible to use any @Entity with activiti param before the entity to be persisted? Or i need to pass each field to be persisted when i have a transient entity? I wouldn't to like to create a POJO only to pass my fields to activiti process…