Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
  • A design idea
    • Why not Camunda Cockpit as is: current Camunda Cockpit was designed from a BPMN process management perspective (note: need to study for TOSCA cases).
      • It does not meet service-level orchestration monitoring.
      • It is designed for BPMN definition/execution monitoring; require process knowledge for monitoring.
    • We need higher-level monitoring abstraction for both BPMN and TOSCA.
      • Associate Service Instance Id (or other keys) to the top-level process instance id. For the association, 
      • Could use a process variable holding the Service Instance id (or other keys), or
      • Could use a database holding the association
      • Allow VID, UUI or external apps monitor process workflow process (graphically and text-based) based on extensible search keys.
    • We need a platform level runtime run-time and history process activity report capabilties capabilities out of the box.
      • Regardless use of Camunda Enterprise Edition or Community Edition.
      • Query to Camunda/ARIA database to extract activities. 
    • The following diagram depicts the high-level concept. 

...

    • Task Drill-Down/Drill-Up and Detail View
      • Capabilities
        • Support Task (CAll Call Activity) drill-down/drill-up capabiltiescapabilities.
        • When a call activity task is selected, the Drill-Down button will be enabled.
        • Provide detail views for the selected Task.
        • When a task is selected including the call activity, the Detail view panel will display details for the selected task.
      • Design
        • When a selected/clicked task activity type is the Call Activity, the Drill-Down button is enabled.
          • if (activityType.equals('CallActivity') {enableDrillDown();}

        • If the current process instance has its parent process instance (from the activity tree), the Drill-Up button is enabled.
          • if (parentActivityInstanceId != null) {enableDrillUp();}

...

  • REST APIs for providing data to UIs
    • Capabilities
      • Provides REST services, by utilzing 1) Camunda REST APIs, such as BPMN XML string, process activity data, process variable, statistic, and 2) SO Request DB APIs for a service list.
      • Consolidate data responses from multple Camunda calls (both from process and history database) and feed them to UIs.
      • Use of HistoryService APIs, example, processEngine.getHistoryService().createHistoricProcessVariableQuery().xyz
      • Set a History level to ACTIVITY as a minimum; AUDIT (default) level for process variable tracing
        • ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault().setHistory(ProcessEngineConfiguration.HISTORY_FULL).buildProcessEngine()
      • Provides workflow tracing (between parent-child workflows, interaction with other services; service task in and out); example,
        • processEngine.getRuntimeService().createExecutionQuery().processVariableValueEquals("serviceInstanceId", serviceInstanceId).singleResult();
      • Custom Query
        • Custom Query against History ACT_HI_DETAIL database table, as needed
      • Create a REST API, getServiceList with search criteria
        • Enhance MsoRequestsDbAdapter and MsoRequestsDbAdapterImpl to implement getInfraRequest(...) with additional parameters
        • invoke getInfraRequest(...) to collect service list data based on search criteria.
        • or use the RequestDB adapter directly.
    • Design
      • Write REST APIs in the new mso-api-handlers/mso-api-handler-monitoring
        1. getServiceList(Map searchCriteria...) invokes new getInfraRequest(Map searchCriteria...)
        2. getProcessInstanceId(String serviceInstanceId);getprocessDiagram
        3. getprocessDiagramXML(String processInstanceId);
        4. getprocessInstanceDetail(String processInstanceId); 
        5. getProcessInstanceActivity(String processInstanceId); 
        6.                          // get a process instance, get a process definition id, and get diagram
        7. getprocessInstanceDetail(String processInstanceId); 
        8. getHistoryActivityInstance(String processInstanceId);                      // GET /history/activity-instance?processInstanceId={processInstanceId}
          1. getProcessInstanceParent (String processInstanceId);
          2. getProcessInstanceChildren(String processInstanceId);
        9. getProcessTaskDetail(String processInstanceIdgetProcessTaskDetail(String processInstanceId, String taskId);
        10. getProcessTaskType(String processInstanceId, String taskid);        // query if this task type is "Call Activity" for drilling down
    • The following diagram depicts the API interaction.

...

Priority

Component

Development Estimate

Comments

Priority

Component

Development Estimate

Comments

1REST APIs for providing data to UIs80 40 hours / Java developer
    • REST facade for
      • collecting and consolidating various Camunda process instance and history data to simplify GUI data collection interaction.
      • collecting SO Request DB data
2SO Service List widget80 40 hours / UI developer
    • populate search filter criteria
    • Displays a service list panel
    • control action buttons
3

Service Instance Rendering

and Detail Panel

120 40 hours / UI developer
    • Renders service instance workflow graphically
    • provides the service instance details and selected task details
    • Provides drill-down and drill-up capabilities
4Statistic Dashboard (stretch goal)40 hours / UI developer
    • Displays statistic for the selected service scope
5Custom History Producer (stretch goal)40 hours / Java developer
    • Produce history with additional data population
    • This is an option, and is used only if the Camunda history data is not sufficient.