List all BPM Processes for a user
- by kasriniv
Hello, 
    Happy to start contributing to this blog..  
    The title of the blog is probably deceptively simple and warrants an elaboration. 
    Customized BPM workspaces/user interfaces are a fairly common requirement. One of our marquee customers in the online stock trading business, envisioned this user interaction for their BPM application: 
   
   
      
     
      User logs in to the internal portal 
      Use will have list of roles which he is granted as a drop down list 
      Once user selects the role, a list of processes which user is part of appear. Logged in user can be part of any swimlane role of the process 
    This can be a fairly common/reasonable user-UI interaction pattern. 1. and 2. are easily achievable and hence the subject matter of this blog is the requirement in 3.
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  Objective: Given a username and a role, list all the BPM processes that the user is part of, in any swimlane of any process. 
  Here is quick overview of the major steps/logic in the code: 
   
      
     
      Intialize workflow/BPM  context as usual 
      Get a handle on InstanceQueryService(getInstanceQueryService), InstanceManagementService,        ProcessMetadataService and ProcessModelService 
      List all Processes for that bpmcontext (listProcessMetadataSumary) and get Granted roles to that user 
      For each of the processes [method  getAccessibleProcesss(ProcessMetadataSummary, Set)]for each of the lanes in the process, check if the role granted to the user, matches the roleName for that swimlane. If so, add to output. 
     
   
   
    Notes:  
      
     
      The usual caveats apply including BPM APIs are subject to change. 
       JDeveloper method introspection is your better friend than API documentation :-)... 
     
    (I am going to try upload the source code  and if it doesnt work, will follow this blog up with the corresponding source code.) 
    Hope this helps.  
    Ack: Yogesh K, BPM Dev team.