Como funciona el trabajo restringido de tareas En 11g SOA

re asignación de tareas es un escenario común en aplicaciones de listas de trabajo humano, y debe ser restringido en muchos casos. En otras palabras, los cesionarios han de limitarse a ciertos usuarios o grupos que tienen el permiso para manejar estas tareas. Por ejemplo, En una sociedad financiera, una tarea humana es asignado al grupo de los préstamos, cuando la tarea tiene que ser reasignado, sólo puede incluirse en el grupo legal, no el grupo de inversiones. Lo que sucede en la aplicación de listas de trabajo actual es, si un usuario hace clic en una tarea y elija reasignar de la lista de acciones, que permite al usuario volver a asignar la tarea a cualquier otro usuario o grupos disponibles en el almacén de identidad.

SOA 11g soporta la función de asignación restringida. Para hacerlo, necesita algunos customizaton lista de trabajo para su aplicación. A continuación se muestran los pasos que le mostrará cómo lograrlo.

1. Escriba una clase java para implementar la interfaz oracle.bpel.services.workflow.task.IRestrictedAssignmentCallback. Oracle para el Desarrollo ha proporcionado un ejemplo que muestra cómo la aplicación se puede hacer.

Básicamente, usted necesidad de aplicar dos métodos, y getPermittedAssignees getRestrictedOperations.

En getPermittedAssignees método, es necesario

  • crear objetos que representan oracle.bpel.services.workflow.task.impl.TaskAssignee cesionarios tarea, como usuarios, grupos o funciones de aplicación
  • Agregar todos los objetos cesionario a una lista, a continuación, utilice la lista para construir un oracle.bpel.services.workflow.task.impl.RestrictedAssignees objeto de celebrar estos valores.
  • devuelva la referencia al RestrictedAssignees objeto.

En getRestrictedOperations, tiene que especificar qué operaciones desea restringir la asignación de tareas.

Nota: Puede crear clases java tales interior de su BPEL o el proyecto de lista de trabajo en JDeveloper, es necesario añadir BPM Workflow biblioteca java para compilar la clase


package sample; import java.util.ArrayList; 
import java.util.List; import java.util.Map; 
import oracle.bpel.services.workflow.task.IRestrictedAssignmentCallback;
 import oracle.bpel.services.workflow.task.IRestrictedAssignees; 
import oracle.bpel.services.workflow.task.ITaskAssignee; 
import oracle.bpel.services.workflow.task.impl.TaskAssignee; 
import oracle.bpel.services.workflow.task.impl.RestrictedAssignees; 
import oracle.bpel.services.workflow.task.model.Task; 
import oracle.bpel.services.workflow.IWorkflowConstants; 
public class RestrictedAssignmentCallback implements
oracle.bpel.services.workflow.task.IRestrictedAssignmentCallback {
public IRestrictedAssignees getPermittedAssignees(Task task,
                                   Map propertyMap, String currentUser, String identityContext,String operation) {
  if(operation.equals(IRestrictedAssignmentCallback.OperationType.REASSIGN.toString())) { 
      return new RestrictedAssignees(createReassignTaskAssigneeList(), true);  
       }else if(operation.equals(IRestrictedAssignmentCallback.OperationType.ROUTE.toString())) {
             return new RestrictedAssignees(createParallelTaskAssigneeList(), true);  
       }  
            return null;     
  }    
  public List getRestrictedOperations(Task task, Map propertyMap,String currentUser,String identityContext) {  
                   List retList = new ArrayList();  
                   retList.add(RestrictedAssignmentCallback.OperationType.REASSIGN);  
                   retList.add(RestrictedAssignmentCallback.OperationType.ROUTE);  
                    return retList;    
   }      
   private ITaskAssignee createTaskAssignee(String name, boolean isGrp) {  
     return (new TaskAssignee(name, isGrp));     
   }     
   private List createReassignTaskAssigneeList() {          
     List retList = new ArrayList();          
     retList.add(createTaskAssignee("jstein",
IWorkflowConstants.IDENTITY_TYPE_USER));
                   retList.add(createTaskAssignee("jcooper",
IWorkflowConstants.IDENTITY_TYPE_USER));
                   retList.add(createTaskAssignee("LoanAgentGroup",
IWorkflowConstants.IDENTITY_TYPE_GROUP));
                   //retList.add(createTaskAssignee("DevTeam",
//IWorkflowConstants.IDENTITY_TYPE_APPLICATION_ROLE));
                    return retList;     
   }
   private List createParallelTaskAssigneeList() {
    List retList = new ArrayList();
   retList.add(createTaskAssignee("jcooper", false));
  retList.add(createTaskAssignee("jstein", false));
  retList.add(createTaskAssignee("wfaulk", false));
  retList.add(createTaskAssignee("cdickens", false));
  retList.add(createTaskAssignee("jlondon", false));
  return retList;     
    }
     private ITaskAssignee createTaskAssignee(String name, String type) {
         return (new TaskAssignee(name, type));     
     } 
}



2. Definir la tarea Humanos y especifique el nombre de la clase. Los pasos son,

  • Abrir los proyectos de SOA con Humanos en JDeveloper 11g Definición, haga clic en la tarea de archivo.
  • En el Diseñador de vista de la tarea humana, haga clic en Acceso de pestañas, a continuación,Configurar restringido de misiones .. botón
  • Especifique el nombre completo de la clase,
  • Haga clic en Aceptar y guarde la definición de tareas Humanos

3. Implementación de la SOA compuestas, para que los cambios surtan efecto.

No hay comentarios:

Publicar un comentario