v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
 
  I have recently been looking at the  latest release of the BPM Case Management feature in the Oracle BPM PS6 release. I had put together some notes to help me gain a better understanding of the context of the PS6 BPM Case Management. Hopefully, this along with the other resources will enable you to gain a clear picture of the flexibility of this feature. 
  Oracle
BPM PS6 release includes Case Management capability. This initial release aims
to provide:   
    
   
     
      Case Management Framework 
     
   
    
   
     
      Integration of Case Management with BPM & SOA
     suite 
     
   
    
      
  It is
best to regard the current PS6 case management feature as a case management framework. The framework provides the building blocks for creating a case management system that is
fully integrated into Oracle BPM suite. As of the current PS6 release, no UI tooling
exists to help manage cases or the case lifecycle.  
  Mark Foster has written a good blog which outlines Case Management within PS6 in the following link. I wanted to provide more context on Case Management from my perspective in this blog. 
    
  PS6 Case Management -  High level View 
      
  BPM PS6
includes “Case” as a first class component in a SOA Suite composite. The Case components (added to the SOA Composite) are created when a BPM process is assigned to a case in JDveloper. 
      
    
    
  The SOA
Case component is defined and configured within JDevloper, which allows us to specify the case data structures and metadata such as stakeholders, outcomes, milestones, document stores etc. 
  "Activities" are associated with a case, and become available to be executed via the case apis. Activities are BPM processes, Human Activities or Java call outs. 
    
    
     
    
     
  The PS6 release includes some additional database tables to store the case metadata and case instance data (data object, comments,
etc…). These new tables are created within the SOA_INFRA schema and the documents associated with that
case into a document repository that is configured with the case. 
  One of the main features of Case Management is the control of the case logic through case events and case business rules. A PS6 Case has an associated business rule component, which can be configured to control the availability and execution of activities within the case. The business rules component is able to act upon events that the PS6 Case Management framework generates during the lifecycle of that case. Events are fired during the lifetime of the case (e.g. Case created, activity started, activity ended, note added, document uploaded.) 
    
  Internal Case state   
  The
internal state of a case is represented by the diagram below. This shows the
internal states and the transition paths for a Case from one state to the next  
     
  Each
transition in state will create an event that can be enacted upon via the Case
rules engine.  
     
  The internal
case state lifecycle is defined as follows 
     
       
     
     
  Defining a case  
     
  A Case
is created and defined as a component of a JDeveloper BPM project. When you
create a Case as part of a BPM project, JDeveloper, creates the following
components within the SCA composite: 
     
   
    Case component 
    Case component interfaces (WSDL etc) 
    Case Rules component (Oracle Business Rules) 
    Adds the Case Component and Case Rules Component to
     the BPM SOA composite 
      
    
     
     
    
     
       
  Case Configuration  
     
  The
following section gives a high level overview of the items that can be
configured for a BPM Case.  
     
     
      
     
  Case Activities  
  A Case is associated
with a set of activities that are to be performed as part of that Case. Case
activities can be:  
   
    SOA
Human Tasks 
    BPM
processes 
    Custom
Task (Java Class) 
    
     
  Case activities are
created from pre-existing BPM process or human tasks, which, once defined, can
be configured additionally as Case activities in JDeveloper and made available
within the lifecycle of a case. 
  I've described the following configurable components of a case (very!) briefly as:  
     
     
  Milestones  
   
    Milestones are (optional) user defined logical
     milestones that can be achieved within a case. 
    No activities are associates with a milestone, but
     milestone attainment can be programmatically set and events raised when
     milestones are reached 
    
     
  Outcomes  
   
    User defined status of a completed
case. An event is fired when an outcome is attained. 
    
     
  Case
Data  
   
    Defines the data that will be stored
with a case 
    
   
    XML schemas define the data that is
stored with the case. 
    
     
  Case
Documents 
   
    Defines the location of documents
that are attached to a case (e.g. WebCenter Content)  
   
     
  User
Defined Events  
    
   
    Optional user defined events that
