2011-04-21 54 views
2

無法創建組,錯誤這是我得到我的IdentityService變量的ident調試時:IdentityService jBPM的:在驗證

ident -> commandService = null 
     -> commandService = RetryInterceptor(id=68) 

在我的jbpm.cfg.xml我:

<jbpm-configuration> 
... 
<import resource="jbpm.identity.cfg.xml" /> 
... 
</jbpm-configuration> 
//I tried using my own IdentityService class, but it didn't work... 

然後我有一個類,我使用IdentityService,名爲simpleProcessService,帶有getter和setter。

public class SimpleProcessServiceImpl implements SimpleProcessService{ 
... 
private IdentityService identityService; 
... 
public IdentityService getIdentityService() 
    { 

     return identityService; 
    } 
    public void setIdentityService(IdentityService identityService) 
    { 

     this.identityService = identityService; 
    } 

... 
} 

在我的applicationContext-過程中,我有:

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
    ...> 


    <bean id="transactionManagerJbpm" 
     class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactoryJbpm" /> 
     <property name="dataSource" ref="dataSourceJbpm" /> 
    </bean> 



    <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper"> 
     <property name="jbpmCfg" value="jbpm.cfg.xml"/> 
    </bean> 
    <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" /> 
<!-- <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />--> 
<!-- <bean id="executionService" factory-bean="processEngine" factory-method="getExecutionService" />--> 
<!-- <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />--> 

<bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" /> 

.... 

    <bean id="simpleProcessService" 
     class="com.playence.platform.services.jbpm.impl.SimpleProcessServiceImpl"> 
     <property name="repositoryService" value="#{processEngine.repositoryService}"/> 
     <property name="executionService" value="#{processEngine.executionService}"/> 
     <property name="taskService" value="#{processEngine.taskService}"/> 
    <property name="identityService" value="#{processEngine.IdentityService}"/> 
    </bean> 
    ... 

</beans> 

在我的測試文件,我有:

public void testGroups() 
    { 
     SimpleProcessService simpleProcessService =(SimpleProcessService)ctx.getBean("simpleProcessService"); 
     TaskService taskService = simpleProcessService.getTaskService(); 

     IdentityService ident = simpleProcessService.getIdentityService(); 

     final int nTasks = 1; 
     List<Map<String, Object>> vars= new ArrayList<Map<String, Object>>(nTasks); 

     System.out.println("executing process"); 

     String processKey = ""; 
     String internalURI = ""; 
     Map<String,Object> x = new HashMap<String,Object>(); 
     ProcessInstance processInstance =null; 
     List<String> processInstanceIds = new ArrayList<String>(); 

     //Create nTasks for annotation 
     for(int i = 0; i <nTasks ; i++) 
     { 
       processKey = Long.toString(System.currentTimeMillis()); 
       internalURI = "/videos/test"+i+".flv_" + processKey; 

       x = new HashMap<String,Object>(); 
       x.put("internalURI", internalURI); 
       x.put("content", "good"); 
       vars.add(i,x); 

       processInstance = simpleProcessService.startProcess("groups", vars.get(i), processKey); 
       processInstanceIds.add(processInstance.getId()); 

     } 


     ident.createGroup("anotacion"); 

     ident.createUser("silver", "johndoe", "John", "Doe"); 
     ident.createMembership("silver", "anotacion"); 

     ident.createUser("david", "joesmoe", "Joe", "Smoe"); 
     ident.createMembership("david", "anotacion"); 

     ident.createUser("blanca", "joesmoe", "Joe", "Smoe"); 
     ident.createMembership("blanca", "anotacion"); 

.... 

} 

,當我嘗試創建一個組拋出異常,它似乎雖然ident不爲空,它包含空對象...

任何想法?

Dámaris。

回答

1

在我的測試類,我訪問IdentityService這樣的:

ProcessEngine processEngine = new Configuration().buildProcessEngine(); 
IdentityService id = processEngine.getIdentityService(); 

在我的applicationContext-過程中,使用這樣的:

<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" /> 

,並具有實現的類IdentityServiceImpl基本上調用IdentityService方法:

public class IdentityServiceImpl extends UserServiceImpl implements IdentityService{ 


