Abh*_*yak 5 spring jpa drools jbpm kie
我正在尝试集成spring和JBPM,我做了谷歌的示例应用程序,发现一个github项目解释相同.
使用的框架版本:
我已经将github项目导入eclipse工作区,并且在maven clean之后我得到例外说:
Listed class "org.jbpm.task.Status" must not be an enum persistence.xml /jbpm-spring-web/src/main/resources/META-INF line 30 JPA Problem
Run Code Online (Sandbox Code Playgroud)
和src/main/resources/META-INF/Taskorm-JPA2.xml文件中的一些JPA查询异常如:
The abstract schema type 'OrganizationalEntity' is unknown. Taskorm-JPA2.xml /jbpm-spring-web/src/main/resources/META-INF line 375 JPA Problem
Run Code Online (Sandbox Code Playgroud)
和
The IN expression does not have a valid left expression. Taskorm-JPA2.xml /jbpm-spring-web/src/main/resources/META-INF line 7 JPA Problem
Run Code Online (Sandbox Code Playgroud)
如何解决这些异常?
persistence.xml看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd">
<persistence-unit name="org.jbpm.runtime" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/jbpm-ds</jta-data-source>
<mapping-file>META-INF/JBPMorm-JPA2.xml</mapping-file>
<mapping-file>META-INF/ProcessInstanceInfoMapping.xml</mapping-file>
<mapping-file>META-INF/Taskorm-JPA2.xml</mapping-file>
<class>org.jbpm.task.Attachment</class>
<class>org.jbpm.task.Content</class>
<class>org.jbpm.task.BooleanExpression</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Delegation</class>
<class>org.jbpm.task.Escalation</class>
<class>org.jbpm.task.Group</class>
<class>org.jbpm.task.I18NText</class>
<class>org.jbpm.task.Notification</class>
<class>org.jbpm.task.EmailNotification</class>
<class>org.jbpm.task.EmailNotificationHeader</class>
<class>org.jbpm.task.PeopleAssignments</class>
<class>org.jbpm.task.Reassignment</class>
<class>org.jbpm.task.Status</class>
<class>org.jbpm.task.Task</class>
<class>org.jbpm.task.TaskData</class>
<class>org.jbpm.task.SubTasksStrategy</class>
<class>org.jbpm.task.OnParentAbortAllSubTasksEndStrategy</class>
<class>org.jbpm.task.OnAllSubTasksEndParentEndStrategy</class>
<class>org.jbpm.task.User</class>
<class>org.drools.persistence.info.SessionInfo</class>
<class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
<class>org.drools.persistence.info.WorkItemInfo</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
和Taskorm-JPA2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
version="2.0">
<named-query name="TasksAssignedAsBusinessAdministrator">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity businessAdministrator
where
t.archived = 0 and
businessAdministrator.id = :userId and
businessAdministrator in elements ( t.peopleAssignments.businessAdministrators ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksAssignedAsExcludedOwner">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity excludedOwners
where
t.archived = 0 and
excludedOwners.id = :userId and
excludedOwners in elements ( t.peopleAssignments.excludedOwners ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksAssignedAsPotentialOwner">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity potentialOwners
where
t.archived = 0 and
potentialOwners.id = :userId and
potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksAssignedAsPotentialOwnerByStatus">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity potentialOwners
where
t.archived = 0 and
potentialOwners.id = :userId and
potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.status in (:status) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksAssignedAsPotentialOwnerWithGroups">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity potentialOwners
where
t.archived = 0 and
( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and
potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksAssignedAsPotentialOwnerByStatusWithGroups">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity potentialOwners
where
t.archived = 0 and
( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and
potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.status in (:status) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksAssignedAsPotentialOwnerByGroup">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity potentialOwners
where
t.archived = 0 and
potentialOwners.id = :groupId and
potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="SubTasksAssignedAsPotentialOwner">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity potentialOwners
where
t.archived = 0 and
t.taskData.parentId = :parentId and
(potentialOwners.id = :userId or potentialOwners.id in (:groupIds)) and
potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="GetSubTasksByParentTaskId">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name
where
t.archived = 0 and
t.taskData.parentId = :parentId and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksAssignedAsRecipient">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity recipients
where
t.archived = 0 and
recipients.id = :userId and
recipients in elements ( t.peopleAssignments.recipients ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksAssignedAsTaskInitiator">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity taskInitiator
where
t.archived = 0 and
taskInitiator.id = :userId and
taskInitiator = t.peopleAssignments.taskInitiator and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksAssignedAsTaskStakeholder">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name,
OrganizationalEntity taskStakeholder
where
t.archived = 0 and
taskStakeholder.id = :userId and
taskStakeholder in elements ( t.peopleAssignments.taskStakeholders ) and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksOwned">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name
where
t.archived = 0 and
t.taskData.actualOwner.id = :userId and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksByStatus">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name
where
t.archived = 0 and
t.taskData.status = :status and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
<named-query name="TasksByStatusByProcessId">
<query>
select
new org.jbpm.task.query.TaskSummary(
t.id,
t.taskData.processInstanceId,
name.text,
subject.text,
description.text,
t.taskData.status,
t.priority,
t.taskData.skipable,
actualOwner,
createdBy,
t.taskData.createdOn,
t.taskData.activationTime,
t.taskData.expirationTime,
t.taskData.processId,
t.taskData.processSessionId)
from
Task t
left join t.taskData.createdBy as createdBy
left join t.taskData.actualOwner as actualOwner
left join t.subjects as subject
left join t.descriptions as description
left join t.names as name
where
t.archived = 0 and
t.taskData.status = :status and
t.taskData.processInstanceId = :processId and
(
name.language = :language
or t.names.size = 0
) and
(
subject.language = :language
or t.subjects.size = 0
) and
(
description.language = :language
or t.descriptions.size = 0
) and
t.taskData.expirationTime is null
</query>
<!-- hint name="org.hibernate.timeout" value="200"/ -->
</named-query>
</entity-mappings>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1020 次 |
最近记录: |