can be fired or captured to drive case processing rules 
   
     
     
  Stakeholders  
   
    Defines the actors who can
participate in the case (roles, users, groups) 
    
   
    Defines permissions for individual
case permissions (read case, create document etc…) 
    
     
  Business Rules  
   
    Business rules are the main
component controlling the flow of a Case 
    Each case has an associated business
ruleset 
    Rules are fired on receiving Case
events (or User defined events) 
    
   
     
      Life
      cycle events 
      Milestone
      events 
      Activity
      events 
      Data
      events 
      Document
      events 
      Comment
      events 
      User
      event 
     
    
     
  Managing the Case  
     
  Managing
the lifecycle of a case is achieved in two ways:  
   
    Managing case logic with Business Rules 
    Managing the case lifecycle via the Case APIs. 
    
     
  A BPM
Case can be viewed as a set of case data & documents along with the
activities that can be performed within a case and also the case lifecycle
state expressed as milestones and internal lifecycle state.  
     
  The
management of the case life is achieved though both the configuration of
business rules and the “manual” interaction with a case instance through the Case
APIs.  
     
  Business Rules and Case Events  
  A key
component within the Case management framework is the event model. The BPM Case
Management solution internally utilizes Oracle EDN (Event Delivery Network) to publish and
subscribe to events generated by the Case framework.  
     
  Events
are generated by the Case framework on each of the processes and stages that a
case instance will travel on its lifetime. The following case events are part
of the BPM Case:  
   
     
      Life
      cycle events 
      Milestone
      events 
      Activity
      events 
      Data
      events 
      Document
      events 
      Comment
      events 
      User
      event 
     
    
  The
Case business rules are configured to listen for these events, and business
logic can be coded into the Case rules component to enact upon an event being
received.   
     
  Case API & Interaction  
  Along
with the business rules component, Cases can be managed via the Case API
interfaces. These interfaces allow for the building of custom applications to
integrate into case management framework. The API’s allow for updating case
comments & documents, executing case activities, updating milestones etc.  
     
  As
there is no in built case management UI functions within the PS6 release, Cases
need to be managed via a custom built UI, interacting with selected case
instances, launching case activities, closing cases etc. (There is expected to
be a UI component within subsequent releases)  
     
  Logical Case Flow  
     
  The
diagram below is intended to depict a logical view of the case steps for a
typical case. 
     
     
      
     
   
    A UI or other service calls the Case interface to
     create a Case instance 
    The case instance is created & database data
     inserted 
    A lifecycle event is raised indicating a case
     activity (created) event 
    The case business rules capture the event and decide
     on an action to take 
    Additionally other parties can subscribe to Case
     events via EDN 
    The business rules may handle the event, e.g.
     configured to execute a case activity on case creation event 
    The BPM/Human Workflow/Custom activity is executed 
    A case activity event is raised on the execute
     activity 
    A case work UI or business service can inspect the
     case instance and call other actions to progress that case, such as: 
     
      Execute activity 
      Add Note 
      Add document 
      Add case data 
      Update Milestone 
      Raise user defined event 
      Suspend case 
      Resume case 
      Close Case 
     
    
     
  Summary 
  Having had a little time to play around with the APIs and the case configuration, I really like the flexibility and power of combining Oracle Business Rules and the BPM Case Management event model. Creating something this flexible and powerful without BPM Case Management would take a lot of time and effort. This is hopefully going to save my customers a lot of time and effort! 
  I may make amendments to this post as my understanding of Case Management increases! 
  Take a look at the following links for official documentation etc. 
  http://docs.oracle.com/cd/E28280_01/doc.1111/e15176/case_mgmt_bpmpd.htm  
  https://blogs.oracle.com/bpm/entry/just_in_case 
 
  Normal
  0
  
  
  
  
  
  false
  false
  false
  
  EN-US
  X-NONE
  X-NONE
  
   
   
   
   
   
   
   
   
   
   
   
  
  MicrosoftInternetExplorer4
  
   
   
   
   
   
   
   
   
   
   
   
  
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Calibri","sans-serif";}