[jbpm-commits] JBoss JBPM SVN: r5716 - in jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal: history/model and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Oct 7 18:49:40 EDT 2009


Author: koen.aers at jboss.com
Date: 2009-10-07 18:49:40 -0400 (Wed, 07 Oct 2009)
New Revision: 5716

Added:
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/ProcessInstanceMigration.java
Modified:
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/model/HistoryProcessInstanceImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/migration/InstanceMigrator.java
Log:
use HistoryEvent.fire() instead of manually adding details to HistoryProcessInstance

Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/ProcessInstanceMigration.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/ProcessInstanceMigration.java	                        (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/ProcessInstanceMigration.java	2009-10-07 22:49:40 UTC (rev 5716)
@@ -0,0 +1,71 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.pvm.internal.history.events;
+
+import org.jbpm.api.ProcessDefinition;
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.pvm.internal.env.EnvironmentImpl;
+import org.jbpm.pvm.internal.history.HistoryEvent;
+import org.jbpm.pvm.internal.history.model.HistoryProcessInstanceImpl;
+import org.jbpm.pvm.internal.history.model.HistoryProcessInstanceMigrationImpl;
+import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.pvm.internal.session.DbSession;
+
+
+/**
+ * @author Koen Aers
+ */
+public class ProcessInstanceMigration extends HistoryEvent {
+
+  private static final long serialVersionUID = 1L;
+
+  ProcessInstance processInstance;
+  ProcessDefinition processDefinition;
+  
+  public ProcessInstanceMigration(ProcessInstance processInstance, ProcessDefinition processDefinition) {
+    this.processInstance = processInstance;
+    this.processDefinition = processDefinition;
+  }
+
+  public void process() {
+    
+    if (processDefinition == null || processInstance == null || !(processInstance instanceof ExecutionImpl)) return;
+    
+    DbSession dbSession = EnvironmentImpl.getFromCurrent(DbSession.class);
+
+    HistoryProcessInstanceImpl historyProcessInstance = null;
+    long processInstanceDbid = ((ExecutionImpl)processInstance).getDbid();
+    historyProcessInstance = (HistoryProcessInstanceImpl)dbSession.get(HistoryProcessInstanceImpl.class, processInstanceDbid);
+    if (historyProcessInstance == null) return;
+    
+    String oldVersion = historyProcessInstance.getProcessDefinitionId();
+    String newVersion = processDefinition.getId();
+    
+    historyProcessInstance.setProcessDefinitionId(newVersion);
+    HistoryProcessInstanceMigrationImpl historyProcessInstanceMigration = 
+        new HistoryProcessInstanceMigrationImpl(oldVersion, newVersion);
+    historyProcessInstance.addDetail(historyProcessInstanceMigration);
+    
+    
+    dbSession.save(historyProcessInstanceMigration);
+  }
+}


Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/ProcessInstanceMigration.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/model/HistoryProcessInstanceImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/model/HistoryProcessInstanceImpl.java	2009-10-07 22:48:36 UTC (rev 5715)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/model/HistoryProcessInstanceImpl.java	2009-10-07 22:49:40 UTC (rev 5716)
@@ -64,7 +64,6 @@
 
   
   public void addDetail(HistoryDetailImpl detail) {
-    details.add(detail);
     detail.setHistoryProcessInstance(this, nextDetailIndex);
     nextDetailIndex++;
   }
@@ -112,11 +111,14 @@
   public String getState() {
     return state;
   }
+  public void setState(String state) {
+    this.state = state;
+  }
   public String getProcessDefinitionId() {
     return processDefinitionId;
   }
-  public void setState(String state) {
-    this.state = state;
+  public void setProcessDefinitionId(String processDefinitionId) {
+    this.processDefinitionId = processDefinitionId;
   }
   public String getEndActivityName() {
     return endActivityName;

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/migration/InstanceMigrator.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/migration/InstanceMigrator.java	2009-10-07 22:48:36 UTC (rev 5715)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/migration/InstanceMigrator.java	2009-10-07 22:49:40 UTC (rev 5716)
@@ -4,15 +4,13 @@
 
 import org.jbpm.api.Execution;
 import org.jbpm.api.ExecutionService;
-import org.jbpm.api.HistoryService;
 import org.jbpm.api.ProcessDefinition;
 import org.jbpm.api.ProcessDefinitionQuery;
 import org.jbpm.api.ProcessInstance;
 import org.jbpm.api.ProcessInstanceQuery;
-import org.jbpm.api.history.HistoryProcessInstance;
 import org.jbpm.pvm.internal.env.EnvironmentImpl;
-import org.jbpm.pvm.internal.history.model.HistoryProcessInstanceImpl;
-import org.jbpm.pvm.internal.history.model.HistoryProcessInstanceMigrationImpl;
+import org.jbpm.pvm.internal.history.HistoryEvent;
+import org.jbpm.pvm.internal.history.events.ProcessInstanceMigration;
 import org.jbpm.pvm.internal.model.Activity;
 import org.jbpm.pvm.internal.model.ExecutionImpl;
 import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
@@ -39,7 +37,7 @@
     migrateExecutions(processDefinition, processInstance, migrationDescriptor);
     // migrateSwimlanes(processInstance, migrationDescriptor);
     // migrateVariables(processInstance, migrationDescriptor);
-    logMigration(processInstance, processDefinition.getVersion());
+    logMigration(processInstance, processDefinition);
   }
 
   private static void migrateExecutions(ProcessDefinition processDefinition, Execution execution, MigrationDescriptor migrationDescriptor) {
@@ -61,14 +59,9 @@
     }
   }
 
-  private static void logMigration(ProcessInstance processInstance, int lastVersion) {
-    HistoryService historyService = (HistoryService)EnvironmentImpl.getFromCurrent(HistoryService.class);
-    HistoryProcessInstance historyProcessInstance = historyService
-      .createHistoryProcessInstanceQuery()
-      .processInstanceId(processInstance.getId())
-      .uniqueResult();
-    if (!(historyProcessInstance instanceof HistoryProcessInstanceImpl)) return;
-    ((HistoryProcessInstanceImpl)historyProcessInstance).addDetail(new HistoryProcessInstanceMigrationImpl(lastVersion - 1, lastVersion));
+  private static void logMigration(ProcessInstance processInstance, ProcessDefinition processDefinition) {
+    ProcessInstanceMigration processInstanceMigrate = new ProcessInstanceMigration(processInstance, processDefinition);
+    HistoryEvent.fire(processInstanceMigrate);
   }
 
   private static String getOldVersionId(String processDefinitionName) {



More information about the jbpm-commits mailing list