    public IdentityServiceImpl() 
{ 
    //Load users and groups from the DB 
} 

public void createUser(String userId, String givenName, String familyName) { 
    //throw new UnsupportedOperationException("Use method TODO name method"); 
    createUser(userId,givenName,familyName); 
} 

public void createUser(String userId, String givenName, String familyName, 
     String businessEmail) { 
    throw new UnsupportedOperationException("Use method TODO name method"); 
} 

public User findUserById(String userId) { 
    try{ 
     GenericUser gU = loadUser(userId); 
     UserImpl user = new UserImpl(gU.getUsername(),gU.getFirstname(), gU.getLastname()); 
     return user; 
    } 
    catch (ValidationErrors e) { 
     e.printStackTrace(); 
    } catch (ServiceExecutionException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

public List<User> findUsers() { 
    try { 
     List<GenericUser> gUList = listUsers(); 
     List<User> userList = new ArrayList<User>(); 

     for(GenericUser gU : gUList) 
     { 
      userList.add(new UserImpl(gU.getUsername(),gU.getFirstname(), gU.getLastname())); 
     } 
     //If there are no users return null, otherwise return the users 
     if(userList.size() == 0) 
      return null; 
     else 
      return userList; 

    } catch (ServiceExecutionException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

public void deleteUser(String userId) { 
    throw new UnsupportedOperationException("Use method TODO name method"); 
} 

public String createGroup(String groupName) { 
    return createGroup(groupName); 
    //TODO UserService 
} 

public String createGroup(String groupName, String groupType) { 
    return createGroup(groupName, groupType); 
} 

public String createGroup(String groupName, String groupType, 
     String parentGroupId) { 
    return createGroup(groupName, groupType, parentGroupId); 
} 

public Group findGroupById(String groupId) { 
    return findGroupById(groupId); 
} 

public List<Group> findGroupsByUserAndGroupType(String userId, 
     String groupType) { 
    return findGroupsByUserAndGroupType(userId, groupType); 
} 

public List<Group> findGroupsByUser(String userId) { 
    return findGroupsByUser(userId); 
} 

public List<String> findGroupIdsByUser(String userId) { 
    return findGroupIdsByUser(userId); 
} 

public void deleteGroup(String groupId) { 
    deleteGroup(groupId); 
} 

public void createMembership(String userId, String groupId) { 
    createMembership(userId, groupId); 
} 

public void createMembership(String userId, String groupId, String role) { 
    createMembership(userId, groupId, role); 
} 

public void deleteMembership(String userId, String groupId, String role) { 
    deleteMembership(userId, groupId, role);   
} 

}

在我cfg.jpdl.xml我只有這個:

<?xml version="1.0" encoding="UTF-8"?> 
<jbpm-configuration> 
    <import resource="jbpm.default.cfg.xml" /> 
    <import resource="jbpm.tx.spring.cfg.xml" /> 
    <import resource="jbpm.jpdl.cfg.xml" /> 
    <import resource="jbpm.bpmn.cfg.xml" /> 
<import resource="jbpm.identity.cfg.xml" /> 
    <import resource="jbpm.businesscalendar.cfg.xml" /> 
    <import resource="jbpm.console.cfg.xml" /> 
    <!-- Commented out for dev environment only. --> 
    <import resource="jbpm.jobexecutor.cfg.xml" /> 
    <process-engine-context> 
    <repository-service /> 
    <repository-cache /> 
    <execution-service /> 
    <history-service /> 
    <management-service /> 
    <identity-service /> 
    <task-service /> 

    <command-service name="txRequiredCommandService"> 
     <skip-interceptor /> 
     <retry-interceptor /> 
     <environment-interceptor /> 
     <standard-transaction-interceptor /> 
    </command-service> 


    <command-service name="newTxRequiredCommandService"> 
     <retry-interceptor /> 
     <environment-interceptor policy="requiresNew" /> 
     <standard-transaction-interceptor /> 
    </command-service> 
    </process-engine-context> 


    <transaction-context> 
    <!--<object class="com.playence.platform.services.impl.IdentityServiceImpl" /> --> 
    <hibernate-session current="true" /> 
    </transaction-context> 


</jbpm-configuration> 

我希望它能幫助

大馬哩。