跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

随需应变业务流程的生命周期,第 8 部分: 业务流程监控 - 创建关键性能指标

返回正文


Query historical events
				------------------------------------------------------------------------
public boolean start() {
 boolean result = true;
 try {
  //Get Event Access EJB
  …
  //get OTMPS start events
  CommonBaseEvent [] mmStartCbes = 
eAccessEjb.queryEventsByEventGroup(EventSelectors.START_EVENT_GROUP, 
EventSelectors.MILESTONEMANAGER_EVENT_SELECTOR, true);
			
  //for every start event get the related events and
  //initialize the corresponding metric classes
  for (int i = 0; i < mmStartCbes.length; i++) {
   // create OTMPSStartEvent
   OTMPSStartEvent otmpsStartEvent = new 
OTMPSStartEvent(mmStartCbes[i]);
				
   // get the context id from the start event
   String contextId = otmpsStartEvent.getContextId();
				
   //complete the context event selector
   Object [] args = {contextId};
   String contextEventSelector = 
EventSelectors.contextEventSelector.format(args);
   // get the corresponding stop event
   CommonBaseEvent [] stopCbes = 
eAccessEjb.queryEventsByEventGroup(EventSelectors.STOP_EVENT_GROUP,
contextEventSelector, true);
				
   //if the process instance has not stopped yet then 
skip to the next instance we will revisit this process instance when we 
receive the stop event
   if (stopCbes.length > 0) {
    OTMPSStopEvent otmpsStopEvent = new 
OTMPSStopEvent(stopCbes[0]);
					
    //get the corresponding orders data event
    CommonBaseEvent [] ordersDataCbes = 
eAccessEjb.queryEventsByEventGroup(EventSelectors.ORDERS_DATA_EVENT_GRO
UP, contextEventSelector, true);
					
    OrdersDataEvent ordersDataEvent = new 
OrdersDataEvent(ordersDataCbes[0]);
						
   //create ThroughPut metric and add it to 
ThroughPutCollection
    ThroughPut throughPut = new 
ThroughPut(otmpsStartEvent, ordersDataEvent, otmpsStopEvent);
				
 ThroughPutCollection.eINSTANCE.addMetric(throughPut);
					
    //create Outcome metric and add it to 
OutcomeCollection
    Outcome outcome = new Outcome(otmpsStopEvent);
				
 OutcomeCollection.eINSTANCE.addMetric(outcome);
					
    //get the corresponding invalid orders data 
event which is created by a sub-process therefore we need to first get 
the sub-process start 
  String validationSubprocessEventSelector =
EventSelectors.validationSubprocessEventSelector.format(args);
    CommonBaseEvent [] vpStartCbes = 
eAccessEjb.queryEventsByEventGroup(EventSelectors.START_EVENT_GROUP, 
validationSubprocessEventSelector, true);
					
    if (vpStartCbes.length > 0){
     // get the context id from the start 
event
     String vpContextId = 
Event.getContextId(vpStartCbes[0]);
				
     //complete the context event selector
     Object [] vpArgs = {vpContextId};
     String vpContextEventSelector = 
EventSelectors.contextEventSelector.format(vpArgs);
     CommonBaseEvent [] invalidOrdersDataCbes = eAccessEjb.queryEventsByEventGroup
(EventSelectors.INVALID_ORDERS_DATA_
EVENT_GROUP, vpContextEventSelector, true);
						
     if (invalidOrdersDataCbes.length > 0) {
      InvalidOrdersDataEvent 
invalidOrdersDataEvent = new InvalidOrdersDataEvent 
(invalidOrdersDataCbes[0]);
		
      //create NumberOfInvalidOrders 
metric and add it to NumberOfInvalidOrdersCollection
      NumberOfInvalidOrders 
numberOfInvalidOrders = new 
NumberOfInvalidOrders(invalidOrdersDataEvent);
						
 NumberOfInvalidOrdersCollection.eINSTANCE.addMetric(numberOfInvalidOrders);
     }
    }
   }
  }
			
  //get ExceptionHandler start events
  CommonBaseEvent [] ehStartCbes = 
eAccessEjb.queryEventsByEventGroup(EventSelectors.START_EVENT_GROUP, 
EventSelectors.EXCEPTIONHANDLER_EVENT_SELECTOR, true);
			
  //for every start event get the related events and
  //initialize the corresponding metric classes
  …
		
 } catch (Exception e) {
  e.printStackTrace(System.out);
  result = false;
 }
 return result;
}

返回正文