08-19-2011 03:19 PM
Caused by: org.activiti.engine.ActivitiException: Entity does not exist: erp.model.test.TestErp - 801
at org.activiti.engine.impl.variable.JPAEntityMappings.findEntity(JPAEntityMappings.java:130)
at org.activiti.engine.impl.variable.JPAEntityMappings.getJPAEntity(JPAEntityMappings.java:119)
at org.activiti.engine.impl.variable.JPAEntityVariableType.getValue(JPAEntityVariableType.java:77)
at org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.getValue(VariableInstanceEntity.java:158)
at org.activiti.engine.impl.persistence.entity.VariableScopeImpl.getVariable(VariableScopeImpl.java:93)
at erp.domain.activiti.tasks.service.SecondTask.execute(SecondTask.java:29)
08-19-2011 05:10 PM
08-20-2011 04:06 AM
<jee:jndi-lookup jndi-name="jdbc/MysqlErp" id="dataSource" />
<jee:jndi-lookup jndi-name="java:appserver/TransactionManager" id="transactionManager" />
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionsExternallyManaged" value="true" />
<property name="databaseSchemaUpdate" value="true" />
<property name="databaseType" value="mysql" />
<property name="jobExecutorActivate" value="false" />
</bean>
@Named
@RequestScoped
public class SimpleStartBean {
@EJB ActivitiServiceEJB activiti;
@EJB TestErpBean testErp;
private String processDefinitionId;
private String column;
// setters and getters removed…
public String startProcess() throws NamingException, NotSupportedException {
TestErpBean testErpBean = (TestErpBean) new InitialContext()
.lookup("java:global/erp.web/TestErpBean");
TestErp entity = testErpBean.createTestErp();
entity.setCol(column);
testErpBean.saveTestErp(entity);
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("entity", entity);
activiti.getProcessEngine().getRuntimeService()
.startProcessInstanceById(processDefinitionId, variables);
return "owntasklist";
}
}
@Stateless
@LocalBean
public class TestErpBean {
@PersistenceUnit(unitName="erp.web")
EntityManagerFactory emf;
public TestErpBean() {
}
public TestErp createTestErp() {
EntityManager em = emf.createEntityManager();
TestErp erp = new TestErp();
em.persist(erp);
return erp;
}
public void saveTestErp(TestErp testErp) {
EntityManager em = emf.createEntityManager();
em.persist(em.merge(testErp));
}
public TestErp findTestErp(final int id) {
EntityManager em = emf.createEntityManager();
return em.find(TestErp.class, new Integer(id));
}
}
public class FirstTask extends BaseTask implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) throws Exception {
TestErp entity = (TestErp) execution.getVariable("entity");
entity.setCol(entity.getCol() + " FIRST");
logger.log(Level.FINE, "FirstTask.execute: entity.id = {0} entity.col = {1}", new Object[] {new Integer(entity.getId()), entity.getCol()});
}
}
public class SecondTask extends BaseTask implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) throws Exception {
TestErp entity = (TestErp) execution.getVariable("entity");
entity.setCol(entity.getCol()+ " SECOND");
logger.log(Level.FINE, "SecondTask.execute: entity.id = {0} entity.col = {1}", new Object[] {new Integer(entity.getId()), entity.getCol()});
}
}
java.lang.NullPointerException
at com.sun.enterprise.resource.ConnectorXAResource.getResourceHandle(ConnectorXAResource.java:246)
at com.sun.enterprise.resource.ConnectorXAResource.start(ConnectorXAResource.java:136)
at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.enlistResource(JavaEETransactionManagerSimplified.java:375)
at com.sun.enterprise.resource.rm.ResourceManagerImpl.registerResource(ResourceManagerImpl.java:152)
at com.sun.enterprise.resource.rm.ResourceManagerImpl.enlistResource(ResourceManagerImpl.java:112)
at com.sun.enterprise.resource.pool.PoolManagerImpl.getResource(PoolManagerImpl.java:208)
at com.sun.enterprise.connectors.ConnectionManagerImpl.getResource(ConnectionManagerImpl.java:338)
at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:301)
at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:190)
at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:165)
at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:160)
at com.sun.gjc.spi.base.DataSource.getConnection(DataSource.java:113)
at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromDataSource(DefaultSqlSessionFactory.java:72)
at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSession(DefaultSqlSessionFactory.java:32)
at org.activiti.engine.impl.db.DbSqlSession.<init>(DbSqlSession.java:86)
at org.activiti.engine.impl.db.DbSqlSessionFactory.openSession(DbSqlSessionFactory.java:77)
at org.activiti.engine.impl.interceptor.CommandContext.getSession(CommandContext.java:177)
at org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext.getDbSqlSession(StandaloneMybatisTransactionContext.java:77)
at org.activiti.engine.impl.cfg.standalone.StandaloneMybatisTransactionContext.rollback(StandaloneMybatisTransactionContext.java:91)
at org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:120)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:49)
at org.activiti.engine.impl.interceptor.JtaTransactionInterceptor.execute(JtaTransactionInterceptor.java:59)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)
at org.activiti.engine.impl.AbstractQuery.list(AbstractQuery.java:112)
at erp.web.faces.beans.activiti.TaskList.getOwnTasks(TaskList.java:62)
@Singleton
@LocalBean
@Startup
public class ActivitiServiceEJB {
/** the reference to the application wide Activiti process engine. */
ProcessEngine processEngine = null;
private static Logger logger = Logger.getLogger(ActivitiServiceEJB.class.getName());
public ActivitiServiceEJB() {
}
@PostConstruct
void initEngine() {
ProcessEngines.init();
setProcessEngine(ProcessEngines.getDefaultProcessEngine());
logger.log(Level.INFO, "Process engine {0} created and initialized.", getProcessEngine());
createActivitiUserData();
}
@PreRemove
void destructEngines() {
ProcessEngines.destroy();
logger.log(Level.INFO, "Process engines destroyed.");
}
public ProcessEngine getProcessEngine() {
return processEngine;
}
public void setProcessEngine(ProcessEngine processEngine) {
this.processEngine = processEngine;
}
// removed createActivitiUserData() …
}
@ManagedBean
@RequestScoped
public class TaskList {
@EJB
ActivitiServiceEJB activiti;
@ManagedProperty(value = "#{userSession}")
UserSession userSession;
public UserSession getUserSession() {
return userSession;
}
public void setUserSession(UserSession userSession) {
this.userSession = userSession;
}
public List<Task> getOwnTasks() {
List<Task> tasks = null;
if (userSession.isAdmin()) {
tasks = activiti.getProcessEngine().getTaskService()
.createTaskQuery().orderByTaskCreateTime().asc().list();
} else {
tasks = activiti.getProcessEngine().getTaskService()
.createTaskQuery()
.taskAssignee(userSession.getUser().getUsername())
.orderByTaskCreateTime().asc().list();
}
return tasks;
}
public String getFormKey(String taskId) {
String formKey = activiti.getProcessEngine().getFormService()
.getTaskFormData(taskId).getFormKey();
return formKey;
}
08-20-2011 05:58 AM
From the
stack trace i saw during my debugging sessions i have the impression that a
process instance is executed the whole execution path all the way through till
the process instance arrives at a wait state? E.g. a userTask? Is this the moment
the process variables are persisted to the database? And is this the moment a
transaction in the Activiti world ends? At least i think so, but i dont know it
yet.
08-31-2011 02:13 PM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.