Skip to end of metadata
Go to start of metadata

Background

In Rice 1.0, the KIM module has been implemented to provide user-related services. This module replaces the WorkflowUser interface and related classes which have traditionally been a part of KEW. In order to get rid of this redundancy, we need to execute a conversion from the KEW services to the KIM services.

Types and tables which should be eliminated or deprecated as a result of conversion

Types

Package/Type

Post-conversion status

org.kuali.rice.kew.user.WorkflowUser

eliminated

org.kuali.rice.kew.user.BaseWorkflowUser

eliminated

org.kuali.rice.kew.user.AuthenticationUserId

eliminated

org.kuali.rice.kew.dto.UserIdDTO

deprecated

org.kuali.rice.kew.dto.WorkflowIdDTO

deprecated

org.kuali.rice.kew.dto.NetworkIdDTO

deprecated

org.kuali.rice.kew.dto.UuIdDTO

eliminated

org.kuali.rice.kew.dto.EmplIdDTO

eliminated

Tables

  • EN_USR_T

Classes that should not be converted, either due to elimination or because they function as adapters

  • org.kuali.rice.kew.identity.service.IdentityHelperService
  • org.kuali.rice.kew.identity.service.impl.IdentityHelperServiceImpl

Guidelines for Performing the Conversion

There are a few major differences which will have to be considered during the conversion.

  1. Code that currently checks for a null WorkflowUser and throws a WorkflowRuntime Exception should be eliminated in favor of retrieving a KimPrincipal via the KEW IdentityHelpService. So, for example, instead of this:
    ....use this...
    The IdentityHelperService will check if the object retrieved is null and throw an exception. At a later date, when KIM has better exception handling, a KIM-specific exception will be thrown and handled in favor of runtime exceptions.
  1. KimGroup and KimPrincipal do not share a common hierarchy, KEW's Workgroup and WorkflowUser do (rooted at org.kuali.rice.kew.user.Recipient)
  2. IDs of KEW groups exist in a class hierarchy which is shared with WorkflowUser ids, in KIM identifiers are not encapsulated into objects but rather passed around as Strings

A Comparitive Taxonomy of Types and Identifiers

Types

KIM

relationship

KEW

KimPrincipal

==

WorkflowUser

KimEntity

 

 

Person

 

 

Wrapper Types

Wrapper types such as UserIdDTO, NetworkIdDTO and WorkflowIdDTO do not have KIM equivalents. Identifiers are no longer wrapped, but are passed as simple Strings or primitives.

Identifiers

KIM

relationship

KEW

KEW Wrapper

principalName

==

authenticationUserId

NetworkIdDTO

principalId

==

workflowUserId

WorkflowIdDTO

API Changes

The KEW APIs will need to change in the following ways:

WorkflowDocument/KualiWorkflowDocument

Any method in WorkflowDocument which took a WorkflowGroupIdDTO will now just take the group ID.

This has impacts on the following API methods on WorkflowDocument

  1. appSpecificRouteDocumentToGroup
  2. takeGroupAuthority
  3. releaseGroupAuthority

WorkflowInfo/KualiWorkflowInfo

Conversion Details

Replace WorkflowUser with KimPrincipal

For 50% of the cases, this should be straightforward. These are some pointers for the other half:

1) WorkflowUser needs to be replaced with KimPrincipal; workflowUserId == principalId

2) The decision To fetch the KimPrincipal you will need to call KIMServiceLocator.getIdentityManagementService().getPrincipal(...)

Progress