JBoss JBPM SVN: r1625 - api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-14 10:05:46 -0400 (Mon, 14 Jul 2008)
New Revision: 1625
Added:
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBComplexGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExclusiveGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExecutionHandler.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlowHandler.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBHandler.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBInclusiveGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBMessageFlow.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBParallelGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBProcess.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSequenceFlow.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSignalHandler.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/ObjectFactory.java
Log:
wipo
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBComplexGateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBComplexGateway.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBComplexGateway.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,42 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlType;
+
+
+// $Id$
+
+/**
+ * A Complex Gateway handles situations that are not easily handled through the other types of Gateways.
+ *
+ * Complex Gateways can also be used to combine a set of linked simple Gateways into a single,
+ * more compact situation. Modelers can provide complex expressions that determine the merging and/or
+ * splitting behavior of the Gateway.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name="ComplexGateway")
+public class JAXBComplexGateway extends JAXBGateway
+{
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBComplexGateway.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExclusiveGateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExclusiveGateway.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExclusiveGateway.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,38 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * A point in the workflow process where, based on a decision or workflow control data, one of several branches is chosen.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name="ExclusiveGateway")
+public class JAXBExclusiveGateway extends JAXBGateway
+{
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExclusiveGateway.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExecutionHandler.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExecutionHandler.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExecutionHandler.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,38 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Implement to make the FlowObject executable
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "ExecutionHandler")
+public class JAXBExecutionHandler extends JAXBHandler
+{
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBExecutionHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlowHandler.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlowHandler.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlowHandler.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,38 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Implement to handle the outgoing Flows for an FlowObject
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "FlowHandler")
+public class JAXBFlowHandler extends JAXBHandler
+{
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlowHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBHandler.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBHandler.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBHandler.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,89 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.bpm.NotImplementedException;
+
+/**
+ * Implement to handle the outgoing Flows for an FlowObject
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "Handler")
+public abstract class JAXBHandler
+{
+ private String className;
+ private String beanRef;
+
+ public String getClassName()
+ {
+ return className;
+ }
+
+ @XmlAttribute(name = "class", required = false)
+ public void setClassName(String className)
+ {
+ this.className = className;
+ }
+
+ public String getBeanRef()
+ {
+ return beanRef;
+ }
+
+ @XmlAttribute(name = "bean", required = false)
+ public void setBeanRef(String beanRef)
+ {
+ this.beanRef = beanRef;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T newInstance(Class<T> clazz)
+ {
+ try
+ {
+ if (className != null)
+ {
+ ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
+ return (T)ctxLoader.loadClass(className).newInstance();
+ }
+ else if (beanRef != null)
+ {
+ throw new NotImplementedException();
+ }
+ else
+ {
+ throw new IllegalStateException("There is no 'class' nor 'bean' attribute set for this handler");
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new IllegalStateException("Cannot instanciate the handler", ex);
+ }
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBInclusiveGateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBInclusiveGateway.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBInclusiveGateway.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,40 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlType;
+
+
+// $Id$
+
+/**
+ * This Decision represents a branching point where Alternatives are based on conditional expressions contained within outgoing Sequence Flow.
+ * However, in this case, the True evaluation of one condition expression does not exclude the evaluation of other condition expressions.
+ * All Sequence Flow with a True evaluation will be traversed by a Token.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name="InclusiveGateway")
+public class JAXBInclusiveGateway extends JAXBGateway
+{
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBInclusiveGateway.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBMessageFlow.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBMessageFlow.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBMessageFlow.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,39 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * A Sequence Flow is a solid graphical line that is used to show the order that Activities will be performed in a Process.
+ * Each Flow has only one source and only one target.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name="MessageFlow")
+public class JAXBMessageFlow extends JAXBFlow
+{
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBMessageFlow.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBParallelGateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBParallelGateway.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBParallelGateway.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,38 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlType;
+
+
+// $Id$
+
+/**
+ * Parallel Gateway is required when two or more Activities need to be executed in parallel.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name="ParallelGateway")
+public class JAXBParallelGateway extends JAXBGateway
+{
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBParallelGateway.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBProcess.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBProcess.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBProcess.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,64 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * A Process is any Activity performed within a company or organization.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "Process")
+@XmlRootElement(name = "process")
+public class JAXBProcess extends JAXBActivity
+{
+ @XmlElements( {
+ @XmlElement(name = "start", type = JAXBStartEvent.class),
+ @XmlElement(name = "event", type = JAXBIntermediateEvent.class),
+ @XmlElement(name = "task", type = JAXBTask.class),
+ @XmlElement(name = "exclusive-gateway", type = JAXBExclusiveGateway.class),
+ @XmlElement(name = "inclusive-gateway", type = JAXBInclusiveGateway.class),
+ @XmlElement(name = "complex-gateway", type = JAXBComplexGateway.class),
+ @XmlElement(name = "parallel-gateway", type = JAXBParallelGateway.class),
+ @XmlElement(name = "sub-process", type = JAXBSubProcess.class),
+ @XmlElement(name = "end", type = JAXBEndEvent.class)
+ })
+ private List<JAXBFlowObject> flowObjects = new ArrayList<JAXBFlowObject>();
+
+ /**
+ * Get the list of flow objects
+ */
+ public List<JAXBFlowObject> getFlowObjects()
+ {
+ return flowObjects;
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBProcess.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSequenceFlow.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSequenceFlow.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSequenceFlow.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,39 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * A Sequence Flow is a solid graphical line that is used to show the order that Activities will be performed in a Process.
+ * Each Flow has only one source and only one target.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name="SequenceFlow")
+public class JAXBSequenceFlow extends JAXBFlow
+{
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSequenceFlow.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSignalHandler.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSignalHandler.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSignalHandler.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,39 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlType;
+
+
+
+//$Id$
+
+/**
+ * Implement to get signals on enter and exit.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "SignalHandler")
+public class JAXBSignalHandler extends JAXBHandler
+{
+}
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSignalHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/ObjectFactory.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/ObjectFactory.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/ObjectFactory.java 2008-07-14 14:05:46 UTC (rev 1625)
@@ -0,0 +1,131 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.3 in JDK 1.6
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.11 at 09:21:08 AM CEST
+//
+
+package org.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlRegistry;
+
+
+/**
+ * This object contains factory methods for each Java content interface and Java element interface generated in the api.bpm.jboss.org package.
+ * <p>
+ * An ObjectFactory allows you to programatically construct new instances of the Java representation for XML content. The Java representation of XML content can consist
+ * of schema derived interfaces and classes representing the binding of schema type definitions, element declarations and model groups. Factory methods for each of
+ * these are provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory
+{
+ /**
+ * Create an instance of {@link ExclusiveGatewayImpl }
+ *
+ */
+ public JAXBExclusiveGateway createExclusiveGateway()
+ {
+ return new JAXBExclusiveGateway();
+ }
+
+ /**
+ * Create an instance of {@link TaskImpl }
+ *
+ */
+ public JAXBTask createTask()
+ {
+ return new JAXBTask();
+ }
+
+ /**
+ * Create an instance of {@link ProcessImpl }
+ *
+ */
+ public JAXBProcess createProcess()
+ {
+ return new JAXBProcess();
+ }
+
+ /**
+ * Create an instance of {@link ParallelGatewayImpl }
+ *
+ */
+ public JAXBParallelGateway createParallelGateway()
+ {
+ return new JAXBParallelGateway();
+ }
+
+ /**
+ * Create an instance of {@link MessageFlowImpl }
+ *
+ */
+ public JAXBMessageFlow createMessageFlow()
+ {
+ return new JAXBMessageFlow();
+ }
+
+ /**
+ * Create an instance of {@link EndEventImpl }
+ *
+ */
+ public JAXBEndEvent createEndEvent()
+ {
+ return new JAXBEndEvent();
+ }
+
+ /**
+ * Create an instance of {@link SubProcessImpl }
+ *
+ */
+ public JAXBSubProcess createSubProcess()
+ {
+ return new JAXBSubProcess();
+ }
+
+ /**
+ * Create an instance of {@link SequenceFlowImpl }
+ *
+ */
+ public JAXBSequenceFlow createSequenceFlow()
+ {
+ return new JAXBSequenceFlow();
+ }
+
+ /**
+ * Create an instance of {@link ComplexGatewayImpl }
+ *
+ */
+ public JAXBComplexGateway createComplexGateway()
+ {
+ return new JAXBComplexGateway();
+ }
+
+ /**
+ * Create an instance of {@link InclusiveGatewayImpl }
+ *
+ */
+ public JAXBInclusiveGateway createInclusiveGateway()
+ {
+ return new JAXBInclusiveGateway();
+ }
+
+ /**
+ * Create an instance of {@link IntermediateEventImpl }
+ *
+ */
+ public JAXBIntermediateEvent createItermediateEvent()
+ {
+ return new JAXBIntermediateEvent();
+ }
+
+ /**
+ * Create an instance of {@link StartEventImpl }
+ *
+ */
+ public JAXBStartEvent createStartEvent()
+ {
+ return new JAXBStartEvent();
+ }
+}
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/ObjectFactory.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
17 years, 9 months
JBoss JBPM SVN: r1624 - in jbpm4/jpdl/trunk: modules and 1 other directory.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-07-14 10:05:34 -0400 (Mon, 14 Jul 2008)
New Revision: 1624
Added:
jbpm4/jpdl/trunk/modules/core/
Removed:
jbpm4/jpdl/trunk/modules/jpdl/
Modified:
jbpm4/jpdl/trunk/pom.xml
Log:
rename module jpdl to core
Copied: jbpm4/jpdl/trunk/modules/core (from rev 1622, jbpm4/jpdl/trunk/modules/jpdl)
Modified: jbpm4/jpdl/trunk/pom.xml
===================================================================
--- jbpm4/jpdl/trunk/pom.xml 2008-07-14 14:05:06 UTC (rev 1623)
+++ jbpm4/jpdl/trunk/pom.xml 2008-07-14 14:05:34 UTC (rev 1624)
@@ -31,9 +31,7 @@
<!-- Modules -->
<modules>
- <module>modules/jpdl</module>
- <module>modules/identity</module>
- <module>modules/task</module>
+ <module>modules/core</module>
</modules>
<!-- Properties -->
17 years, 9 months
JBoss JBPM SVN: r1623 - in api/branches/tdiesler: modules/api/src/main/java/org/jboss/bpm/client and 9 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-07-14 10:05:06 -0400 (Mon, 14 Jul 2008)
New Revision: 1623
Added:
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/IntermediateEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EventImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExecutionHandlerImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowHandlerImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/HandlerImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/MessageFlowImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SignalHandlerImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBActivity.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEndEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlow.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlowObject.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBIntermediateEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBStartEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSubProcess.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBTask.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/package-info.java
Removed:
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractEndEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractFlow.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractItermediateEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractProcess.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractStartEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractSubProcess.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractTask.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ActivityImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ComplexGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ErrorResult.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ExclusiveGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/FlowObjectImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/GatewayImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/InclusiveGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBActivity.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBFlowObject.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MessageFlow.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MessageResult.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ObjectFactory.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ParallelGateway.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SequenceFlow.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/package-info.java
Modified:
api/branches/tdiesler/docs/VioletUML/APIModel.class.violet
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Activity.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Event.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ExecutionHandler.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Flow.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/FlowHandler.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Handler.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MultipleInFlowSupport.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MultipleOutFlowSupport.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Process.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SignalHandler.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SingleInFlowSupport.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SingleOutFlowSupport.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Task.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/util/ProcessMarshaller.java
api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/util/ProcessUnmarshaller.java
api/branches/tdiesler/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java
api/branches/tdiesler/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java
api/branches/tdiesler/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java
Log:
wipo
Modified: api/branches/tdiesler/docs/VioletUML/APIModel.class.violet
===================================================================
--- api/branches/tdiesler/docs/VioletUML/APIModel.class.violet 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/docs/VioletUML/APIModel.class.violet 2008-07-14 14:05:06 UTC (rev 1623)
@@ -5,41 +5,6 @@
<object id="ClassNode0" class="com.horstmann.violet.ClassNode">
<void property="name">
<void property="text">
- <string>ExecutionContext</string>
- </void>
- </void>
- </object>
- <object class="java.awt.geom.Point2D$Double">
- <void method="setLocation">
- <double>728.0</double>
- <double>18.0</double>
- </void>
- </object>
- </void>
- <void method="addNode">
- <object id="ClassNode1" class="com.horstmann.violet.ClassNode">
- <void property="name">
- <void property="text">
- <string>Attachments</string>
- </void>
- </void>
- </object>
- <object class="java.awt.geom.Point2D$Double">
- <void method="setLocation">
- <double>736.0</double>
- <double>114.0</double>
- </void>
- </object>
- </void>
- <void method="addNode">
- <object id="ClassNode2" class="com.horstmann.violet.ClassNode">
- <void property="methods">
- <void property="text">
- <string>execute</string>
- </void>
- </void>
- <void property="name">
- <void property="text">
<string>FlowObject</string>
</void>
</void>
@@ -52,7 +17,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode3" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode1" class="com.horstmann.violet.ClassNode">
<void property="methods">
<void property="text">
<string>startProcess</string>
@@ -73,7 +38,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode4" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode2" class="com.horstmann.violet.ClassNode">
<void property="methods">
<void property="text">
<string>execute</string>
@@ -93,7 +58,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode5" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode3" class="com.horstmann.violet.ClassNode">
<void property="attributes">
<void property="text">
<string>outFlow</string>
@@ -113,12 +78,12 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode6" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode4" class="com.horstmann.violet.ClassNode">
<void property="attributes">
<void property="text">
<string>name
-inFlows
-outFlows</string>
+inFlow
+outFlow</string>
</void>
</void>
<void property="name">
@@ -135,7 +100,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode7" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode5" class="com.horstmann.violet.ClassNode">
<void property="attributes">
<void property="text">
<string>name
@@ -156,7 +121,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode8" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode6" class="com.horstmann.violet.ClassNode">
<void property="attributes">
<void property="text">
<string>name</string>
@@ -176,7 +141,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode9" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode7" class="com.horstmann.violet.ClassNode">
<void property="attributes">
<void property="text">
<string>name
@@ -204,7 +169,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode10" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode8" class="com.horstmann.violet.ClassNode">
<void property="attributes">
<void property="text">
<string>parent
@@ -232,7 +197,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode11" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode9" class="com.horstmann.violet.ClassNode">
<void property="attributes">
<void property="text">
<string>inFlow
@@ -258,29 +223,9 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode12" class="com.horstmann.violet.ClassNode">
- <void property="attributes">
- <void property="text">
- <string>process</string>
- </void>
- </void>
+ <object id="ClassNode10" class="com.horstmann.violet.ClassNode">
<void property="name">
<void property="text">
- <string>Token</string>
- </void>
- </void>
- </object>
- <object class="java.awt.geom.Point2D$Double">
- <void method="setLocation">
- <double>589.0</double>
- <double>15.0</double>
- </void>
- </object>
- </void>
- <void method="addNode">
- <object id="ClassNode13" class="com.horstmann.violet.ClassNode">
- <void property="name">
- <void property="text">
<string>ExclusiveGateway</string>
</void>
</void>
@@ -293,7 +238,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode14" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode11" class="com.horstmann.violet.ClassNode">
<void property="name">
<void property="text">
<string>InclusiveGateway</string>
@@ -308,7 +253,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode15" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode12" class="com.horstmann.violet.ClassNode">
<void property="name">
<void property="text">
<string>ComplexGateway</string>
@@ -323,7 +268,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode16" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode13" class="com.horstmann.violet.ClassNode">
<void property="name">
<void property="text">
<string>ParallelGateway</string>
@@ -338,7 +283,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode17" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode14" class="com.horstmann.violet.ClassNode">
<void property="name">
<void property="text">
<string>Result</string>
@@ -353,7 +298,7 @@
</object>
</void>
<void method="addNode">
- <object id="ClassNode18" class="com.horstmann.violet.ClassNode">
+ <object id="ClassNode15" class="com.horstmann.violet.ClassNode">
<void property="name">
<void property="text">
<string>Attachments</string>
@@ -376,8 +321,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode5"/>
- <object idref="ClassNode4"/>
+ <object idref="ClassNode3"/>
+ <object idref="ClassNode2"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -388,8 +333,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode4"/>
<object idref="ClassNode2"/>
+ <object idref="ClassNode0"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -400,8 +345,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode6"/>
<object idref="ClassNode4"/>
+ <object idref="ClassNode2"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -412,19 +357,7 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode7"/>
- <object idref="ClassNode4"/>
- </void>
- <void method="connect">
- <object class="com.horstmann.violet.ClassRelationshipEdge">
- <void property="bentStyle">
- <object class="com.horstmann.violet.BentStyle" field="VHV"/>
- </void>
- <void property="endArrowHead">
- <object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
- </void>
- </object>
- <object idref="ClassNode9"/>
+ <object idref="ClassNode5"/>
<object idref="ClassNode2"/>
</void>
<void method="connect">
@@ -436,8 +369,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode3"/>
- <object idref="ClassNode8"/>
+ <object idref="ClassNode7"/>
+ <object idref="ClassNode0"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -448,8 +381,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode10"/>
- <object idref="ClassNode3"/>
+ <object idref="ClassNode1"/>
+ <object idref="ClassNode6"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -460,32 +393,20 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode11"/>
<object idref="ClassNode8"/>
+ <object idref="ClassNode1"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
<void property="bentStyle">
- <object class="com.horstmann.violet.BentStyle" field="HVH"/>
- </void>
- <void property="endArrowHead">
- <object class="com.horstmann.violet.ArrowHead" field="V"/>
- </void>
- </object>
- <object idref="ClassNode12"/>
- <object idref="ClassNode0"/>
- </void>
- <void method="connect">
- <object class="com.horstmann.violet.ClassRelationshipEdge">
- <void property="bentStyle">
<object class="com.horstmann.violet.BentStyle" field="VHV"/>
</void>
<void property="endArrowHead">
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode0"/>
- <object idref="ClassNode1"/>
+ <object idref="ClassNode9"/>
+ <object idref="ClassNode6"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -496,8 +417,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode13"/>
- <object idref="ClassNode9"/>
+ <object idref="ClassNode10"/>
+ <object idref="ClassNode7"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -508,8 +429,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode14"/>
- <object idref="ClassNode9"/>
+ <object idref="ClassNode11"/>
+ <object idref="ClassNode7"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -520,8 +441,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode15"/>
- <object idref="ClassNode9"/>
+ <object idref="ClassNode12"/>
+ <object idref="ClassNode7"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -532,20 +453,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode16"/>
- <object idref="ClassNode9"/>
- </void>
- <void method="connect">
- <object class="com.horstmann.violet.ClassRelationshipEdge">
- <void property="bentStyle">
- <object class="com.horstmann.violet.BentStyle" field="HVH"/>
- </void>
- <void property="endArrowHead">
- <object class="com.horstmann.violet.ArrowHead" field="V"/>
- </void>
- </object>
+ <object idref="ClassNode13"/>
<object idref="ClassNode7"/>
- <object idref="ClassNode17"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -556,8 +465,8 @@
<object class="com.horstmann.violet.ArrowHead" field="V"/>
</void>
</object>
- <object idref="ClassNode2"/>
- <object idref="ClassNode12"/>
+ <object idref="ClassNode5"/>
+ <object idref="ClassNode14"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -568,8 +477,8 @@
<object class="com.horstmann.violet.ArrowHead" field="V"/>
</void>
</object>
- <object idref="ClassNode17"/>
- <object idref="ClassNode18"/>
+ <object idref="ClassNode14"/>
+ <object idref="ClassNode15"/>
</void>
<void method="connect">
<object class="com.horstmann.violet.ClassRelationshipEdge">
@@ -580,8 +489,8 @@
<object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>
</void>
</object>
- <object idref="ClassNode8"/>
- <object idref="ClassNode2"/>
+ <object idref="ClassNode6"/>
+ <object idref="ClassNode0"/>
</void>
</object>
</java>
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -29,10 +29,10 @@
import org.jboss.bpm.model.ExecutionHandler;
import org.jboss.bpm.model.FlowHandler;
import org.jboss.bpm.model.FlowObject;
-import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Result;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.SignalHandler;
+import org.jboss.bpm.model.internal.ProcessImpl;
import org.jboss.bpm.runtime.Attachments;
/**
@@ -57,7 +57,7 @@
* @param att The Attachments in the ExecutionContext
* @return The Future from which to obtain the process result
*/
- public abstract Future<Result> startProcess(Process proc, Attachments att);
+ public abstract Future<Result> startProcess(ProcessImpl proc, Attachments att);
/**
* Locate the signal manager
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -35,6 +35,7 @@
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.EngineShutdownException;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.internal.ProcessImpl;
import org.jboss.bpm.util.ProcessMarshaller;
/**
@@ -148,16 +149,16 @@
{
// Only initialize if this has not already been done
if (proc.getProcessState() == Process.ProcessState.CREATED)
- proc.initialize();
+ ((ProcessImpl)proc).initialize();
marshallProcess(proc);
- return procs.add(proc);
+ return procs.add((ProcessImpl)proc);
}
/**
* Remove a Process
*/
- public void removeProcess(Process proc)
+ public void removeProcess(ProcessImpl proc)
{
procs.remove(proc.getName());
}
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -40,10 +40,14 @@
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Result;
-import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.SignalHandler;
import org.jboss.bpm.model.StartEvent;
+import org.jboss.bpm.model.internal.ExecutionHandlerImpl;
+import org.jboss.bpm.model.internal.ProcessImpl;
+import org.jboss.bpm.model.internal.SequenceFlowImpl;
+import org.jboss.bpm.model.internal.StartEventImpl;
+import org.jboss.bpm.model.internal.jaxb.JAXBSequenceFlow;
import org.jboss.bpm.runtime.Attachments;
import org.jboss.bpm.runtime.Token;
@@ -64,13 +68,13 @@
}
@Override
- public Future<Result> startProcess(Process proc, Attachments att)
+ public Future<Result> startProcess(ProcessImpl proc, Attachments att)
{
throwSignal(new Signal(proc, Signal.Type.ENTER_PROCESS));
try
{
Token token = new Token(proc, att);
- StartEvent start = proc.getStartEvent();
+ StartEventImpl start = proc.getStartEvent();
token.addTailFlow(new InitialFlow(start));
while (token.peekHeadFlow() != null)
@@ -112,10 +116,11 @@
/**
* The initial flow 'to' the StartEvent
*/
- class InitialFlow extends SequenceFlow
+ class InitialFlow extends SequenceFlowImpl
{
InitialFlow(StartEvent start)
{
+ super(new JAXBSequenceFlow());
setTarget(start);
}
}
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -33,8 +33,9 @@
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.client.ProcessEngine;
import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.internal.ProcessImpl;
+import org.jboss.bpm.util.ProcessUnmarshaller;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.util.ProcessUnmarshaller;
/**
* The process manager is the entry point to create, find and otherwise manage processes.
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractEndEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractEndEvent.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractEndEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,75 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlType;
-
-// $Id$
-
-/**
- * As the name implies, the End Event indicates where a Process will end.
- *
- * In terms of Sequence Flow, the End Event ends the flow of the Process, and thus, will not have any outgoing Sequence Flow. An End Event can have a specific Result
- * that will appear as a marker within the center of the End Event shape. End Event Results are Message, Error, Compensation, Link, and Multiple.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "AbstractEndEvent")
-abstract class AbstractEndEvent extends Event implements NamedFlowObject
-{
- private String name;
-
- public AbstractEndEvent()
- {
- }
-
- /**
- * Construct a Activity with a given name
- */
- public AbstractEndEvent(String name)
- {
- this.name = name;
- }
-
- /**
- * Get the name
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Set the name.
- * Note, this MUST NOT leak into the public API.
- */
- @XmlAttribute(required = true)
- protected void setName(String name)
- {
- if (this.name != null)
- throw new IllegalStateException("Cannot rename: " + name);
-
- this.name = name;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractEvent.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,96 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlType;
-
-
-
-
-// $Id$
-
-/**
- * An Event is something that “happens” during the course of a business process.
- * These Events affect the flow of the Process and usually have a cause or an impact.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="AbstractEvent")
-abstract class AbstractEvent extends FlowObjectImpl
-{
- protected ExecutionHandler executionHandler;
- protected FlowHandler flowHandler;
- protected SignalHandler signalHandler;
-
- /**
- * Get the ExecutionHandler for this Event
- */
- public ExecutionHandler getExecutionHandler()
- {
- return executionHandler;
- }
-
- /**
- * Set the ExecutionHandler for this Event
- */
- @XmlElement(name = "execution-handler", required = false)
- protected void setExecutionHandler(ExecutionHandler executionHandler)
- {
- this.executionHandler = executionHandler;
- }
-
- /**
- * Get the FlowHandler for this Event
- */
- public FlowHandler getFlowHandler()
- {
- return flowHandler;
- }
-
- /**
- * Set the FlowHandler for this Event
- */
- @XmlElement(name = "flow-handler", required = false)
- protected void setFlowHandler(FlowHandler flowHandler)
- {
- this.flowHandler = flowHandler;
- }
-
- /**
- * Get the SignalHandler for this Event
- */
- public SignalHandler getSignalHandler()
- {
- return signalHandler;
- }
-
- /**
- * Set the SignalHandler for this Event
- */
- @XmlElement(name = "signal-handler", required = false)
- protected void setSignalHandler(SignalHandler signalHandler)
- {
- this.signalHandler = signalHandler;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractFlow.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractFlow.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractFlow.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,92 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlType;
-
-// $Id$
-
-/**
- * A Flow is a graphical line connecting two objects in a BPD.
- *
- * There are two types of Flow: Sequence Flow and Message Flow, each with their own line style. Flow is also used in a generic sense (and lowercase) to describe how
- * Tokens will traverse Sequence Flow from the Start Event to an End Event.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "AbstractFlow")
-abstract class AbstractFlow
-{
- private String name;
- private String targetName;
-
- /**
- * Construct a flow with no target
- */
- public AbstractFlow()
- {
- }
-
- /**
- * Construct a flow with a given target
- */
- public AbstractFlow(String targetName)
- {
- this.targetName = targetName;
- }
-
- /**
- * Get the optional name
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Set the optional name Note, this MUST NOT leak into the public API.
- */
- @XmlAttribute(required = false)
- protected void setName(String name)
- {
- this.name = name;
- }
-
- /**
- * Get the target name
- */
- public String getTargetName()
- {
- return targetName;
- }
-
- /**
- * Set the target name Note, this MUST NOT leak into the public API.
- */
- @XmlAttribute(name = "to", required = true)
- protected void setTargetName(String targetName)
- {
- this.targetName = targetName;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractItermediateEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractItermediateEvent.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractItermediateEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,102 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElements;
-import javax.xml.bind.annotation.XmlType;
-
-
-// $Id$
-
-/**
- * An Intermediate Event is an Event that occurs after a Process has been started.
- *
- * It will affect the Flow of the Process, but will not start or (directly) terminate the Process.
- * An Intermediate Event will show where messages or delays are expected within the Process,
- * disrupt the Normal Flow through exception handling, or show the extra flow required for compensating a transaction.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="AbstractItermediateEvent")
-abstract class AbstractItermediateEvent extends Event implements MultipleOutFlowSupport, MultipleInFlowSupport, NamedFlowObject
-{
- private String name;
-
- @XmlElements( {
- @XmlElement(name = "sequence", type = SequenceFlow.class),
- @XmlElement(name = "message", type = MessageFlow.class)
- })
-
- protected List<Flow> outFlows = new ArrayList<Flow>();
- /**
- * Construct an anonymous StartEvent.
- * Note, this MUST NOT leak into the public API.
- */
- protected AbstractItermediateEvent()
- {
- }
-
- /**
- * Construct a Activity with a given name
- */
- public AbstractItermediateEvent(String name)
- {
- this.name = name;
- }
-
- /**
- * Get the name
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Set the name.
- * Note, this MUST NOT leak into the public API.
- */
- @XmlAttribute(required = true)
- protected void setName(String name)
- {
- if (this.name != null)
- throw new IllegalStateException("Cannot rename: " + name);
-
- this.name = name;
- }
-
- public List<Flow> getOutFlows()
- {
- return outFlows;
- }
-
- protected void setOutFlow(List<Flow> outFlow)
- {
- this.outFlows = outFlow;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractProcess.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractProcess.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractProcess.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,79 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElements;
-import javax.xml.bind.annotation.XmlType;
-
-
-
-/**
- * A Process is any Activity performed within a company or organization.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "AbstractProcess")
-abstract class AbstractProcess extends ActivityImpl
-{
- @XmlElements( {
- @XmlElement(name = "start", type = StartEvent.class),
- @XmlElement(name = "event", type = ItermediateEvent.class),
- @XmlElement(name = "task", type = Task.class),
- @XmlElement(name = "exclusive-gateway", type = ExclusiveGateway.class),
- @XmlElement(name = "inclusive-gateway", type = InclusiveGateway.class),
- @XmlElement(name = "complex-gateway", type = ComplexGateway.class),
- @XmlElement(name = "parallel-gateway", type = ParallelGateway.class),
- @XmlElement(name = "sub-process", type = SubProcess.class),
- @XmlElement(name = "end", type = EndEvent.class)
- })
- protected List<FlowObjectImpl> flowObjects = new ArrayList<FlowObjectImpl>();
-
- /**
- * Construct an anonymous process
- */
- public AbstractProcess()
- {
- }
-
- /**
- * Construct a process with a given name
- */
- public AbstractProcess(String name)
- {
- super(name);
- }
-
- /**
- * Get the list of flow objects
- */
- public List<FlowObjectImpl> getFlowObjects()
- {
- return flowObjects;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractStartEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractStartEvent.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractStartEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,77 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElements;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-
-/**
- * A Start Event indicates where a particular Process will start.
- *
- * In terms of Sequence Flow, the Start Event starts the Flow of the Process, and thus, will not have any incoming Sequence Flow.
- * A Start Event can have a Trigger that indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="AbstractStartEvent")
-abstract class AbstractStartEvent extends Event implements SingleOutFlowSupport
-{
- @XmlElements( {
- @XmlElement(name = "sequence", type = SequenceFlow.class),
- @XmlElement(name = "message", type = MessageFlow.class)
- })
- protected Flow outFlow;
-
- /**
- * Construct an anonymous StartEvent.
- * Note, this MUST NOT leak into the public API.
- */
- protected AbstractStartEvent()
- {
- }
-
- /**
- * Get the out flow
- */
- public Flow getOutFlow()
- {
- return outFlow;
- }
-
- /**
- * Set the out flow
- * Note, this MUST NOT leak into the public API.
- */
- @XmlTransient
- public void setOutFlow(Flow outFlow)
- {
- if (this.outFlow != null)
- throw new IllegalStateException("Cannot reassign out flow");
- this.outFlow = outFlow;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractSubProcess.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractSubProcess.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractSubProcess.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,134 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElements;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-/**
- * A Sub-Process is Process that is included within another Process.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="AbstractSubProcess")
-abstract class AbstractSubProcess extends Process implements SingleOutFlowSupport
-{
- protected ExecutionHandler executionHandler;
- protected FlowHandler flowHandler;
- protected SignalHandler signalHandler;
-
- @XmlElements( {
- @XmlElement(name = "sequence", type = SequenceFlow.class),
- @XmlElement(name = "message", type = MessageFlow.class)
- })
- protected Flow outFlow;
-
- /**
- * Construct an anonymous process
- * Note, this MUST NOT leak into the public API.
- */
- protected AbstractSubProcess()
- {
- }
-
- /**
- * Construct a process with a given name
- * Note, this MUST NOT leak into the public API.
- */
- protected AbstractSubProcess(String name)
- {
- super(name);
- }
-
- /**
- * Get the out flow
- */
- public Flow getOutFlow()
- {
- return outFlow;
- }
-
- /**
- * Set the out flow Note, this MUST NOT leak into the public API.
- */
- @XmlTransient
- public void setOutFlow(Flow outFlow)
- {
- this.outFlow = outFlow;
- }
-
- /**
- * Get the ExecutionHandler for this Event
- */
- public ExecutionHandler getExecutionHandler()
- {
- return executionHandler;
- }
-
- /**
- * Set the ExecutionHandler for this Event
- */
- @XmlElement(name = "execution-handler")
- protected void setExecutionHandler(ExecutionHandler executionHandler)
- {
- this.executionHandler = executionHandler;
- }
-
- /**
- * Get the FlowHandler for this Event
- */
- public FlowHandler getFlowHandler()
- {
- return flowHandler;
- }
-
- /**
- * Set the FlowHandler for this Event
- */
- @XmlElement(name = "flow-handler")
- protected void setFlowHandler(FlowHandler flowHandler)
- {
- this.flowHandler = flowHandler;
- }
-
- /**
- * Get the SignalHandler for this Event
- */
- public SignalHandler getSignalHandler()
- {
- return signalHandler;
- }
-
- /**
- * Set the SignalHandler for this Event
- */
- @XmlElement(name = "signal-handler")
- protected void setSignalHandler(SignalHandler signalHandler)
- {
- this.signalHandler = signalHandler;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractTask.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractTask.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/AbstractTask.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,135 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElements;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-//$Id$
-
-/**
- * A Task is an Atomic Activity that is included within a Process.
- *
- * A Task is used when the work in the Process is not broken down to a finer level of Process Model detail. Generally, an end-user and/or an application are used to
- * perform the Task when it is executed.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "AbstractTask")
-abstract class AbstractTask extends ActivityImpl implements SingleOutFlowSupport
-{
- protected ExecutionHandler executionHandler;
- protected FlowHandler flowHandler;
- protected SignalHandler signalHandler;
-
- @XmlElements( {
- @XmlElement(name = "sequence", type = SequenceFlow.class),
- @XmlElement(name = "message", type = MessageFlow.class)
- })
- protected Flow outFlow;
-
- /**
- * Construct an anonymous Task
- */
- public AbstractTask()
- {
- }
-
- /**
- * Construct a Task with a given name
- */
- public AbstractTask(String name)
- {
- super(name);
- }
-
- /**
- * Get the out flow
- */
- public Flow getOutFlow()
- {
- return outFlow;
- }
-
- /**
- * Set the out flow Note, this MUST NOT leak into the public API.
- */
- @XmlTransient
- public void setOutFlow(Flow outFlow)
- {
- this.outFlow = outFlow;
- }
-
- /**
- * Get the ExecutionHandler for this Event
- */
- public ExecutionHandler getExecutionHandler()
- {
- return executionHandler;
- }
-
- /**
- * Set the ExecutionHandler for this Event
- */
- @XmlElement(name = "execution-handler")
- protected void setExecutionHandler(ExecutionHandler executionHandler)
- {
- this.executionHandler = executionHandler;
- }
-
- /**
- * Get the FlowHandler for this Event
- */
- public FlowHandler getFlowHandler()
- {
- return flowHandler;
- }
-
- /**
- * Set the FlowHandler for this Event
- */
- @XmlElement(name = "flow-handler")
- protected void setFlowHandler(FlowHandler flowHandler)
- {
- this.flowHandler = flowHandler;
- }
-
- /**
- * Get the SignalHandler for this Event
- */
- public SignalHandler getSignalHandler()
- {
- return signalHandler;
- }
-
- /**
- * Set the SignalHandler for this Event
- */
- @XmlElement(name = "signal-handler")
- protected void setSignalHandler(SignalHandler signalHandler)
- {
- this.signalHandler = signalHandler;
- }
-}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Activity.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Activity.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Activity.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,6 +1,6 @@
package org.jboss.bpm.model;
-public interface Activity extends NamedFlowObject
+public interface Activity extends FlowObject, NamedFlowObject
{
}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ActivityImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ActivityImpl.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ActivityImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,71 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-
-// $Id$
-
-/**
- * An activity is a generic term for work that a company or organization performs via business processes.
- * An activity can be atomic or non-atomic (compound).
- * The types of activities that are a part of a Process Model are: Process, Sub-Process, and Task.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public abstract class ActivityImpl extends FlowObjectImpl implements Activity
-{
- private JAXBActivity delegate;
-
- /**
- * Construct an anonymous Activity
- * Note, this MUST NOT leak into the public API.
- */
- protected ActivityImpl()
- {
- }
-
- /**
- * Construct a Activity with a given name
- * Note, this MUST NOT leak into the public API.
- */
- public ActivityImpl(String name)
- {
- delegate.setName(name);
- }
-
- /**
- * Get the name
- */
- public String getName()
- {
- return delegate.getName();
- }
-
- public void setName(String name)
- {
- if (delegate.getName() != null)
- throw new IllegalStateException("Cannot rename: " + name);
-
- delegate.setName(name);
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ComplexGateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ComplexGateway.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ComplexGateway.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,63 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import javax.xml.bind.annotation.XmlType;
-
-
-// $Id$
-
-/**
- * A Complex Gateway handles situations that are not easily handled through the other types of Gateways.
- *
- * Complex Gateways can also be used to combine a set of linked simple Gateways into a single,
- * more compact situation. Modelers can provide complex expressions that determine the merging and/or
- * splitting behavior of the Gateway.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="ComplexGateway")
-public class ComplexGateway extends GatewayImpl
-{
- /**
- * Construct an anonymous Task
- * Note, this MUST NOT leak into the public API.
- */
- protected ComplexGateway()
- {
- }
-
- /**
- * Construct a Task with a given name
- * Note, this MUST NOT leak into the public API.
- */
- protected ComplexGateway(String name)
- {
- super(name);
- }
-
- public String toString()
- {
- return "ComplexGateway[" + getName() + "]";
- }
-}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,150 +1,11 @@
-/*
- * 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.jboss.bpm.model;
-//$Id$
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jboss.bpm.runtime.Attachments;
-import org.jboss.bpm.runtime.Token;
-
-/**
- * As the name implies, the End Event indicates where a Process will end.
- *
- * In terms of Sequence Flow, the End Event ends the flow of the Process, and thus, will not have any outgoing Sequence Flow.
- * An End Event can have a specific Result that will appear as a marker within the center of the End Event shape.
- * End Event Results are Message, Error, Compensation, Link, and Multiple.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="EndEvent")
-public class EndEvent extends AbstractEndEvent implements SingleInFlowSupport
+public interface EndEvent extends Event, NamedFlowObject, SingleInFlowSupport
{
- // provide logging
- private static final Log log = LogFactory.getLog(EndEvent.class);
-
- private Result result;
- private Flow inFlow;
-
- /**
- * Construct an anonymous StartEvent.
- * Note, this MUST NOT leak into the public API.
- */
- protected EndEvent()
- {
- }
-
- /**
- * Construct an anonymous StartEvent.
- * Note, this MUST NOT leak into the public API.
- */
- protected EndEvent(String name)
- {
- super(name);
- }
-
- /**
- * Get the out flow
- */
- public Flow getInFlow()
- {
- return inFlow;
- }
-
- /**
- * Set the in flow
- */
- @XmlTransient
- public void setInFlow(Flow inFlow)
- {
- this.inFlow = inFlow;
- }
-
/**
* Get the result
*/
- @XmlTransient
- public Result getResult()
- {
- return result;
- }
+ Result getResult();
- @XmlTransient
- public FlowHandler getDefaultFlowHandler()
- {
- return new FlowHandler()
- {
- @Override
- public void transfer(Token token)
- {
- log.debug("End reached in: " + getName());
- }
- };
- }
-
- public SignalHandler getDefaultSignalHandler()
- {
- final FlowObject end = this;
- return new SignalHandler()
- {
- public Signal getEnterSignal()
- {
- return new Signal(end, Signal.Type.ENTER_END_EVENT);
- }
-
- public Signal getExitSignal()
- {
- return new Signal(end, Signal.Type.EXIT_END_EVENT);
- }
- };
- }
-
- @XmlTransient
- public ExecutionHandler getDefaultExecutionHandler()
- {
- return new ExecutionHandler()
- {
- @Override
- public void execute(final Token token)
- {
- // Provide the result
- result = new Result()
- {
- public Attachments getAttachments()
- {
- return token.getExecutionContext();
- }
- };
- }
- };
- }
-
- public String toString()
- {
- return "EndEvent[" + getName() + "]";
- }
}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ErrorResult.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ErrorResult.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ErrorResult.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,35 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-
-// $Id$
-
-/**
- * Represents the result of an End event as an Error.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public interface ErrorResult extends Result
-{
-}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Event.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Event.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Event.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,45 +1,6 @@
-/*
- * 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.jboss.bpm.model;
-//$Id$
-
-import javax.xml.bind.annotation.XmlType;
-
-/**
- * An Event is something that “happens” during the course of a business process.
- * These Events affect the flow of the Process and usually have a cause or an impact.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="Event")
-public abstract class Event extends AbstractEvent implements Executable
+public interface Event extends FlowObject, Executable
{
- /**
- * Construct an anonymous StartEvent.
- * Note, this MUST NOT leak into the public API.
- */
- protected Event()
- {
- }
+
}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ExclusiveGateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ExclusiveGateway.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ExclusiveGateway.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,59 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import javax.xml.bind.annotation.XmlType;
-
-
-/**
- * A point in the workflow process where, based on a decision or workflow control data, one of several branches is chosen.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="ExclusiveGateway")
-public class ExclusiveGateway extends GatewayImpl
-{
- /**
- * Construct an anonymous Task
- * Note, this MUST NOT leak into the public API.
- */
- protected ExclusiveGateway()
- {
- }
-
- /**
- * Construct a Task with a given name
- * Note, this MUST NOT leak into the public API.
- */
- protected ExclusiveGateway(String name)
- {
- super(name);
- }
-
- public String toString()
- {
- return "ExclusiveGateway[" + getName() + "]";
- }
-}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ExecutionHandler.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ExecutionHandler.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ExecutionHandler.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,52 +1,12 @@
-/*
- * 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.jboss.bpm.model;
-//$Id$
-
-import javax.xml.bind.annotation.XmlType;
-
import org.jboss.bpm.runtime.Token;
-/**
- * Implement to make the FlowObject executable
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "ExecutionHandler")
-public class ExecutionHandler extends Handler
+public interface ExecutionHandler extends Handler
{
- private ExecutionHandler delegate;
-
/**
* Execute this flow object
*/
- public void execute(Token token)
- {
- if (delegate == null)
- {
- delegate = newInstance(ExecutionHandler.class);
- }
- delegate.execute(token);
- }
+ void execute(Token token);
+
}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Flow.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Flow.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Flow.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,99 +1,25 @@
-/*
- * 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.jboss.bpm.model;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-
-
-// $Id$
-
-/**
- * A Flow is a graphical line connecting two objects in a BPD.
- *
- * There are two types of Flow: Sequence Flow and Message Flow, each with their own line style.
- * Flow is also used in a generic sense (and lowercase) to describe how Tokens will traverse
- * Sequence Flow from the Start Event to an End Event.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="Flow")
-public abstract class Flow extends AbstractFlow
+public interface Flow
{
- private FlowObject source;
- private FlowObject target;
-
/**
- * Construct a flow with no target
- * Note, this MUST NOT leak into the public API.
+ * Get the optional name
*/
- protected Flow()
- {
- }
-
+ String getName();
+
/**
- * Construct a flow with a given target
- * Note, this MUST NOT leak into the public API.
+ * Get the target name
*/
- public Flow(String targetName)
- {
- super(targetName);
- }
-
+ String getTargetName();
+
/**
* Get the source flow object
*/
- public FlowObject getSource()
- {
- return source;
- }
+ FlowObject getSource();
/**
- * Set the source flow object
- * Note, this MUST NOT leak into the public API.
- */
- @XmlTransient
- public void setSource(FlowObject source)
- {
- this.source = source;
- }
-
- /**
* Get the target flow object
*/
- public FlowObject getTarget()
- {
- return target;
- }
+ FlowObject getTarget();
- /**
- * Set the target flow object
- * Note, this MUST NOT leak into the public API.
- */
- @XmlTransient
- public void setTarget(FlowObject target)
- {
- this.target = target;
- }
}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/FlowHandler.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/FlowHandler.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/FlowHandler.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,55 +1,16 @@
-/*
- * 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.jboss.bpm.model;
-//$Id$
-
-import javax.xml.bind.annotation.XmlType;
-
import org.jboss.bpm.runtime.Token;
-/**
- * Implement to handle the outgoing Flows for an FlowObject
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "FlowHandler")
-public class FlowHandler extends Handler
+public interface FlowHandler extends Handler
{
- private FlowHandler delegate;
-
+
/**
* Transfer the token to the FlowHandler.
* <p/>
* The FlowHandler will add the active outgoing @{link Flow}s to
* @{link Token}'s flow queue.
*/
- public void transfer(Token token)
- {
- if (delegate == null)
- {
- delegate = newInstance(FlowHandler.class);
- }
- delegate.transfer(token);
- }
+ void transfer(Token token);
+
}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/FlowObjectImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/FlowObjectImpl.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/FlowObjectImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,148 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.NameNotUniqueException;
-
-//$Id$
-
-/**
- * A Flow Object is one of the set of following graphical objects: Event, Activity, and Gateway.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public abstract class FlowObjectImpl implements FlowObject
-{
- private JAXBFlowObject delegate;
-
- /**
- * Construct an anonymous StartEvent.
- * Note, this MUST NOT leak into the public API.
- */
- protected FlowObjectImpl()
- {
- }
-
- public Process getProcess()
- {
- return delegate.getProcess();
- }
-
- protected void setProcess(Process process)
- {
- delegate.setProcess(process);
- }
-
- /**
- * Initialize the flow object
- */
- protected void initialize(Process proc)
- {
- delegate.setProcess(proc);
-
- if (this instanceof NamedFlowObject)
- {
- // Check required name
- String name = ((NamedFlowObject)this).getName();
- if (name == null)
- throw new InvalidProcessException("Name is required for: " + this);
-
- // Check name uniqueness
- for (FlowObject aux : proc.getFlowObjects())
- {
- if (aux != this && aux instanceof NamedFlowObject)
- {
- String auxName = ((NamedFlowObject)aux).getName();
- if (name.equals(auxName))
- throw new NameNotUniqueException("NamedFlowObject: " + this);
- }
- }
- }
-
- // Initialize in/out flows
- Flow outFlow = null;
- if (this instanceof SingleOutFlowSupport)
- {
- SingleOutFlowSupport sof = (SingleOutFlowSupport)this;
- outFlow = sof.getOutFlow();
- initFlow(proc, outFlow);
- }
- else if (this instanceof MultipleOutFlowSupport)
- {
- MultipleOutFlowSupport mof = (MultipleOutFlowSupport)this;
- for (Flow flow : mof.getOutFlows())
- {
- outFlow = flow;
- initFlow(proc, flow);
- }
- }
-
- Flow inFlow = null;
- if (this instanceof SingleInFlowSupport)
- {
- SingleInFlowSupport sif = (SingleInFlowSupport)this;
- inFlow = sif.getInFlow();
- }
- else if (this instanceof MultipleInFlowSupport)
- {
- MultipleInFlowSupport mif = (MultipleInFlowSupport)this;
- for (Flow flow : mif.getInFlows())
- {
- inFlow = flow;
- }
- }
-
- if (inFlow == null && outFlow == null)
- throw new InvalidProcessException("Unconnected flow object: " + this);
- }
-
- private void initFlow(Process proc, Flow flow)
- {
- if (flow != null)
- {
- String name = flow.getTargetName();
- FlowObject target = proc.findFlowObject(name);
- if (target == null)
- throw new InvalidProcessException("Cannot find target for out flow: " + name);
-
- if (target instanceof SingleInFlowSupport)
- {
- SingleInFlowSupport sif = (SingleInFlowSupport)target;
- sif.setInFlow(flow);
- }
- else if (target instanceof MultipleInFlowSupport)
- {
- MultipleInFlowSupport mif = (MultipleInFlowSupport)target;
- mif.addInFlow(flow);
- }
- else
- {
- throw new InvalidProcessException("Target does not support in flow: " + target);
- }
-
- flow.setSource(this);
- flow.setTarget(target);
- }
- }
- }
\ No newline at end of file
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,7 @@
+package org.jboss.bpm.model;
+
+
+public interface Gateway extends FlowObject, NamedFlowObject, Executable, MultipleOutFlowSupport, MultipleInFlowSupport
+{
+
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/GatewayImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/GatewayImpl.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/GatewayImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,127 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jboss.bpm.runtime.Token;
-
-/**
- * Gateways are modelling elements that are used to control how Sequence Flow interact as they converge and diverge within a Process. If the flow does not need to be
- * controlled, then a Gateway is not needed.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "Gateway")
-public abstract class GatewayImpl extends JAXBGateway implements NamedFlowObject, Executable
-{
- // provide logging
- private static final Log log = LogFactory.getLog(GatewayImpl.class);
-
- @XmlTransient
- protected List<Flow> inFlows = new ArrayList<Flow>();
-
- /**
- * Construct an anonymous Gateway Note, this MUST NOT leak into the public API.
- */
- protected GatewayImpl()
- {
- }
-
- /**
- * Construct a Gateway with a given name Note, this MUST NOT leak into the public API.
- */
- protected GatewayImpl(String name)
- {
- super(name);
- }
-
- public void addOutFlow(Flow flow)
- {
- outFlows.add(flow);
- }
-
- public List<Flow> getInFlows()
- {
- return Collections.unmodifiableList(inFlows);
- }
-
- public void addInFlow(Flow inFlow)
- {
- this.inFlows.add(inFlow);
- }
-
- @XmlTransient
- public FlowHandler getDefaultFlowHandler()
- {
- return new FlowHandler()
- {
- @Override
- public void transfer(Token token)
- {
- List<Flow> outFlows = getOutFlows();
- if (outFlows.size() == 1)
- token.addTailFlow(outFlows.get(0));
- }
- };
- }
-
- public SignalHandler getDefaultSignalHandler()
- {
- final FlowObject gateway = this;
- return new SignalHandler()
- {
- public Signal getEnterSignal()
- {
- return new Signal(gateway, Signal.Type.ENTER_GATEWAY);
- }
-
- public Signal getExitSignal()
- {
- return new Signal(gateway, Signal.Type.EXIT_GATEWAY);
- }
- };
- }
-
- @XmlTransient
- public ExecutionHandler getDefaultExecutionHandler()
- {
- return new ExecutionHandler()
- {
- @Override
- public void execute(Token token)
- {
- log.debug("Nothing to do in gateway: " + getName());
- }
- };
- }
-}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Handler.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Handler.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Handler.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,90 +1,6 @@
-/*
- * 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.jboss.bpm.model;
-//$Id$
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlType;
-
-import org.jboss.bpm.NotImplementedException;
-
-
-/**
- * Implement to handle the outgoing Flows for an FlowObject
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "Handler")
-public abstract class Handler
+public interface Handler
{
- private String className;
- private String beanRef;
- public String getClassName()
- {
- return className;
- }
-
- @XmlAttribute(name = "class", required = false)
- public void setClassName(String className)
- {
- this.className = className;
- }
-
- public String getBeanRef()
- {
- return beanRef;
- }
-
- @XmlAttribute(name = "bean", required = false)
- public void setBeanRef(String beanRef)
- {
- this.beanRef = beanRef;
- }
-
- @SuppressWarnings("unchecked")
- protected <T> T newInstance(Class<T> clazz)
- {
- try
- {
- if (className != null)
- {
- ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
- return (T)ctxLoader.loadClass(className).newInstance();
- }
- else if (beanRef != null)
- {
- throw new NotImplementedException();
- }
- else
- {
- throw new IllegalStateException("There is no 'class' nor 'bean' attribute set for this handler");
- }
- }
- catch (Exception ex)
- {
- throw new IllegalStateException("Cannot instanciate the handler", ex);
- }
- }
}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/InclusiveGateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/InclusiveGateway.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/InclusiveGateway.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,61 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import javax.xml.bind.annotation.XmlType;
-
-
-// $Id$
-
-/**
- * This Decision represents a branching point where Alternatives are based on conditional expressions contained within outgoing Sequence Flow.
- * However, in this case, the True evaluation of one condition expression does not exclude the evaluation of other condition expressions.
- * All Sequence Flow with a True evaluation will be traversed by a Token.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="InclusiveGateway")
-public class InclusiveGateway extends GatewayImpl
-{
- /**
- * Construct an anonymous Task
- * Note, this MUST NOT leak into the public API.
- */
- protected InclusiveGateway()
- {
- }
-
- /**
- * Construct a Task with a given name
- * Note, this MUST NOT leak into the public API.
- */
- protected InclusiveGateway(String name)
- {
- super(name);
- }
-
- public String toString()
- {
- return "InclusiveGateway[" + getName() + "]";
- }
-}
\ No newline at end of file
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/IntermediateEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/IntermediateEvent.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/IntermediateEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,5 @@
+package org.jboss.bpm.model;
+
+public interface IntermediateEvent extends Event, NamedFlowObject, SingleInFlowSupport, SingleOutFlowSupport
+{
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/IntermediateEvent.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,138 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jboss.bpm.runtime.Token;
-
-
-// $Id$
-
-/**
- * An Intermediate Event is an Event that occurs after a Process has been started.
- *
- * It will affect the Flow of the Process, but will not start or (directly) terminate the Process.
- * An Intermediate Event will show where messages or delays are expected within the Process,
- * disrupt the Normal Flow through exception handling, or show the extra flow required for compensating a transaction.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="ItermediateEvent")
-public class ItermediateEvent extends AbstractItermediateEvent
-{
- // provide logging
- private static final Log log = LogFactory.getLog(ItermediateEvent.class);
-
- @XmlTransient
- protected List<Flow> inFlows = new ArrayList<Flow>();
-
- /**
- * Construct an anonymous StartEvent.
- * Note, this MUST NOT leak into the public API.
- */
- protected ItermediateEvent()
- {
- }
-
- /**
- * Construct an anonymous StartEvent.
- * Note, this MUST NOT leak into the public API.
- */
- protected ItermediateEvent(String name)
- {
- super(name);
- }
-
- public void addOutFlow(Flow flow)
- {
- outFlows.add(flow);
- }
-
- public List<Flow> getInFlows()
- {
- return Collections.unmodifiableList(inFlows);
- }
-
- public void addInFlow(Flow inFlow)
- {
- this.inFlows.add(inFlow);
- }
-
- @XmlTransient
- public FlowHandler getDefaultFlowHandler()
- {
- return new FlowHandler()
- {
- @Override
- public void transfer(Token token)
- {
- List<Flow> outFlows = getOutFlows();
- if (outFlows.size() == 1)
- token.addTailFlow(outFlows.get(0));
- }
- };
- }
-
- public SignalHandler getDefaultSignalHandler()
- {
- final FlowObject event = this;
- return new SignalHandler()
- {
- public Signal getEnterSignal()
- {
- return new Signal(event, Signal.Type.ENTER_EVENT);
- }
-
- public Signal getExitSignal()
- {
- return new Signal(event, Signal.Type.EXIT_EVENT);
- }
- };
- }
-
- @XmlTransient
- public ExecutionHandler getDefaultExecutionHandler()
- {
- return new ExecutionHandler()
- {
- @Override
- public void execute(Token token)
- {
- log.debug("Nothing to do in start-event");
- }
- };
- }
-
- public String toString()
- {
- return "ItermediateEvent[" + getName() + "]";
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBActivity.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBActivity.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBActivity.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,75 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlType;
-
-
-/**
- * An activity is a generic term for work that a company or organization performs via business processes.
- * An activity can be atomic or non-atomic (compound).
- * The types of activities that are a part of a Process Model are: Process, Sub-Process, and Task.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="Activity")
-abstract class JAXBActivity extends FlowObjectImpl implements Activity
-{
- protected String name;
-
- /**
- * Construct an anonymous Activity
- */
- public JAXBActivity()
- {
- }
-
- /**
- * Construct a Activity with a given name
- */
- public JAXBActivity(String name)
- {
- this.name = name;
- }
-
- /**
- * Get the name
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Set the name.
- * Note, this MUST NOT leak into the public API.
- */
- @XmlAttribute(required = true)
- public void setName(String name)
- {
- this.name = name;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBFlowObject.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBFlowObject.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBFlowObject.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,51 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-
-/**
- * A Flow Object is one of the set of following graphical objects: Event, Activity, and Gateway.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "FlowObject")
-abstract class JAXBFlowObject implements FlowObject
-{
- private Process process;
-
- public Process getProcess()
- {
- return process;
- }
-
- @XmlTransient
- public void setProcess(Process process)
- {
- this.process = process;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBGateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBGateway.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBGateway.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,152 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElements;
-import javax.xml.bind.annotation.XmlType;
-
-
-/**
- * Gateways are modelling elements that are used to control how Sequence Flow interact as they converge and diverge within a Process. If the flow does not need to be
- * controlled, then a Gateway is not needed.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "AbstractGateway")
-abstract class JAXBGateway extends FlowObjectImpl implements NamedFlowObject, MultipleOutFlowSupport, MultipleInFlowSupport
-{
- private String name;
- protected ExecutionHandler executionHandler;
- protected FlowHandler flowHandler;
- protected SignalHandler signalHandler;
-
- @XmlElements( {
- @XmlElement(name = "sequence", type = SequenceFlow.class),
- @XmlElement(name = "message", type = MessageFlow.class)
- })
- protected List<Flow> outFlows = new ArrayList<Flow>();
-
- /**
- * Construct an anonymous Gateway
- */
- public JAXBGateway()
- {
- }
-
- /**
- * Construct a Activity with a given name
- */
- public JAXBGateway(String name)
- {
- this.name = name;
- }
-
- /**
- * Get the name
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Set the name.
- * Note, this MUST NOT leak into the public API.
- */
- @XmlAttribute(required = true)
- protected void setName(String name)
- {
- if (this.name != null)
- throw new IllegalStateException("Cannot rename: " + name);
-
- this.name = name;
- }
-
- public List<Flow> getOutFlows()
- {
- return outFlows;
- }
-
- protected void setOutFlow(List<Flow> outFlow)
- {
- this.outFlows = outFlow;
- }
-
- /**
- * Get the ExecutionHandler for this Event
- */
- public ExecutionHandler getExecutionHandler()
- {
- return executionHandler;
- }
-
- /**
- * Set the ExecutionHandler for this Event
- */
- @XmlElement(name = "execution-handler")
- protected void setExecutionHandler(ExecutionHandler executionHandler)
- {
- this.executionHandler = executionHandler;
- }
-
- /**
- * Get the FlowHandler for this Event
- */
- public FlowHandler getFlowHandler()
- {
- return flowHandler;
- }
-
- /**
- * Set the FlowHandler for this Event
- */
- @XmlElement(name = "flow-handler")
- protected void setFlowHandler(FlowHandler flowHandler)
- {
- this.flowHandler = flowHandler;
- }
-
- /**
- * Get the SignalHandler for this Event
- */
- public SignalHandler getSignalHandler()
- {
- return signalHandler;
- }
-
- /**
- * Set the SignalHandler for this Event
- */
- @XmlElement(name = "signal-handler")
- protected void setSignalHandler(SignalHandler signalHandler)
- {
- this.signalHandler = signalHandler;
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MessageFlow.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MessageFlow.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MessageFlow.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,54 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import javax.xml.bind.annotation.XmlType;
-
-/**
- * A Message Flow is a dashed line that is used to show the flow of messages between two entities that are prepared to send and receive them.
- * In BPMN, two separate Pools in the Diagram will represent the two entities.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="MessageFlow")
-public class MessageFlow extends Flow
-{
- /**
- * Construct a flow with no target
- * Note, this MUST NOT leak into the public API.
- */
- protected MessageFlow()
- {
- }
-
- /**
- * Construct a flow with a given target
- * Note, this MUST NOT leak into the public API.
- */
- public MessageFlow(String targetName)
- {
- super(targetName);
- }
-}
\ No newline at end of file
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MessageResult.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MessageResult.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MessageResult.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,35 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-
-// $Id$
-
-/**
- * Represents the result of an End event as a Message.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public interface MessageResult extends Result
-{
-}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MultipleInFlowSupport.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MultipleInFlowSupport.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MultipleInFlowSupport.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -31,9 +31,6 @@
* Get the list of in flows
*/
List<Flow> getInFlows();
-
- /**
- * Add an out flow
- */
+
void addInFlow(Flow flow);
}
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MultipleOutFlowSupport.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MultipleOutFlowSupport.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/MultipleOutFlowSupport.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -31,9 +31,7 @@
* Get the list of out flows
*/
List<Flow> getOutFlows();
-
- /**
- * Add an out flow
- */
+
void addOutFlow(Flow flow);
+
}
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ObjectFactory.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ObjectFactory.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ObjectFactory.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,131 +0,0 @@
-//
-// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.3 in JDK 1.6
-// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
-// Any modifications to this file will be lost upon recompilation of the source schema.
-// Generated on: 2008.07.11 at 09:21:08 AM CEST
-//
-
-package org.jboss.bpm.model;
-
-import javax.xml.bind.annotation.XmlRegistry;
-
-
-/**
- * This object contains factory methods for each Java content interface and Java element interface generated in the api.bpm.jboss.org package.
- * <p>
- * An ObjectFactory allows you to programatically construct new instances of the Java representation for XML content. The Java representation of XML content can consist
- * of schema derived interfaces and classes representing the binding of schema type definitions, element declarations and model groups. Factory methods for each of
- * these are provided in this class.
- *
- */
-@XmlRegistry
-public class ObjectFactory
-{
- /**
- * Create an instance of {@link ExclusiveGateway }
- *
- */
- public ExclusiveGateway createExclusiveGateway()
- {
- return new ExclusiveGateway();
- }
-
- /**
- * Create an instance of {@link Task }
- *
- */
- public Task createTask()
- {
- return new Task();
- }
-
- /**
- * Create an instance of {@link Process }
- *
- */
- public Process createProcess()
- {
- return new Process();
- }
-
- /**
- * Create an instance of {@link ParallelGateway }
- *
- */
- public ParallelGateway createParallelGateway()
- {
- return new ParallelGateway();
- }
-
- /**
- * Create an instance of {@link MessageFlow }
- *
- */
- public MessageFlow createMessageFlow()
- {
- return new MessageFlow();
- }
-
- /**
- * Create an instance of {@link EndEvent }
- *
- */
- public EndEvent createEndEvent()
- {
- return new EndEvent();
- }
-
- /**
- * Create an instance of {@link SubProcess }
- *
- */
- public SubProcess createSubProcess()
- {
- return new SubProcess();
- }
-
- /**
- * Create an instance of {@link SequenceFlow }
- *
- */
- public SequenceFlow createSequenceFlow()
- {
- return new SequenceFlow();
- }
-
- /**
- * Create an instance of {@link ComplexGateway }
- *
- */
- public ComplexGateway createComplexGateway()
- {
- return new ComplexGateway();
- }
-
- /**
- * Create an instance of {@link InclusiveGateway }
- *
- */
- public InclusiveGateway createInclusiveGateway()
- {
- return new InclusiveGateway();
- }
-
- /**
- * Create an instance of {@link ItermediateEvent }
- *
- */
- public ItermediateEvent createItermediateEvent(String name)
- {
- return new ItermediateEvent(name);
- }
-
- /**
- * Create an instance of {@link StartEvent }
- *
- */
- public StartEvent createStartEvent()
- {
- return new StartEvent();
- }
-}
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ParallelGateway.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ParallelGateway.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ParallelGateway.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,78 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-import javax.xml.bind.annotation.XmlType;
-
-import org.jboss.bpm.runtime.Token;
-
-
-// $Id$
-
-/**
- * Parallel Gateway is required when two or more Activities need to be executed in parallel.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="ParallelGateway")
-public class ParallelGateway extends GatewayImpl
-{
- /**
- * Construct an anonymous Task
- * Note, this MUST NOT leak into the public API.
- */
- protected ParallelGateway()
- {
- }
-
- /**
- * Construct a Task with a given name
- * Note, this MUST NOT leak into the public API.
- */
- protected ParallelGateway(String name)
- {
- super(name);
- }
-
- /**
- * The DefaultFlowHandler adds all out flows to the queue
- */
- @Override
- public FlowHandler getDefaultFlowHandler()
- {
- return new FlowHandler()
- {
- @Override
- public void transfer(Token token)
- {
- for(Flow outFlow : getOutFlows())
- token.addTailFlow(outFlow);
- }
- };
- }
-
- public String toString()
- {
- return "ParallelGateway[" + getName() + "]";
- }
-}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,210 +1,48 @@
-/*
- * 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.jboss.bpm.model;
-//$Id: Process.java 1581 2008-07-10 19:41:52Z thomas.diesler(a)jboss.com $
-
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.concurrent.Future;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.client.ExecutionManager;
-import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.runtime.Attachments;
-/**
- * A Process is any Activity performed within a company or organization.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "Process")
-@XmlRootElement(name = "process")
-public class Process extends AbstractProcess
+public interface Process extends NamedFlowObject
{
- public enum ProcessState
+ enum ProcessState
{
CREATED, INITIALIZED, STARTED, ENDED
};
- private ProcessState processState = ProcessState.CREATED;
-
/**
- * Construct an anonymous process
- * Note, this MUST NOT leak into the public API.
- */
- protected Process()
- {
- setProcess(this);
- }
-
- /**
- * Construct a process with a given name
- * Note, this MUST NOT leak into the public API.
- */
- protected Process(String name)
- {
- super(name);
- setProcess(this);
- }
-
- /**
- * Add a flow object. Note, this MUST NOT leak into the public API.
- */
- protected void addFlowObject(FlowObjectImpl flowObject)
- {
- flowObjects.add(flowObject);
- }
-
- /**
* Get the start event
*/
- public StartEvent getStartEvent()
- {
- StartEvent start = null;
- for (FlowObject aux : flowObjects)
- {
- if (aux instanceof StartEvent)
- {
- start = (StartEvent)aux;
- break;
- }
- }
- return start;
- }
+ StartEvent getStartEvent();
/**
* Get the set of end events
*/
- public List<EndEvent> getEndEvents()
- {
- List<EndEvent> ends = new ArrayList<EndEvent>();
- for (FlowObject aux : flowObjects)
- {
- if (aux instanceof EndEvent)
- {
- ends.add((EndEvent)aux);
- }
- }
- return Collections.unmodifiableList(ends);
- }
+ List<EndEvent> getEndEvents();
/**
* Get the list of flow objects
*/
- public List<FlowObjectImpl> getFlowObjects()
- {
- if (processState == ProcessState.CREATED)
- return flowObjects;
+ List<FlowObject> getFlowObjects();
- return Collections.unmodifiableList(flowObjects);
- }
-
/** Start the process */
- public Future<Result> startProcess()
- {
- return startProcess(null);
- }
+ Future<Result> startProcess();
/** Start the process, with a given execution context */
- public Future<Result> startProcess(Attachments att)
- {
- if (processState != ProcessState.INITIALIZED)
- throw new IllegalStateException("Cannot start process in state: " + processState);
+ Future<Result> startProcess(Attachments att);
- processState = ProcessState.STARTED;
- ExecutionManager exm = ExecutionManager.locateExecutionManager();
- return exm.startProcess(this, att);
- }
-
/**
* Find a flow object by name
*
* @return null if not found
*/
- public FlowObject findFlowObject(String name)
- {
- if (name == null)
- throw new IllegalArgumentException("Cannot find flow object with name: null");
+ FlowObject findFlowObject(String name);
- FlowObject nfo = null;
- for (FlowObject aux : flowObjects)
- {
- if (aux instanceof NamedFlowObject)
- {
- NamedFlowObject auxnfo = (NamedFlowObject)aux;
- if (name.equals(auxnfo.getName()))
- {
- nfo = aux;
- break;
- }
- }
- }
- return nfo;
- }
-
/**
* Get the process state
*/
- public ProcessState getProcessState()
- {
- return processState;
- }
+ ProcessState getProcessState();
- /**
- * Set the process state
- */
- public void initialize()
- {
- if (processState != ProcessState.CREATED)
- throw new IllegalStateException("Cannot initialize process in state: " + processState);
-
- // Set the anonymous default name
- if (getName() == null)
- {
- ProcessManager pm = ProcessManager.locateProcessManager();
- setName("AnonymousProcess#" + pm.getProcesses().size());
- }
-
- if (getStartEvent() == null)
- throw new InvalidProcessException("Process does not have a start event");
-
- if (getEndEvents().size() == 0)
- throw new InvalidProcessException("Process does not have end events");
-
- // Set the associated process
- for (FlowObjectImpl aux : flowObjects)
- aux.initialize(this);
-
- processState = ProcessState.INITIALIZED;
- }
-
- public String toString()
- {
- return "Process[" + getName() + "]";
- }
}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -21,8 +21,22 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.model.internal.ComplexGatewayImpl;
+import org.jboss.bpm.model.internal.EndEventImpl;
+import org.jboss.bpm.model.internal.ExclusiveGatewayImpl;
+import org.jboss.bpm.model.internal.FlowObjectImpl;
+import org.jboss.bpm.model.internal.InclusiveGatewayImpl;
+import org.jboss.bpm.model.internal.IntermediateEventImpl;
+import org.jboss.bpm.model.internal.MessageFlowImpl;
+import org.jboss.bpm.model.internal.ParallelGatewayImpl;
+import org.jboss.bpm.model.internal.ProcessImpl;
+import org.jboss.bpm.model.internal.SequenceFlowImpl;
+import org.jboss.bpm.model.internal.StartEventImpl;
+import org.jboss.bpm.model.internal.SubProcessImpl;
+import org.jboss.bpm.model.internal.TaskImpl;
+
// $Id$
/**
@@ -33,12 +47,12 @@
*/
public class ProcessBuilder
{
- private Process proc;
+ private ProcessImpl proc;
private FlowObjectImpl flowObject;
public ProcessBuilder (String procName)
{
- proc = new Process(procName);
+ proc = new ProcessImpl(procName);
}
public Process getProcess()
@@ -49,7 +63,7 @@
public ProcessBuilder addStartEvent()
{
- flowObject = new StartEvent();
+ flowObject = new StartEventImpl();
proc.addFlowObject(flowObject);
return this;
}
@@ -59,12 +73,12 @@
if (flowObject instanceof SingleOutFlowSupport)
{
SingleOutFlowSupport outFlow = (SingleOutFlowSupport)flowObject;
- outFlow.setOutFlow(new SequenceFlow(name));
+ outFlow.setOutFlow(new SequenceFlowImpl(name));
}
else if (flowObject instanceof MultipleOutFlowSupport)
{
MultipleOutFlowSupport outFlow = (MultipleOutFlowSupport)flowObject;
- outFlow.addOutFlow(new SequenceFlow(name));
+ outFlow.addOutFlow(new SequenceFlowImpl(name));
}
else
{
@@ -78,12 +92,12 @@
if (flowObject instanceof SingleOutFlowSupport)
{
SingleOutFlowSupport outFlow = (SingleOutFlowSupport)flowObject;
- outFlow.setOutFlow(new MessageFlow(name));
+ outFlow.setOutFlow(new MessageFlowImpl(name));
}
else if (flowObject instanceof MultipleOutFlowSupport)
{
MultipleOutFlowSupport outFlow = (MultipleOutFlowSupport)flowObject;
- outFlow.addOutFlow(new MessageFlow(name));
+ outFlow.addOutFlow(new MessageFlowImpl(name));
}
else
{
@@ -94,56 +108,56 @@
public ProcessBuilder addTask(String name)
{
- flowObject = new Task(name);
+ flowObject = new TaskImpl(name);
proc.addFlowObject(flowObject);
return this;
}
public ProcessBuilder addExclusiveGateway(String name)
{
- flowObject = new ExclusiveGateway(name);
+ flowObject = new ExclusiveGatewayImpl(name);
proc.addFlowObject(flowObject);
return this;
}
public ProcessBuilder addInclusiveGateway(String name)
{
- flowObject = new InclusiveGateway(name);
+ flowObject = new InclusiveGatewayImpl(name);
proc.addFlowObject(flowObject);
return this;
}
public ProcessBuilder addComplexGateway(String name)
{
- flowObject = new ComplexGateway(name);
+ flowObject = new ComplexGatewayImpl(name);
proc.addFlowObject(flowObject);
return this;
}
public ProcessBuilder addParallelGateway(String name)
{
- flowObject = new ParallelGateway(name);
+ flowObject = new ParallelGatewayImpl(name);
proc.addFlowObject(flowObject);
return this;
}
public ProcessBuilder addSubProcess(String name)
{
- flowObject = new SubProcess(name);
+ flowObject = new SubProcessImpl(name);
proc.addFlowObject(flowObject);
return this;
}
public ProcessBuilder addItermediateEvent(String name)
{
- flowObject = new ItermediateEvent(name);
+ flowObject = new IntermediateEventImpl(name);
proc.addFlowObject(flowObject);
return this;
}
public ProcessBuilder addEndEvent(String name)
{
- flowObject = new EndEvent(name);
+ flowObject = new EndEventImpl(name);
proc.addFlowObject(flowObject);
return this;
}
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SequenceFlow.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SequenceFlow.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SequenceFlow.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,54 +0,0 @@
-/*
- * 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.jboss.bpm.model;
-
-//$Id$
-
-import javax.xml.bind.annotation.XmlType;
-
-/**
- * A Sequence Flow is a solid graphical line that is used to show the order that Activities will be performed in a Process.
- * Each Flow has only one source and only one target.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="SequenceFlow")
-public class SequenceFlow extends Flow
-{
- /**
- * Construct a flow with no target
- * Note, this MUST NOT leak into the public API.
- */
- protected SequenceFlow()
- {
- }
-
- /**
- * Construct a flow with a given target
- * Note, this MUST NOT leak into the public API.
- */
- public SequenceFlow(String targetName)
- {
- super(targetName);
- }
-}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SignalHandler.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SignalHandler.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SignalHandler.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,63 +1,16 @@
-/*
- * 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.jboss.bpm.model;
-import javax.xml.bind.annotation.XmlType;
-
-
-//$Id$
-
-/**
- * Implement to get signals on enter and exit.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "SignalHandler")
-public class SignalHandler extends Handler
+public interface SignalHandler extends Handler
{
- private SignalHandler delegate;
-
+
/**
* Get signal for enter
*/
- public Signal getEnterSignal()
- {
- if (delegate == null)
- {
- delegate = newInstance(SignalHandler.class);
- }
- return delegate.getEnterSignal();
- }
+ Signal getEnterSignal();
/**
* Get signal for exit
*/
- public Signal getExitSignal()
- {
- if (delegate == null)
- {
- delegate = newInstance(SignalHandler.class);
- }
- return delegate.getExitSignal();
- }
-}
+ Signal getExitSignal();
+
+}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SingleInFlowSupport.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SingleInFlowSupport.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SingleInFlowSupport.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -29,9 +29,6 @@
* Get the out flow
*/
Flow getInFlow();
-
- /**
- * Set the in flow
- */
+
void setInFlow(Flow flow);
}
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SingleOutFlowSupport.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SingleOutFlowSupport.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SingleOutFlowSupport.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -29,9 +29,6 @@
* Get the out flow
*/
Flow getOutFlow();
-
- /**
- * Set the out flow
- */
+
void setOutFlow(Flow flow);
}
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,103 +1,5 @@
-/*
- * 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.jboss.bpm.model;
-//$Id$
-
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jboss.bpm.runtime.Token;
-
-/**
- * A Start Event indicates where a particular Process will start.
- *
- * In terms of Sequence Flow, the Start Event starts the Flow of the Process, and thus, will not have any incoming Sequence Flow. A Start Event can have a Trigger that
- * indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "StartEvent")
-public class StartEvent extends AbstractStartEvent
+public interface StartEvent extends Event, SingleOutFlowSupport
{
- // provide logging
- private static final Log log = LogFactory.getLog(StartEvent.class);
-
- /**
- * Construct a StartEvent with a constant name: 'start'
- * Note, this MUST NOT leak into the public API.
- */
- protected StartEvent()
- {
- }
-
- @XmlTransient
- public FlowHandler getDefaultFlowHandler()
- {
- return new FlowHandler()
- {
- @Override
- public void transfer(Token token)
- {
- token.addTailFlow(getOutFlow());
- }
- };
- }
-
- public SignalHandler getDefaultSignalHandler()
- {
- final FlowObject start = this;
- return new SignalHandler()
- {
- public Signal getEnterSignal()
- {
- return new Signal(start, Signal.Type.ENTER_START_EVENT);
- }
-
- public Signal getExitSignal()
- {
- return new Signal(start, Signal.Type.EXIT_START_EVENT);
- }
- };
- }
-
- @XmlTransient
- public ExecutionHandler getDefaultExecutionHandler()
- {
- return new ExecutionHandler()
- {
- @Override
- public void execute(Token token)
- {
- log.debug("Nothing to do in start-event");
- }
- };
- }
-
- public String toString()
- {
- return "StartEvent[]";
- }
}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,123 +1,5 @@
-/*
- * 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.jboss.bpm.model;
-//$Id$
-
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.jboss.bpm.runtime.Token;
-
-/**
- * A Sub-Process is Process that is included within another Process.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name="SubProcess")
-public class SubProcess extends AbstractSubProcess implements SingleInFlowSupport, Executable
+public interface SubProcess extends FlowObject, Executable, SingleInFlowSupport, SingleOutFlowSupport
{
- private Flow inFlow;
-
- /**
- * Construct an anonymous process
- * Note, this MUST NOT leak into the public API.
- */
- protected SubProcess()
- {
- }
-
- /**
- * Construct a process with a given name
- * Note, this MUST NOT leak into the public API.
- */
- protected SubProcess(String name)
- {
- super(name);
- }
-
- /**
- * Get the out flow
- */
- public Flow getInFlow()
- {
- return inFlow;
- }
-
- /**
- * Set the in flow
- */
- @XmlTransient
- public void setInFlow(Flow inFlow)
- {
- this.inFlow = inFlow;
- }
-
- @XmlTransient
- public FlowHandler getDefaultFlowHandler()
- {
- return new FlowHandler()
- {
- @Override
- public void transfer(Token token)
- {
- token.addTailFlow(getOutFlow());
- }
- };
- }
-
- public SignalHandler getDefaultSignalHandler()
- {
- final FlowObject subproc = this;
- return new SignalHandler()
- {
- public Signal getEnterSignal()
- {
- return new Signal(subproc, Signal.Type.ENTER_SUB_PROCESS);
- }
-
- public Signal getExitSignal()
- {
- return new Signal(subproc, Signal.Type.EXIT_SUB_PROCESS);
- }
- };
- }
-
- @XmlTransient
- public ExecutionHandler getDefaultExecutionHandler()
- {
- return new ExecutionHandler()
- {
- @Override
- public void execute(Token token)
- {
- startProcess(token.getExecutionContext());
- }
- };
- }
-
- public String toString()
- {
- return "SubProcess[" + getName() + "]";
- }
}
\ No newline at end of file
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Task.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,132 +1,5 @@
-/*
- * 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.jboss.bpm.model;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jboss.bpm.runtime.Token;
-
-//$Id$
-
-/**
- * A Task is an Atomic Activity that is included within a Process.
- *
- * A Task is used when the work in the Process is not broken down to a finer level of Process Model detail. Generally, an end-user and/or an application are used to
- * perform the Task when it is executed.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-@XmlType(name = "Task")
-public class Task extends AbstractTask implements SingleInFlowSupport, Executable
+public interface Task extends FlowObject, Executable, SingleInFlowSupport, SingleOutFlowSupport
{
- // provide logging
- private static final Log log = LogFactory.getLog(Task.class);
-
- private Flow inFlow;
-
- /**
- * Construct an anonymous Task
- * Note, this MUST NOT leak into the public API.
- */
- protected Task()
- {
- }
-
- /**
- * Construct a Task with a given name
- * Note, this MUST NOT leak into the public API.
- */
- protected Task(String name)
- {
- super(name);
- }
-
- /**
- * Get the out flow
- */
- public Flow getInFlow()
- {
- return inFlow;
- }
-
- /**
- * Set the in flow
- */
- @XmlTransient
- public void setInFlow(Flow inFlow)
- {
- this.inFlow = inFlow;
- }
-
- @XmlTransient
- public FlowHandler getDefaultFlowHandler()
- {
- return new FlowHandler()
- {
- @Override
- public void transfer(Token token)
- {
- token.addTailFlow(getOutFlow());
- }
- };
- }
-
- @XmlTransient
- public SignalHandler getDefaultSignalHandler()
- {
- return new SignalHandler()
- {
- public Signal getEnterSignal()
- {
- return new Signal(getProcess(), Signal.Type.ENTER_TASK);
- }
-
- public Signal getExitSignal()
- {
- return new Signal(getProcess(), Signal.Type.EXIT_TASK);
- }
- };
- }
-
- @XmlTransient
- public ExecutionHandler getDefaultExecutionHandler()
- {
- return new ExecutionHandler()
- {
- @Override
- public void execute(Token token)
- {
- log.debug("Nothing to do in task: " + getName());
- }
- };
- }
-
- public String toString()
- {
- return "Task[" + getName() + "]";
- }
-
}
\ No newline at end of file
Copied: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java (from rev 1611, api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/ActivityImpl.java)
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,61 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.Activity;
+import org.jboss.bpm.model.internal.jaxb.JAXBActivity;
+
+/**
+ * An activity is a generic term for work that a company or organization performs via business processes.
+ * An activity can be atomic or non-atomic (compound).
+ * The types of activities that are a part of a Process Model are: Process, Sub-Process, and Task.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public abstract class ActivityImpl extends FlowObjectImpl implements Activity
+{
+ public ActivityImpl(JAXBActivity delegate)
+ {
+ super(delegate);
+ }
+
+ public String getName()
+ {
+ return getDelegate().getName();
+ }
+
+ public void setName(String name)
+ {
+ if (getDelegate().getName() != null)
+ throw new IllegalStateException("Cannot rename: " + name);
+
+ getDelegate().setName(name);
+ }
+
+ private JAXBActivity getDelegate()
+ {
+ return (JAXBActivity)delegate;
+ }
+}
\ No newline at end of file
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,52 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+import org.jboss.bpm.model.internal.jaxb.JAXBComplexGateway;
+
+// $Id$
+
+/**
+ * A Complex Gateway handles situations that are not easily handled through the other types of Gateways. Complex Gateways can also be used to combine a set of linked
+ * simple Gateways into a single, more compact situation. Modelers can provide complex expressions that determine the merging and/or splitting behavior of the Gateway.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ComplexGatewayImpl extends GatewayImpl
+{
+ public ComplexGatewayImpl(String name)
+ {
+ this(new JAXBComplexGateway());
+ setName(name);
+ }
+
+ public ComplexGatewayImpl(JAXBComplexGateway delegate)
+ {
+ super(delegate);
+ }
+
+ public String toString()
+ {
+ return "ComplexGateway[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,155 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.model.EndEvent;
+import org.jboss.bpm.model.Flow;
+import org.jboss.bpm.model.FlowHandler;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.Result;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalHandler;
+import org.jboss.bpm.model.internal.jaxb.JAXBEndEvent;
+import org.jboss.bpm.runtime.Attachments;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * As the name implies, the End Event indicates where a Process will end.
+ *
+ * In terms of Sequence Flow, the End Event ends the flow of the Process, and thus, will not have any outgoing Sequence Flow.
+ * An End Event can have a specific Result that will appear as a marker within the center of the End Event shape.
+ * End Event Results are Message, Error, Compensation, Link, and Multiple.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class EndEventImpl extends EventImpl implements EndEvent
+{
+ // provide logging
+ private static final Log log = LogFactory.getLog(EndEventImpl.class);
+
+ private Result result;
+ private Flow inFlow;
+
+ public EndEventImpl(String name)
+ {
+ this(new JAXBEndEvent());
+ setName(name);
+ }
+
+ public EndEventImpl(JAXBEndEvent delegate)
+ {
+ super(delegate);
+ }
+
+ public String getName()
+ {
+ return getDelegate().getName();
+ }
+
+ public void setName(String name)
+ {
+ getDelegate().setName(name);
+ }
+
+ public Flow getInFlow()
+ {
+ return inFlow;
+ }
+
+ /**
+ * Set the in flow
+ */
+ public void setInFlow(Flow inFlow)
+ {
+ this.inFlow = inFlow;
+ }
+
+ public Result getResult()
+ {
+ return result;
+ }
+
+ public FlowHandler getDefaultFlowHandler()
+ {
+ return new FlowHandlerImpl()
+ {
+ @Override
+ public void transfer(Token token)
+ {
+ log.debug("End reached in: " + getName());
+ }
+ };
+ }
+
+ public SignalHandler getDefaultSignalHandler()
+ {
+ final FlowObject end = this;
+ return new SignalHandlerImpl()
+ {
+ public Signal getEnterSignal()
+ {
+ return new Signal(end, Signal.Type.ENTER_END_EVENT);
+ }
+
+ public Signal getExitSignal()
+ {
+ return new Signal(end, Signal.Type.EXIT_END_EVENT);
+ }
+ };
+ }
+
+ public ExecutionHandlerImpl getDefaultExecutionHandler()
+ {
+ return new ExecutionHandlerImpl()
+ {
+ @Override
+ public void execute(final Token token)
+ {
+ // Provide the result
+ result = new Result()
+ {
+ public Attachments getAttachments()
+ {
+ return token.getExecutionContext();
+ }
+ };
+ }
+ };
+ }
+
+ private JAXBEndEvent getDelegate()
+ {
+ return (JAXBEndEvent)delegate;
+ }
+
+ public String toString()
+ {
+ return "EndEvent[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EventImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EventImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EventImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,85 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+import org.jboss.bpm.model.Event;
+import org.jboss.bpm.model.ExecutionHandler;
+import org.jboss.bpm.model.FlowHandler;
+import org.jboss.bpm.model.SignalHandler;
+import org.jboss.bpm.model.internal.jaxb.JAXBEvent;
+import org.jboss.bpm.model.internal.jaxb.JAXBFlowObject;
+
+//$Id$
+
+/**
+ * An Event is something that “happens” during the course of a business process.
+ * <p/>
+ * These Events affect the flow of the Process and usually have a cause or an impact.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public abstract class EventImpl extends FlowObjectImpl implements Event
+{
+ private ExecutionHandler executionHandler;
+ private FlowHandler flowHandler;
+ private SignalHandler signalHandler;
+
+ public EventImpl(JAXBEvent delegate)
+ {
+ super(delegate);
+ executionHandler = new ExecutionHandlerImpl(delegate.getExecutionHandler());
+ flowHandler = new FlowHandlerImpl(delegate.getFlowHandler());
+ signalHandler = new SignalHandlerImpl(delegate.getSignalHandler());
+ }
+
+ public ExecutionHandler getExecutionHandler()
+ {
+ return executionHandler;
+ }
+
+ public void setExecutionHandler(ExecutionHandler executionHandler)
+ {
+ this.executionHandler = executionHandler;
+ }
+
+ public FlowHandler getFlowHandler()
+ {
+ return flowHandler;
+ }
+
+ public void setFlowHandler(FlowHandler flowHandler)
+ {
+ this.flowHandler = flowHandler;
+ }
+
+ public SignalHandler getSignalHandler()
+ {
+ return signalHandler;
+ }
+
+ public void setSignalHandler(SignalHandler signalHandler)
+ {
+ this.signalHandler = signalHandler;
+ }
+
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/EventImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,51 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+import org.jboss.bpm.model.internal.jaxb.JAXBExclusiveGateway;
+
+//$Id$
+
+/**
+ * A point in the workflow process where, based on a decision or workflow control data, one of several branches is chosen.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ExclusiveGatewayImpl extends GatewayImpl
+{
+ public ExclusiveGatewayImpl(String name)
+ {
+ this(new JAXBExclusiveGateway());
+ setName(name);
+ }
+
+ public ExclusiveGatewayImpl(JAXBExclusiveGateway delegate)
+ {
+ super(delegate);
+ }
+
+ public String toString()
+ {
+ return "ExclusiveGateway[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExecutionHandlerImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExecutionHandlerImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExecutionHandlerImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,62 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.ExecutionHandler;
+import org.jboss.bpm.model.internal.jaxb.JAXBExecutionHandler;
+import org.jboss.bpm.model.internal.jaxb.JAXBHandler;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * Implement to make the FlowObject executable
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ExecutionHandlerImpl extends HandlerImpl implements ExecutionHandler
+{
+ private ExecutionHandlerImpl handler;
+
+ public ExecutionHandlerImpl()
+ {
+ super(new JAXBExecutionHandler());
+ }
+
+ public ExecutionHandlerImpl(JAXBHandler delegate)
+ {
+ super(delegate);
+ }
+
+ /**
+ * Execute this flow object
+ */
+ public void execute(Token token)
+ {
+ if (handler == null)
+ {
+ handler = newInstance(ExecutionHandlerImpl.class);
+ }
+ handler.execute(token);
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ExecutionHandlerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowHandlerImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowHandlerImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowHandlerImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,58 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.FlowHandler;
+import org.jboss.bpm.model.internal.jaxb.JAXBFlowHandler;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * Implement to handle the outgoing Flows for an FlowObject
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class FlowHandlerImpl extends HandlerImpl implements FlowHandler
+{
+ private FlowHandler handler;
+
+ public FlowHandlerImpl()
+ {
+ super(new JAXBFlowHandler());
+ }
+
+ public FlowHandlerImpl(JAXBFlowHandler delegate)
+ {
+ super(delegate);
+ }
+
+ public void transfer(Token token)
+ {
+ if (handler == null)
+ {
+ handler = newInstance(FlowHandlerImpl.class);
+ }
+ handler.transfer(token);
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowHandlerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,103 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import java.util.List;
+
+import org.jboss.bpm.InvalidProcessException;
+import org.jboss.bpm.model.Flow;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.internal.jaxb.JAXBFlow;
+import org.jboss.bpm.model.internal.jaxb.JAXBMessageFlow;
+import org.jboss.bpm.model.internal.jaxb.JAXBSequenceFlow;
+
+/**
+ * A Flow is a graphical line connecting two objects in a BPD. There are two types of Flow: Sequence Flow and Message Flow, each with their own line style. Flow is also
+ * used in a generic sense (and lowercase) to describe how Tokens will traverse Sequence Flow from the Start Event to an End Event.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public abstract class FlowImpl implements Flow
+{
+ protected JAXBFlow delegate;
+ private FlowObject source;
+ private FlowObject target;
+
+ public FlowImpl(JAXBFlow delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public String getName()
+ {
+ return delegate.getName();
+ }
+
+ public String getTargetName()
+ {
+ return delegate.getTargetName();
+ }
+
+ public void setTargetName(String targetName)
+ {
+ delegate.setTargetName(targetName);
+ }
+
+ public FlowObject getSource()
+ {
+ return source;
+ }
+
+ public void setSource(FlowObject source)
+ {
+ this.source = source;
+ }
+
+ public FlowObject getTarget()
+ {
+ return target;
+ }
+
+ public void setTarget(FlowObject target)
+ {
+ this.target = target;
+ }
+
+ static void adaptFlows(List<Flow> destList, List<JAXBFlow> srcList)
+ {
+ for (JAXBFlow srcFlow : srcList)
+ destList.add(adaptFlow(srcFlow));
+ }
+
+ static Flow adaptFlow(JAXBFlow srcFlow)
+ {
+ if (srcFlow instanceof JAXBSequenceFlow)
+ return new SequenceFlowImpl((JAXBSequenceFlow)srcFlow);
+ else if (srcFlow instanceof JAXBMessageFlow)
+ return new MessageFlowImpl((JAXBMessageFlow)srcFlow);
+ else
+ throw new InvalidProcessException("Unsupported type: " + srcFlow);
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Copied: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java (from rev 1611, api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/FlowObjectImpl.java)
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,157 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+import org.jboss.bpm.InvalidProcessException;
+import org.jboss.bpm.NameNotUniqueException;
+import org.jboss.bpm.model.Flow;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.MultipleInFlowSupport;
+import org.jboss.bpm.model.MultipleOutFlowSupport;
+import org.jboss.bpm.model.NamedFlowObject;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.SingleInFlowSupport;
+import org.jboss.bpm.model.SingleOutFlowSupport;
+import org.jboss.bpm.model.internal.jaxb.JAXBFlowObject;
+
+//$Id$
+
+/**
+ * A Flow Object is one of the set of following graphical objects: Event, Activity, and Gateway.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public abstract class FlowObjectImpl implements FlowObject
+{
+ protected JAXBFlowObject delegate;
+ private Process process;
+
+
+ public FlowObjectImpl(JAXBFlowObject delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public Process getProcess()
+ {
+ return process;
+ }
+
+ public void setProcess(Process process)
+ {
+ this.process = process;
+ }
+
+ /**
+ * Initialize the flow object
+ */
+ protected void initialize(ProcessImpl proc)
+ {
+ setProcess(proc);
+
+ if (this instanceof NamedFlowObject)
+ {
+ // Check required name
+ String name = ((NamedFlowObject)this).getName();
+ if (name == null)
+ throw new InvalidProcessException("Name is required for: " + this);
+
+ // Check name uniqueness
+ for (FlowObject aux : proc.getFlowObjects())
+ {
+ if (aux != this && aux instanceof NamedFlowObject)
+ {
+ String auxName = ((NamedFlowObject)aux).getName();
+ if (name.equals(auxName))
+ throw new NameNotUniqueException("NamedFlowObject: " + this);
+ }
+ }
+ }
+
+ // Initialize in/out flows
+ Flow outFlow = null;
+ if (this instanceof SingleOutFlowSupport)
+ {
+ SingleOutFlowSupport sof = (SingleOutFlowSupport)this;
+ outFlow = sof.getOutFlow();
+ initFlow(proc, (FlowImpl)outFlow);
+ }
+ else if (this instanceof MultipleOutFlowSupport)
+ {
+ MultipleOutFlowSupport mof = (MultipleOutFlowSupport)this;
+ for (Flow flow : mof.getOutFlows())
+ {
+ outFlow = flow;
+ initFlow(proc, (FlowImpl)flow);
+ }
+ }
+
+ Flow inFlow = null;
+ if (this instanceof SingleInFlowSupport)
+ {
+ SingleInFlowSupport sif = (SingleInFlowSupport)this;
+ inFlow = sif.getInFlow();
+ }
+ else if (this instanceof MultipleInFlowSupport)
+ {
+ MultipleInFlowSupport mif = (MultipleInFlowSupport)this;
+ for (Flow flow : mif.getInFlows())
+ {
+ inFlow = flow;
+ }
+ }
+
+ if (inFlow == null && outFlow == null)
+ throw new InvalidProcessException("Unconnected flow object: " + this);
+ }
+
+ private void initFlow(Process proc, FlowImpl flow)
+ {
+ if (flow != null)
+ {
+ String name = flow.getTargetName();
+ FlowObject target = proc.findFlowObject(name);
+ if (target == null)
+ throw new InvalidProcessException("Cannot find target for out flow: " + name);
+
+ if (target instanceof SingleInFlowSupport)
+ {
+ SingleInFlowSupport sif = (SingleInFlowSupport)target;
+ sif.setInFlow(flow);
+ }
+ else if (target instanceof MultipleInFlowSupport)
+ {
+ MultipleInFlowSupport mif = (MultipleInFlowSupport)target;
+ mif.addInFlow(flow);
+ }
+ else
+ {
+ throw new InvalidProcessException("Target does not support in flow: " + target);
+ }
+
+ flow.setSource(this);
+ flow.setTarget(target);
+ }
+
+ }
+}
\ No newline at end of file
Copied: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java (from rev 1611, api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/GatewayImpl.java)
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,175 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.model.ExecutionHandler;
+import org.jboss.bpm.model.Flow;
+import org.jboss.bpm.model.FlowHandler;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.Gateway;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalHandler;
+import org.jboss.bpm.model.internal.jaxb.JAXBGateway;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * Gateways are modelling elements that are used to control how Sequence Flow interact as they converge and diverge within a Process. If the flow does not need to be
+ * controlled, then a Gateway is not needed.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class GatewayImpl extends FlowObjectImpl implements Gateway
+{
+ // provide logging
+ private static final Log log = LogFactory.getLog(GatewayImpl.class);
+
+ protected List<Flow> inFlows = new ArrayList<Flow>();
+ protected List<Flow> outFlows = new ArrayList<Flow>();
+ private ExecutionHandler executionHandler;
+ private FlowHandler flowHandler;
+ private SignalHandler signalHandler;
+
+ public GatewayImpl(JAXBGateway delegate)
+ {
+ super(delegate);
+ executionHandler = new ExecutionHandlerImpl(delegate.getExecutionHandler());
+ flowHandler = new FlowHandlerImpl(delegate.getFlowHandler());
+ signalHandler = new SignalHandlerImpl(delegate.getSignalHandler());
+ FlowImpl.adaptFlows(outFlows, delegate.getOutFlows());
+ }
+
+ public String getName()
+ {
+ return getDelegate().getName();
+ }
+
+ public void setName(String name)
+ {
+ getDelegate().setName(name);
+ }
+
+ public List<Flow> getOutFlows()
+ {
+ return Collections.unmodifiableList(outFlows);
+ }
+
+ public void addOutFlow(Flow flow)
+ {
+ outFlows.add(flow);
+ }
+
+ public List<Flow> getInFlows()
+ {
+ return Collections.unmodifiableList(inFlows);
+ }
+
+ public void addInFlow(Flow inFlow)
+ {
+ this.inFlows.add(inFlow);
+ }
+
+ public ExecutionHandler getExecutionHandler()
+ {
+ return executionHandler;
+ }
+
+ public void setExecutionHandler(ExecutionHandler executionHandler)
+ {
+ this.executionHandler = executionHandler;
+ }
+
+ public FlowHandler getFlowHandler()
+ {
+ return flowHandler;
+ }
+
+ public void setFlowHandler(FlowHandler flowHandler)
+ {
+ this.flowHandler = flowHandler;
+ }
+
+ public SignalHandler getSignalHandler()
+ {
+ return signalHandler;
+ }
+
+ public void setSignalHandler(SignalHandler signalHandler)
+ {
+ this.signalHandler = signalHandler;
+ }
+
+ public FlowHandler getDefaultFlowHandler()
+ {
+ return new FlowHandlerImpl()
+ {
+ @Override
+ public void transfer(Token token)
+ {
+ if (outFlows.size() == 1)
+ token.addTailFlow(outFlows.get(0));
+ }
+ };
+ }
+
+ public SignalHandler getDefaultSignalHandler()
+ {
+ final FlowObject gateway = this;
+ return new SignalHandlerImpl()
+ {
+ public Signal getEnterSignal()
+ {
+ return new Signal(gateway, Signal.Type.ENTER_GATEWAY);
+ }
+
+ public Signal getExitSignal()
+ {
+ return new Signal(gateway, Signal.Type.EXIT_GATEWAY);
+ }
+ };
+ }
+
+ public ExecutionHandlerImpl getDefaultExecutionHandler()
+ {
+ return new ExecutionHandlerImpl()
+ {
+ @Override
+ public void execute(Token token)
+ {
+ log.debug("Nothing to do in gateway: " + getName());
+ }
+ };
+ }
+
+ private JAXBGateway getDelegate()
+ {
+ return (JAXBGateway)delegate;
+ }
+}
\ No newline at end of file
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/HandlerImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/HandlerImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/HandlerImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,48 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.Handler;
+import org.jboss.bpm.model.internal.jaxb.JAXBHandler;
+
+/**
+ * Implement to handle the outgoing Flows for an FlowObject
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public abstract class HandlerImpl implements Handler
+{
+ private JAXBHandler delegate;
+
+ public HandlerImpl(JAXBHandler delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ protected <T> T newInstance(Class<T> clazz)
+ {
+ return delegate.newInstance(clazz);
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/HandlerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,55 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.internal.jaxb.JAXBInclusiveGateway;
+
+
+
+/**
+ * This Decision represents a branching point where Alternatives are based on conditional expressions contained within outgoing Sequence Flow.
+ * However, in this case, the True evaluation of one condition expression does not exclude the evaluation of other condition expressions.
+ * All Sequence Flow with a True evaluation will be traversed by a Token.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class InclusiveGatewayImpl extends GatewayImpl
+{
+ public InclusiveGatewayImpl(String name)
+ {
+ this(new JAXBInclusiveGateway());
+ setName(name);
+ }
+
+ public InclusiveGatewayImpl(JAXBInclusiveGateway delegate)
+ {
+ super(delegate);
+ }
+
+ public String toString()
+ {
+ return "InclusiveGateway[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,145 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.model.Flow;
+import org.jboss.bpm.model.FlowHandler;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.IntermediateEvent;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalHandler;
+import org.jboss.bpm.model.internal.jaxb.JAXBIntermediateEvent;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * An Intermediate Event is an Event that occurs after a Process has been started. It will affect the Flow of the Process, but will not start or (directly) terminate
+ * the Process. An Intermediate Event will show where messages or delays are expected within the Process, disrupt the Normal Flow through exception handling, or show
+ * the extra flow required for compensating a transaction.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class IntermediateEventImpl extends EventImpl implements IntermediateEvent
+{
+ // provide logging
+ private static final Log log = LogFactory.getLog(IntermediateEventImpl.class);
+
+ private Flow inFlow;
+ private Flow outFlow;
+
+ public IntermediateEventImpl(String name)
+ {
+ this(new JAXBIntermediateEvent());
+ setName(name);
+ }
+
+ public IntermediateEventImpl(JAXBIntermediateEvent delegate)
+ {
+ super(delegate);
+ outFlow = FlowImpl.adaptFlow(delegate.getOutFlow());
+ }
+
+ public String getName()
+ {
+ return getDelegate().getName();
+ }
+
+ public void setName(String name)
+ {
+ getDelegate().setName(name);
+ }
+
+ public Flow getInFlow()
+ {
+ return inFlow;
+ }
+
+ public void setInFlow(Flow inFlow)
+ {
+ this.inFlow = inFlow;
+ }
+
+ public Flow getOutFlow()
+ {
+ return outFlow;
+ }
+
+ public void setOutFlow(Flow outFlow)
+ {
+ this.outFlow = outFlow;
+ }
+
+ public FlowHandler getDefaultFlowHandler()
+ {
+ return new FlowHandlerImpl()
+ {
+ @Override
+ public void transfer(Token token)
+ {
+ token.addTailFlow(getOutFlow());
+ }
+ };
+ }
+
+ public SignalHandler getDefaultSignalHandler()
+ {
+ final FlowObject event = this;
+ return new SignalHandlerImpl()
+ {
+ public Signal getEnterSignal()
+ {
+ return new Signal(event, Signal.Type.ENTER_EVENT);
+ }
+
+ public Signal getExitSignal()
+ {
+ return new Signal(event, Signal.Type.EXIT_EVENT);
+ }
+ };
+ }
+
+ public ExecutionHandlerImpl getDefaultExecutionHandler()
+ {
+ return new ExecutionHandlerImpl()
+ {
+ @Override
+ public void execute(Token token)
+ {
+ log.debug("Nothing to do in start-event");
+ }
+ };
+ }
+
+ private JAXBIntermediateEvent getDelegate()
+ {
+ return (JAXBIntermediateEvent)delegate;
+ }
+
+ public String toString()
+ {
+ return "ItermediateEvent[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/MessageFlowImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/MessageFlowImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/MessageFlowImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,47 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.internal.jaxb.JAXBMessageFlow;
+
+/**
+ * A Message Flow is a dashed line that is used to show the flow of messages between two entities that are prepared to send and receive them.
+ * In BPMN, two separate Pools in the Diagram will represent the two entities.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class MessageFlowImpl extends FlowImpl
+{
+ public MessageFlowImpl(String targetName)
+ {
+ super(new JAXBMessageFlow());
+ setTargetName(targetName);
+ }
+
+ protected MessageFlowImpl(JAXBMessageFlow delegate)
+ {
+ super(delegate);
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/MessageFlowImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,72 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.Flow;
+import org.jboss.bpm.model.FlowHandler;
+import org.jboss.bpm.model.internal.jaxb.JAXBParallelGateway;
+import org.jboss.bpm.runtime.Token;
+
+
+/**
+ * Parallel Gateway is required when two or more Activities need to be executed in parallel.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ParallelGatewayImpl extends GatewayImpl
+{
+ public ParallelGatewayImpl(String name)
+ {
+ this(new JAXBParallelGateway());
+ setName(name);
+ }
+
+ public ParallelGatewayImpl(JAXBParallelGateway delegate)
+ {
+ super(delegate);
+ }
+
+ /**
+ * The DefaultFlowHandler adds all out flows to the queue
+ */
+ @Override
+ public FlowHandler getDefaultFlowHandler()
+ {
+ return new FlowHandlerImpl()
+ {
+ @Override
+ public void transfer(Token token)
+ {
+ for(Flow outFlow : getOutFlows())
+ token.addTailFlow(outFlow);
+ }
+ };
+ }
+
+ public String toString()
+ {
+ return "ParallelGateway[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,240 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.Future;
+
+import org.jboss.bpm.InvalidProcessException;
+import org.jboss.bpm.client.ExecutionManager;
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.EndEvent;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.NamedFlowObject;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Result;
+import org.jboss.bpm.model.StartEvent;
+import org.jboss.bpm.model.internal.jaxb.JAXBComplexGateway;
+import org.jboss.bpm.model.internal.jaxb.JAXBEndEvent;
+import org.jboss.bpm.model.internal.jaxb.JAXBExclusiveGateway;
+import org.jboss.bpm.model.internal.jaxb.JAXBFlowObject;
+import org.jboss.bpm.model.internal.jaxb.JAXBInclusiveGateway;
+import org.jboss.bpm.model.internal.jaxb.JAXBIntermediateEvent;
+import org.jboss.bpm.model.internal.jaxb.JAXBParallelGateway;
+import org.jboss.bpm.model.internal.jaxb.JAXBProcess;
+import org.jboss.bpm.model.internal.jaxb.JAXBStartEvent;
+import org.jboss.bpm.model.internal.jaxb.JAXBSubProcess;
+import org.jboss.bpm.model.internal.jaxb.JAXBTask;
+import org.jboss.bpm.runtime.Attachments;
+
+/**
+ * A Process is any Activity performed within a company or organization.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ProcessImpl extends ActivityImpl implements Process
+{
+ private List<FlowObject> flowObjects = new ArrayList<FlowObject>();
+ private ProcessState processState = ProcessState.CREATED;
+
+ public ProcessImpl(String name)
+ {
+ this(new JAXBProcess());
+ setName(name);
+ }
+
+ public ProcessImpl(JAXBProcess delegate)
+ {
+ super(delegate);
+ setProcess(this);
+ adaptFlowObjects(delegate);
+ }
+
+ public void addFlowObject(FlowObjectImpl flowObject)
+ {
+ flowObjects.add(flowObject);
+ }
+
+ public StartEventImpl getStartEvent()
+ {
+ StartEventImpl start = null;
+ for (FlowObject aux : flowObjects)
+ {
+ if (aux instanceof StartEvent)
+ {
+ start = (StartEventImpl)aux;
+ break;
+ }
+ }
+ return start;
+ }
+
+ public List<EndEvent> getEndEvents()
+ {
+ List<EndEvent> ends = new ArrayList<EndEvent>();
+ for (FlowObject aux : flowObjects)
+ {
+ if (aux instanceof EndEvent)
+ {
+ ends.add((EndEvent)aux);
+ }
+ }
+ return Collections.unmodifiableList(ends);
+ }
+
+ public List<FlowObject> getFlowObjects()
+ {
+
+ if (processState == ProcessState.CREATED)
+ return flowObjects;
+
+ return Collections.unmodifiableList(flowObjects);
+ }
+
+ public Future<Result> startProcess()
+ {
+ return startProcess(null);
+ }
+
+ public Future<Result> startProcess(Attachments att)
+ {
+ if (processState != ProcessState.INITIALIZED)
+ throw new IllegalStateException("Cannot start process in state: " + processState);
+
+ processState = ProcessState.STARTED;
+ ExecutionManager exm = ExecutionManager.locateExecutionManager();
+ return exm.startProcess(this, att);
+ }
+
+ public FlowObject findFlowObject(String name)
+ {
+ if (name == null)
+ throw new IllegalArgumentException("Cannot find flow object with name: null");
+
+ FlowObject nfo = null;
+ for (FlowObject aux : flowObjects)
+ {
+ if (aux instanceof NamedFlowObject)
+ {
+ NamedFlowObject auxnfo = (NamedFlowObject)aux;
+ if (name.equals(auxnfo.getName()))
+ {
+ nfo = aux;
+ break;
+ }
+ }
+ }
+ return nfo;
+ }
+
+ public ProcessState getProcessState()
+ {
+ return processState;
+ }
+
+ /**
+ * Set the process state
+ */
+ public void initialize()
+ {
+ if (processState != ProcessState.CREATED)
+ throw new IllegalStateException("Cannot initialize process in state: " + processState);
+
+ // Set the anonymous default name
+ if (getName() == null)
+ {
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ setName("AnonymousProcess#" + pm.getProcesses().size());
+ }
+
+ if (getStartEvent() == null)
+ throw new InvalidProcessException("Process does not have a start event");
+
+ if (getEndEvents().size() == 0)
+ throw new InvalidProcessException("Process does not have end events");
+
+ // Set the associated process
+ for (FlowObject aux : flowObjects)
+ {
+ ((FlowObjectImpl)aux).initialize(this);
+ }
+
+ processState = ProcessState.INITIALIZED;
+ }
+
+ private void adaptFlowObjects(JAXBProcess delegate)
+ {
+ for (JAXBFlowObject fo : delegate.getFlowObjects())
+ {
+ if (fo instanceof JAXBStartEvent)
+ {
+ addFlowObject(new StartEventImpl((JAXBStartEvent)fo));
+ }
+ else if (fo instanceof JAXBIntermediateEvent)
+ {
+ addFlowObject(new IntermediateEventImpl((JAXBIntermediateEvent)fo));
+ }
+ else if (fo instanceof JAXBEndEvent)
+ {
+ addFlowObject(new EndEventImpl((JAXBEndEvent)fo));
+ }
+ else if (fo instanceof JAXBSubProcess)
+ {
+ addFlowObject(new SubProcessImpl((JAXBSubProcess)fo));
+ }
+ else if (fo instanceof JAXBTask)
+ {
+ addFlowObject(new TaskImpl((JAXBTask)fo));
+ }
+ else if (fo instanceof JAXBExclusiveGateway)
+ {
+ addFlowObject(new ExclusiveGatewayImpl((JAXBExclusiveGateway)fo));
+ }
+ else if (fo instanceof JAXBInclusiveGateway)
+ {
+ addFlowObject(new InclusiveGatewayImpl((JAXBInclusiveGateway)fo));
+ }
+ else if (fo instanceof JAXBComplexGateway)
+ {
+ addFlowObject(new ComplexGatewayImpl((JAXBComplexGateway)fo));
+ }
+ else if (fo instanceof JAXBParallelGateway)
+ {
+ addFlowObject(new ParallelGatewayImpl((JAXBParallelGateway)fo));
+ }
+ else
+ {
+ throw new InvalidProcessException("Unsupported type: " + fo);
+ }
+ }
+ }
+
+ public String toString()
+ {
+ return "Process[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,48 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.internal.jaxb.JAXBSequenceFlow;
+
+/**
+ * A Sequence Flow is a solid graphical line that is used to show the order that Activities will be performed in a Process.
+ * Each Flow has only one source and only one target.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class SequenceFlowImpl extends FlowImpl
+{
+ public SequenceFlowImpl(String targetName)
+ {
+ super(new JAXBSequenceFlow());
+ setTargetName(targetName);
+ }
+
+ protected SequenceFlowImpl(JAXBSequenceFlow delegate)
+ {
+ super(delegate);
+ }
+
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SignalHandlerImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SignalHandlerImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SignalHandlerImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,67 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalHandler;
+import org.jboss.bpm.model.internal.jaxb.JAXBSignalHandler;
+
+/**
+ * Implement to get signals on enter and exit.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class SignalHandlerImpl extends HandlerImpl implements SignalHandler
+{
+ private SignalHandler handler;
+
+ public SignalHandlerImpl()
+ {
+ super(new JAXBSignalHandler());
+ }
+
+ public SignalHandlerImpl(JAXBSignalHandler delegate)
+ {
+ super(delegate);
+ }
+
+ public Signal getEnterSignal()
+ {
+ if (handler == null)
+ {
+ handler = newInstance(SignalHandlerImpl.class);
+ }
+ return handler.getEnterSignal();
+ }
+
+ public Signal getExitSignal()
+ {
+ if (handler == null)
+ {
+ handler = newInstance(SignalHandlerImpl.class);
+ }
+ return handler.getExitSignal();
+ }
+}
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SignalHandlerImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,117 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.model.Flow;
+import org.jboss.bpm.model.FlowHandler;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalHandler;
+import org.jboss.bpm.model.StartEvent;
+import org.jboss.bpm.model.internal.jaxb.JAXBStartEvent;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * A Start Event indicates where a particular Process will start. In terms of Sequence Flow, the Start Event starts the Flow of the Process, and thus, will not have any
+ * incoming Sequence Flow. A Start Event can have a Trigger that indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class StartEventImpl extends EventImpl implements StartEvent
+{
+ // provide logging
+ private static final Log log = LogFactory.getLog(StartEventImpl.class);
+
+ private Flow outFlow;
+
+ public StartEventImpl()
+ {
+ this(new JAXBStartEvent());
+ }
+
+ public StartEventImpl(JAXBStartEvent delegate)
+ {
+ super(delegate);
+ outFlow = FlowImpl.adaptFlow(delegate.getOutFlow());
+ }
+
+ public Flow getOutFlow()
+ {
+ return outFlow;
+ }
+
+ public void setOutFlow(Flow flow)
+ {
+ this.outFlow = flow;
+ }
+
+ public FlowHandler getDefaultFlowHandler()
+ {
+ return new FlowHandlerImpl()
+ {
+ @Override
+ public void transfer(Token token)
+ {
+ token.addTailFlow(outFlow);
+ }
+ };
+ }
+
+ public SignalHandler getDefaultSignalHandler()
+ {
+ final FlowObject start = this;
+ return new SignalHandlerImpl()
+ {
+ public Signal getEnterSignal()
+ {
+ return new Signal(start, Signal.Type.ENTER_START_EVENT);
+ }
+
+ public Signal getExitSignal()
+ {
+ return new Signal(start, Signal.Type.EXIT_START_EVENT);
+ }
+ };
+ }
+
+ public ExecutionHandlerImpl getDefaultExecutionHandler()
+ {
+ return new ExecutionHandlerImpl()
+ {
+ @Override
+ public void execute(Token token)
+ {
+ log.debug("Nothing to do in start-event");
+ }
+ };
+ }
+
+ public String toString()
+ {
+ return "StartEvent[]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,160 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.ExecutionHandler;
+import org.jboss.bpm.model.Flow;
+import org.jboss.bpm.model.FlowHandler;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalHandler;
+import org.jboss.bpm.model.SubProcess;
+import org.jboss.bpm.model.internal.jaxb.JAXBSubProcess;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * A Sub-Process is Process that is included within another Process.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class SubProcessImpl extends ProcessImpl implements SubProcess
+{
+ private Flow inFlow;
+ private Flow outFlow;
+ private ExecutionHandler executionHandler;
+ private FlowHandler flowHandler;
+ private SignalHandler signalHandler;
+
+ public SubProcessImpl(String name)
+ {
+ this(new JAXBSubProcess());
+ setName(name);
+ }
+
+ public SubProcessImpl(JAXBSubProcess delegate)
+ {
+ super(delegate);
+ executionHandler = new ExecutionHandlerImpl(delegate.getExecutionHandler());
+ flowHandler = new FlowHandlerImpl(delegate.getFlowHandler());
+ signalHandler = new SignalHandlerImpl(delegate.getSignalHandler());
+ outFlow = FlowImpl.adaptFlow(delegate.getOutFlow());
+ }
+
+ public Flow getInFlow()
+ {
+ return inFlow;
+ }
+
+ public void setInFlow(Flow inFlow)
+ {
+ this.inFlow = inFlow;
+ }
+
+ public Flow getOutFlow()
+ {
+ return outFlow;
+ }
+
+ public void setOutFlow(Flow outFlow)
+ {
+ this.outFlow = outFlow;
+ }
+
+ public ExecutionHandler getExecutionHandler()
+ {
+ return executionHandler;
+ }
+
+ public void setExecutionHandler(ExecutionHandler executionHandler)
+ {
+ this.executionHandler = executionHandler;
+ }
+
+ public FlowHandler getFlowHandler()
+ {
+ return flowHandler;
+ }
+
+ public void setFlowHandler(FlowHandler flowHandler)
+ {
+ this.flowHandler = flowHandler;
+ }
+
+ public SignalHandler getSignalHandler()
+ {
+ return signalHandler;
+ }
+
+ public void setSignalHandler(SignalHandler signalHandler)
+ {
+ this.signalHandler = signalHandler;
+ }
+
+ public FlowHandler getDefaultFlowHandler()
+ {
+ return new FlowHandlerImpl()
+ {
+ @Override
+ public void transfer(Token token)
+ {
+ token.addTailFlow(outFlow);
+ }
+ };
+ }
+
+ public SignalHandler getDefaultSignalHandler()
+ {
+ final FlowObject subproc = this;
+ return new SignalHandlerImpl()
+ {
+ public Signal getEnterSignal()
+ {
+ return new Signal(subproc, Signal.Type.ENTER_SUB_PROCESS);
+ }
+
+ public Signal getExitSignal()
+ {
+ return new Signal(subproc, Signal.Type.EXIT_SUB_PROCESS);
+ }
+ };
+ }
+
+ public ExecutionHandlerImpl getDefaultExecutionHandler()
+ {
+ return new ExecutionHandlerImpl()
+ {
+ @Override
+ public void execute(Token token)
+ {
+ startProcess(token.getExecutionContext());
+ }
+ };
+ }
+
+ public String toString()
+ {
+ return "SubProcess[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,174 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.model.ExecutionHandler;
+import org.jboss.bpm.model.Flow;
+import org.jboss.bpm.model.FlowHandler;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalHandler;
+import org.jboss.bpm.model.Task;
+import org.jboss.bpm.model.internal.jaxb.JAXBTask;
+import org.jboss.bpm.runtime.Token;
+
+//$Id$
+
+/**
+ * A Task is an Atomic Activity that is included within a Process.
+ *
+ * A Task is used when the work in the Process is not broken down to a finer level of Process Model detail. Generally, an end-user and/or an application are used to
+ * perform the Task when it is executed.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class TaskImpl extends ActivityImpl implements Task
+{
+ // provide logging
+ private static final Log log = LogFactory.getLog(TaskImpl.class);
+
+ private Flow inFlow;
+ private Flow outFlow;
+ private ExecutionHandler executionHandler;
+ private FlowHandler flowHandler;
+ private SignalHandler signalHandler;
+
+ public TaskImpl(String name)
+ {
+ this(new JAXBTask());
+ setName(name);
+ }
+
+ public TaskImpl(JAXBTask delegate)
+ {
+ super(delegate);
+ executionHandler = new ExecutionHandlerImpl(delegate.getExecutionHandler());
+ flowHandler = new FlowHandlerImpl(delegate.getFlowHandler());
+ signalHandler = new SignalHandlerImpl(delegate.getSignalHandler());
+ outFlow = FlowImpl.adaptFlow(delegate.getOutFlow());
+ }
+
+ /**
+ * Get the out flow
+ */
+ public Flow getInFlow()
+ {
+ return inFlow;
+ }
+
+ /**
+ * Set the in flow
+ */
+ public void setInFlow(Flow inFlow)
+ {
+ this.inFlow = inFlow;
+ }
+
+ public Flow getOutFlow()
+ {
+ return outFlow;
+ }
+
+ public void setOutFlow(Flow flow)
+ {
+ this.outFlow = flow;
+ }
+
+ public ExecutionHandler getExecutionHandler()
+ {
+ return executionHandler;
+ }
+
+ public void setExecutionHandler(ExecutionHandler executionHandler)
+ {
+ this.executionHandler = executionHandler;
+ }
+
+ public FlowHandler getFlowHandler()
+ {
+ return flowHandler;
+ }
+
+ public void setFlowHandler(FlowHandler flowHandler)
+ {
+ this.flowHandler = flowHandler;
+ }
+
+ public SignalHandler getSignalHandler()
+ {
+ return signalHandler;
+ }
+
+ public void setSignalHandler(SignalHandler signalHandler)
+ {
+ this.signalHandler = signalHandler;
+ }
+
+ public FlowHandler getDefaultFlowHandler()
+ {
+ return new FlowHandlerImpl()
+ {
+ @Override
+ public void transfer(Token token)
+ {
+ token.addTailFlow(outFlow);
+ }
+ };
+ }
+
+ public SignalHandler getDefaultSignalHandler()
+ {
+ final FlowObject task = this;
+ return new SignalHandlerImpl()
+ {
+ public Signal getEnterSignal()
+ {
+ return new Signal(task, Signal.Type.ENTER_TASK);
+ }
+
+ public Signal getExitSignal()
+ {
+ return new Signal(task, Signal.Type.EXIT_TASK);
+ }
+ };
+ }
+
+ public ExecutionHandlerImpl getDefaultExecutionHandler()
+ {
+ return new ExecutionHandlerImpl()
+ {
+ @Override
+ public void execute(Token token)
+ {
+ log.debug("Nothing to do in task: " + getName());
+ }
+ };
+ }
+
+ public String toString()
+ {
+ return "Task[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Copied: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBActivity.java (from rev 1611, api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBActivity.java)
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBActivity.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBActivity.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,60 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * An activity is a generic term for work that a company or organization performs via business processes.
+ * An activity can be atomic or non-atomic (compound).
+ * The types of activities that are a part of a Process Model are: Process, Sub-Process, and Task.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name="Activity")
+public class JAXBActivity extends JAXBFlowObject
+{
+ private String name;
+
+ /**
+ * Get the name
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Set the name.
+ * Note, this MUST NOT leak into the public API.
+ */
+ @XmlAttribute(required = true)
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+}
\ No newline at end of file
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEndEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEndEvent.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEndEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,60 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+// $Id$
+
+/**
+ * As the name implies, the End Event indicates where a Process will end.
+ *
+ * In terms of Sequence Flow, the End Event ends the flow of the Process, and thus, will not have any outgoing Sequence Flow. An End Event can have a specific Result
+ * that will appear as a marker within the center of the End Event shape. End Event Results are Message, Error, Compensation, Link, and Multiple.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "EndEvent")
+public class JAXBEndEvent extends JAXBEvent
+{
+ private String name;
+
+ /**
+ * Get the name
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Set the name.
+ * Note, this MUST NOT leak into the public API.
+ */
+ @XmlAttribute(required = true)
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEndEvent.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEvent.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,92 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * An Event is something that “happens” during the course of a business process. These Events affect the flow of the Process and usually have a cause or an impact.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "AbstractEvent")
+public class JAXBEvent extends JAXBFlowObject
+{
+ private JAXBExecutionHandler executionHandler;
+ private JAXBFlowHandler flowHandler;
+ private JAXBSignalHandler signalHandler;
+
+ /**
+ * Get the ExecutionHandler for this Event
+ */
+ public JAXBExecutionHandler getExecutionHandler()
+ {
+ return executionHandler;
+ }
+
+ /**
+ * Set the ExecutionHandler for this Event
+ */
+ @XmlElement(name = "execution-handler", required = false)
+ public void setExecutionHandler(JAXBExecutionHandler executionHandler)
+ {
+ this.executionHandler = executionHandler;
+ }
+
+ /**
+ * Get the FlowHandler for this Event
+ */
+ public JAXBFlowHandler getFlowHandler()
+ {
+ return flowHandler;
+ }
+
+ /**
+ * Set the FlowHandler for this Event
+ */
+ @XmlElement(name = "flow-handler", required = false)
+ public void setFlowHandler(JAXBFlowHandler flowHandler)
+ {
+ this.flowHandler = flowHandler;
+ }
+
+ /**
+ * Get the SignalHandler for this Event
+ */
+ public JAXBSignalHandler getSignalHandler()
+ {
+ return signalHandler;
+ }
+
+ /**
+ * Set the SignalHandler for this Event
+ */
+ @XmlElement(name = "signal-handler", required = false)
+ public void setSignalHandler(JAXBSignalHandler signalHandler)
+ {
+ this.signalHandler = signalHandler;
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBEvent.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlow.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlow.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlow.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,74 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+// $Id$
+
+/**
+ * A Flow is a graphical line connecting two objects in a BPD.
+ *
+ * There are two types of Flow: Sequence Flow and Message Flow, each with their own line style. Flow is also used in a generic sense (and lowercase) to describe how
+ * Tokens will traverse Sequence Flow from the Start Event to an End Event.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "Flow")
+public class JAXBFlow
+{
+ private String name;
+ private String targetName;
+
+ /* (non-Javadoc)
+ * @see org.jboss.bpm.model.xxx#getName()
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Set the optional name Note, this MUST NOT leak into the public API.
+ */
+ @XmlAttribute(required = false)
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getTargetName()
+ {
+ return targetName;
+ }
+
+ /**
+ * Set the target name Note, this MUST NOT leak into the public API.
+ */
+ @XmlAttribute(name = "to", required = true)
+ public void setTargetName(String targetName)
+ {
+ this.targetName = targetName;
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlow.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Copied: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlowObject.java (from rev 1611, api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBFlowObject.java)
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlowObject.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBFlowObject.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,38 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id: $
+
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * A Flow Object is one of the set of following graphical objects: Event, Activity, and Gateway.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "FlowObject")
+public class JAXBFlowObject
+{
+}
\ No newline at end of file
Copied: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBGateway.java (from rev 1611, api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/JAXBGateway.java)
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBGateway.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBGateway.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,130 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Gateways are modelling elements that are used to control how Sequence Flow interact as they converge and diverge within a Process. If the flow does not need to be
+ * controlled, then a Gateway is not needed.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "Gateway")
+public class JAXBGateway extends JAXBFlowObject
+{
+ private String name;
+ private JAXBExecutionHandler executionHandler;
+ private JAXBFlowHandler flowHandler;
+ private JAXBSignalHandler signalHandler;
+
+ @XmlElements( {
+ @XmlElement(name = "sequence", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "message", type = JAXBMessageFlow.class)
+ })
+ private List<JAXBFlow> outFlows = new ArrayList<JAXBFlow>();
+
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Set the name.
+ * Note, this MUST NOT leak into the public API.
+ */
+ @XmlAttribute(required = true)
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public List<JAXBFlow> getOutFlows()
+ {
+ return outFlows;
+ }
+
+ public void setOutFlow(List<JAXBFlow> outFlow)
+ {
+ this.outFlows = outFlow;
+ }
+
+ /**
+ * Get the ExecutionHandler for this Event
+ */
+ public JAXBExecutionHandler getExecutionHandler()
+ {
+ return executionHandler;
+ }
+
+ /**
+ * Set the ExecutionHandler for this Event
+ */
+ @XmlElement(name = "execution-handler", required = false)
+ public void setExecutionHandler(JAXBExecutionHandler executionHandler)
+ {
+ this.executionHandler = executionHandler;
+ }
+
+ /**
+ * Get the FlowHandler for this Event
+ */
+ public JAXBFlowHandler getFlowHandler()
+ {
+ return flowHandler;
+ }
+
+ /**
+ * Set the FlowHandler for this Event
+ */
+ @XmlElement(name = "flow-handler", required = false)
+ public void setFlowHandler(JAXBFlowHandler flowHandler)
+ {
+ this.flowHandler = flowHandler;
+ }
+
+ /**
+ * Get the SignalHandler for this Event
+ */
+ public JAXBSignalHandler getSignalHandler()
+ {
+ return signalHandler;
+ }
+
+ /**
+ * Set the SignalHandler for this Event
+ */
+ @XmlElement(name = "signal-handler", required = false)
+ public void setSignalHandler(JAXBSignalHandler signalHandler)
+ {
+ this.signalHandler = signalHandler;
+ }
+}
\ No newline at end of file
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBIntermediateEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBIntermediateEvent.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBIntermediateEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,80 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+
+
+// $Id$
+
+/**
+ * An Intermediate Event is an Event that occurs after a Process has been started.
+ *
+ * It will affect the Flow of the Process, but will not start or (directly) terminate the Process.
+ * An Intermediate Event will show where messages or delays are expected within the Process,
+ * disrupt the Normal Flow through exception handling, or show the extra flow required for compensating a transaction.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name="ItermediateEvent")
+public class JAXBIntermediateEvent extends JAXBEvent
+{
+ private String name;
+
+ @XmlElements( {
+ @XmlElement(name = "sequence", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "message", type = JAXBMessageFlow.class)
+ })
+ private JAXBFlow outFlow;
+
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Set the name.
+ * Note, this MUST NOT leak into the public API.
+ */
+ @XmlAttribute(required = true)
+ public void setName(String name)
+ {
+ if (this.name != null)
+ throw new IllegalStateException("Cannot rename: " + name);
+
+ this.name = name;
+ }
+
+ public JAXBFlow getOutFlow()
+ {
+ return outFlow;
+ }
+
+ public void setOutFlow(JAXBFlow outFlow)
+ {
+ this.outFlow = outFlow;
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBIntermediateEvent.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBStartEvent.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBStartEvent.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBStartEvent.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,56 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * A Start Event indicates where a particular Process will start. In terms of Sequence Flow, the Start Event starts the Flow of the Process, and thus, will not have any
+ * incoming Sequence Flow. A Start Event can have a Trigger that indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "AbstractStartEvent")
+public class JAXBStartEvent extends JAXBEvent
+{
+ @XmlElements( {
+ @XmlElement(name = "sequence", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "message", type = JAXBMessageFlow.class) })
+ private JAXBFlow outFlow;
+
+ public JAXBFlow getOutFlow()
+ {
+ return outFlow;
+ }
+
+ @XmlTransient
+ public void setOutFlow(JAXBFlow outFlow)
+ {
+ this.outFlow = outFlow;
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBStartEvent.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSubProcess.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSubProcess.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSubProcess.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,110 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * A Sub-Process is Process that is included within another Process.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "SubProcess")
+public class JAXBSubProcess extends JAXBProcess
+{
+ private JAXBExecutionHandler executionHandler;
+ private JAXBFlowHandler flowHandler;
+ private JAXBSignalHandler signalHandler;
+
+ @XmlElements( {
+ @XmlElement(name = "sequence", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "message", type = JAXBMessageFlow.class) })
+ private JAXBFlow outFlow;
+
+ public JAXBFlow getOutFlow()
+ {
+ return outFlow;
+ }
+
+ @XmlTransient
+ public void setOutFlow(JAXBFlow outFlow)
+ {
+ this.outFlow = outFlow;
+ }
+
+ /**
+ * Get the ExecutionHandler for this Event
+ */
+ public JAXBExecutionHandler getExecutionHandler()
+ {
+ return executionHandler;
+ }
+
+ /**
+ * Set the ExecutionHandler for this Event
+ */
+ @XmlElement(name = "execution-handler", required = false)
+ public void setExecutionHandler(JAXBExecutionHandler executionHandler)
+ {
+ this.executionHandler = executionHandler;
+ }
+
+ /**
+ * Get the FlowHandler for this Event
+ */
+ public JAXBFlowHandler getFlowHandler()
+ {
+ return flowHandler;
+ }
+
+ /**
+ * Set the FlowHandler for this Event
+ */
+ @XmlElement(name = "flow-handler", required = false)
+ public void setFlowHandler(JAXBFlowHandler flowHandler)
+ {
+ this.flowHandler = flowHandler;
+ }
+
+ /**
+ * Get the SignalHandler for this Event
+ */
+ public JAXBSignalHandler getSignalHandler()
+ {
+ return signalHandler;
+ }
+
+ /**
+ * Set the SignalHandler for this Event
+ */
+ @XmlElement(name = "signal-handler", required = false)
+ public void setSignalHandler(JAXBSignalHandler signalHandler)
+ {
+ this.signalHandler = signalHandler;
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBSubProcess.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBTask.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBTask.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBTask.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,113 @@
+/*
+ * 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.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+//$Id$
+
+/**
+ * A Task is an Atomic Activity that is included within a Process.
+ *
+ * A Task is used when the work in the Process is not broken down to a finer level of Process Model detail. Generally, an end-user and/or an application are used to
+ * perform the Task when it is executed.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "Task")
+public class JAXBTask extends JAXBActivity
+{
+ private JAXBExecutionHandler executionHandler;
+ private JAXBFlowHandler flowHandler;
+ private JAXBSignalHandler signalHandler;
+
+ @XmlElements( {
+ @XmlElement(name = "sequence", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "message", type = JAXBMessageFlow.class) })
+ private JAXBFlow outFlow;
+
+ public JAXBFlow getOutFlow()
+ {
+ return outFlow;
+ }
+
+ @XmlTransient
+ public void setOutFlow(JAXBFlow outFlow)
+ {
+ this.outFlow = outFlow;
+ }
+
+ /**
+ * Get the ExecutionHandler for this Event
+ */
+ public JAXBExecutionHandler getExecutionHandler()
+ {
+ return executionHandler;
+ }
+
+ /**
+ * Set the ExecutionHandler for this Event
+ */
+ @XmlElement(name = "execution-handler", required = false)
+ public void setExecutionHandler(JAXBExecutionHandler executionHandler)
+ {
+ this.executionHandler = executionHandler;
+ }
+
+ /**
+ * Get the FlowHandler for this Event
+ */
+ public JAXBFlowHandler getFlowHandler()
+ {
+ return flowHandler;
+ }
+
+ /**
+ * Set the FlowHandler for this Event
+ */
+ @XmlElement(name = "flow-handler", required = false)
+ public void setFlowHandler(JAXBFlowHandler flowHandler)
+ {
+ this.flowHandler = flowHandler;
+ }
+
+ /**
+ * Get the SignalHandler for this Event
+ */
+ public JAXBSignalHandler getSignalHandler()
+ {
+ return signalHandler;
+ }
+
+ /**
+ * Set the SignalHandler for this Event
+ */
+ @XmlElement(name = "signal-handler", required = false)
+ public void setSignalHandler(JAXBSignalHandler signalHandler)
+ {
+ this.signalHandler = signalHandler;
+ }
+}
\ No newline at end of file
Property changes on: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/JAXBTask.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Copied: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/package-info.java (from rev 1611, api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/package-info.java)
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/package-info.java (rev 0)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/internal/jaxb/package-info.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+@XmlSchema(namespace="urn:api.bpm.jboss:jpdl-0.1")
+package org.jboss.bpm.model.internal.jaxb;
+
+import javax.xml.bind.annotation.XmlSchema;
+
Deleted: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/package-info.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/package-info.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/package-info.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -1,26 +0,0 @@
-/*
- * 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.
- */
-@XmlSchema(namespace="urn:api.bpm.jboss:jpdl-0.1")
-package org.jboss.bpm.model;
-
-import javax.xml.bind.annotation.XmlSchema;
-
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -28,6 +28,7 @@
import org.jboss.bpm.model.Flow;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.internal.FlowImpl;
/**
* A Token is a descriptive construct used to describe how the flow of a Process will proceed at runtime.
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/util/ProcessMarshaller.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/util/ProcessMarshaller.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/util/ProcessMarshaller.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -24,15 +24,14 @@
// $Id$
import java.io.IOException;
-import java.io.StringWriter;
import java.io.Writer;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
-import org.jboss.bpm.model.ObjectFactory;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.internal.jaxb.ObjectFactory;
/**
* A JAXB marshaller for a Process
Modified: api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/util/ProcessUnmarshaller.java
===================================================================
--- api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/util/ProcessUnmarshaller.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/util/ProcessUnmarshaller.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -29,7 +29,9 @@
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
-import org.jboss.bpm.model.ObjectFactory;
+import org.jboss.bpm.model.internal.ProcessImpl;
+import org.jboss.bpm.model.internal.jaxb.JAXBProcess;
+import org.jboss.bpm.model.internal.jaxb.ObjectFactory;
import org.jboss.bpm.model.Process;
/**
@@ -45,7 +47,8 @@
JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setProperty("com.sun.xml.bind.ObjectFactory",new ObjectFactory());
- Process proc = (Process)unmarshaller.unmarshal(xml);
+ JAXBProcess jaxbProc = (JAXBProcess)unmarshaller.unmarshal(xml);
+ ProcessImpl proc = new ProcessImpl(jaxbProc);
proc.initialize();
return proc;
}
Modified: api/branches/tdiesler/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java
===================================================================
--- api/branches/tdiesler/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -57,9 +57,9 @@
Process outProc = unmarshaller.unmarshallProcess(new StringReader(xml));
StartEvent start = outProc.getStartEvent();
Task task = (Task)outProc.findFlowObject("task");
- ParallelGateway split = (ParallelGateway)outProc.findFlowObject("split");
- ParallelGateway join = (ParallelGateway)outProc.findFlowObject("join");
- ItermediateEvent event = (ItermediateEvent)outProc.findFlowObject("event");
+ Gateway split = (Gateway)outProc.findFlowObject("split");
+ Gateway join = (Gateway)outProc.findFlowObject("join");
+ IntermediateEvent event = (IntermediateEvent)outProc.findFlowObject("event");
SubProcess subproc = (SubProcess)outProc.findFlowObject("subproc");
EndEvent end = (EndEvent)outProc.findFlowObject("end");
@@ -87,7 +87,7 @@
Flow of3 = split.getOutFlows().get(0);
Flow of4 = split.getOutFlows().get(1);
Flow of5 = subproc.getOutFlow();
- Flow of6 = event.getOutFlows().get(0);
+ Flow of6 = event.getOutFlow();
Flow of7 = join.getOutFlows().get(0);
assertNotNull(of1);
@@ -99,13 +99,13 @@
assertNotNull(of7);
assertEquals(2, split.getOutFlows().size());
- assertEquals(1, event.getOutFlows().size());
+ assertEquals(1, event.getOutFlow());
assertEquals(1, join.getOutFlows().size());
Flow if1 = task.getInFlow();
Flow if2 = split.getInFlows().get(0);
Flow if3 = subproc.getInFlow();
- Flow if4 = event.getInFlows().get(0);
+ Flow if4 = event.getInFlow();
Flow if5 = join.getInFlows().get(0);
Flow if6 = join.getInFlows().get(1);
Flow if7 = end.getInFlow();
Modified: api/branches/tdiesler/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java
===================================================================
--- api/branches/tdiesler/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -23,7 +23,7 @@
// $Id$
-import org.jboss.bpm.model.ExecutionHandler;
+import org.jboss.bpm.model.internal.ExecutionHandlerImpl;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.Token;
@@ -33,7 +33,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 04-Jul-2008
*/
-public class TaskA extends ExecutionHandler
+public class TaskA extends ExecutionHandlerImpl
{
@Override
public void execute(Token token)
Modified: api/branches/tdiesler/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java
===================================================================
--- api/branches/tdiesler/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java 2008-07-14 14:04:23 UTC (rev 1622)
+++ api/branches/tdiesler/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java 2008-07-14 14:05:06 UTC (rev 1623)
@@ -23,7 +23,7 @@
// $Id$
-import org.jboss.bpm.model.ExecutionHandler;
+import org.jboss.bpm.model.internal.ExecutionHandlerImpl;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.Token;
@@ -33,7 +33,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 04-Jul-2008
*/
-public class TaskA extends ExecutionHandler
+public class TaskA extends ExecutionHandlerImpl
{
@Override
public void execute(Token token)
17 years, 9 months
JBoss JBPM SVN: r1622 - jbpm4/identity/trunk/modules/core.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-07-14 10:04:23 -0400 (Mon, 14 Jul 2008)
New Revision: 1622
Modified:
jbpm4/identity/trunk/modules/core/pom.xml
Log:
Change jar names to reflect module structure
Modified: jbpm4/identity/trunk/modules/core/pom.xml
===================================================================
--- jbpm4/identity/trunk/modules/core/pom.xml 2008-07-14 14:02:58 UTC (rev 1621)
+++ jbpm4/identity/trunk/modules/core/pom.xml 2008-07-14 14:04:23 UTC (rev 1622)
@@ -17,7 +17,7 @@
<name>JBoss jBPM 4 - Identity Core</name>
<groupId>org.jboss.jbpm</groupId>
- <artifactId>jbpm-identity</artifactId>
+ <artifactId>identity-core</artifactId>
<packaging>jar</packaging>
<!-- Parent -->
17 years, 9 months
JBoss JBPM SVN: r1621 - in jbpm4: identity and 1 other directory.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-07-14 10:02:58 -0400 (Mon, 14 Jul 2008)
New Revision: 1621
Added:
jbpm4/identity/
jbpm4/identity/trunk/
Removed:
jbpm4/indentity/
Log:
Rename indentity to identity
Copied: jbpm4/identity (from rev 1618, jbpm4/indentity)
Copied: jbpm4/identity/trunk (from rev 1619, jbpm4/indentity/trunk)
17 years, 9 months
JBoss JBPM SVN: r1620 - in jbpm4/task: trunk and 26 other directories.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-07-14 10:00:53 -0400 (Mon, 14 Jul 2008)
New Revision: 1620
Added:
jbpm4/task/trunk/
jbpm4/task/trunk/.classpath
jbpm4/task/trunk/.project
jbpm4/task/trunk/hudson/
jbpm4/task/trunk/hudson/ant.properties.example
jbpm4/task/trunk/hudson/apache-tomcat/
jbpm4/task/trunk/hudson/apache-tomcat/conf/
jbpm4/task/trunk/hudson/apache-tomcat/conf/server.xml
jbpm4/task/trunk/hudson/apache-tomcat/conf/tomcat-users.xml
jbpm4/task/trunk/hudson/build.xml
jbpm4/task/trunk/hudson/hudson-home/
jbpm4/task/trunk/hudson/hudson-home/config.xml
jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml
jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Maven.xml
jbpm4/task/trunk/hudson/hudson-home/jobs/
jbpm4/task/trunk/hudson/hudson-home/jobs/jBPM4/
jbpm4/task/trunk/hudson/hudson-home/jobs/jBPM4/config.xml
jbpm4/task/trunk/modules/
jbpm4/task/trunk/modules/core/
jbpm4/task/trunk/modules/core/pom.xml
jbpm4/task/trunk/modules/core/src/
jbpm4/task/trunk/modules/core/src/main/
jbpm4/task/trunk/modules/core/src/main/doc/
jbpm4/task/trunk/modules/core/src/main/doc/models.uml
jbpm4/task/trunk/modules/core/src/main/java/
jbpm4/task/trunk/modules/core/src/main/java/org/
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Assigner.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Role.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/RoleType.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Swimlane.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/SwimlaneDefinition.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Task.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskDefinition.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskException.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskService.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/CreateTask.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/DeleteTask.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/GetTask.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/UpdateTask.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/db/
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/db/TaskDbSession.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycle.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleParser.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleState.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/RoleImpl.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneDefinitionImpl.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneImpl.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskDefinitionImpl.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskExecution.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskImpl.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskServiceImpl.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/default.lifecycle.xml
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/task.model.jpg
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionBinding.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionDescriptor.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceBinding.java
jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceDescriptor.java
jbpm4/task/trunk/modules/core/src/main/resources/
jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.hbm.xml
jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.queries.hbm.xml
jbpm4/task/trunk/modules/core/src/main/resources/pvm.hibernate.mappings.xml
jbpm4/task/trunk/modules/core/src/main/resources/pvm.wire.bindings.xml
jbpm4/task/trunk/modules/core/src/test/
jbpm4/task/trunk/modules/core/src/test/java/
jbpm4/task/trunk/modules/core/src/test/java/org/
jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/
jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/
jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskDbTest.java
jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskServiceTest.java
jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskTest.java
jbpm4/task/trunk/modules/core/src/test/resources/
jbpm4/task/trunk/modules/core/src/test/resources/org.jbpm.task.cfg.xml
jbpm4/task/trunk/pom.xml
Log:
Start Task project
Added: jbpm4/task/trunk/.classpath
===================================================================
--- jbpm4/task/trunk/.classpath (rev 0)
+++ jbpm4/task/trunk/.classpath 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="modules/jpdl/target/classes" path="modules/jpdl/src/main/java"/>
+ <classpathentry kind="src" output="modules/jpdl/target/classes" path="modules/jpdl/src/main/resources"/>
+ <classpathentry kind="src" output="modules/jpdl/target/test-classes" path="modules/jpdl/src/test/java"/>
+ <classpathentry kind="src" output="modules/jpdl/target/test-classes" path="modules/jpdl/src/test/resources"/>
+ <classpathentry kind="src" output="modules/identity/target/classes" path="modules/identity/src/main/java"/>
+ <classpathentry kind="src" output="modules/identity/target/classes" path="modules/identity/src/main/resources"/>
+ <classpathentry kind="src" output="modules/identity/target/test-classes" path="modules/identity/src/test/java"/>
+ <classpathentry kind="src" output="modules/identity/target/test-classes" path="modules/identity/src/test/resources"/>
+ <classpathentry kind="src" output="modules/task/target/classes" path="modules/task/src/main/java"/>
+ <classpathentry kind="src" output="modules/task/target/classes" path="modules/task/src/main/resources"/>
+ <classpathentry kind="src" output="modules/task/target/test-classes" path="modules/task/src/test/java"/>
+ <classpathentry kind="src" output="modules/task/target/test-classes" path="modules/task/src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: jbpm4/task/trunk/.project
===================================================================
--- jbpm4/task/trunk/.project (rev 0)
+++ jbpm4/task/trunk/.project 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>jbpm</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ </natures>
+</projectDescription>
Added: jbpm4/task/trunk/hudson/ant.properties.example
===================================================================
--- jbpm4/task/trunk/hudson/ant.properties.example (rev 0)
+++ jbpm4/task/trunk/hudson/ant.properties.example 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,25 @@
+#
+# A sample ant properties file
+#
+# $Id: ant.properties.example 3995 2007-07-26 08:52:45Z thomas.diesler(a)jboss.com $
+
+# JBoss remote repository
+jboss.repository=http://repository.jboss.org
+
+# Hudson QA Environment
+hudson.username=changeme
+hudson.password=changeme
+
+hudson.maven.path=/usr/java/apache-maven-2.0.9
+
+hudson.root=/usr/share/java/workspace
+hudson.host=jbws.dyndns.org
+hudson.admin.port=8150
+hudson.http.port=8180
+
+hudson.mail.recipients=
+hudson.smtp.host=localhost
+
+# Hudson setup
+apache-tomcat=5.5.20
+sun-hudson=1.226
Added: jbpm4/task/trunk/hudson/apache-tomcat/conf/server.xml
===================================================================
--- jbpm4/task/trunk/hudson/apache-tomcat/conf/server.xml (rev 0)
+++ jbpm4/task/trunk/hudson/apache-tomcat/conf/server.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,57 @@
+
+<Server port="@hudson.admin.port@" shutdown="SHUTDOWN">
+
+ <!-- Comment these entries out to disable JMX MBeans support used for the
+ administration web application -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener"/>
+ <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
+ <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
+
+ <!-- Global JNDI resources -->
+ <GlobalNamingResources>
+
+ <!-- Test entry for demonstration purposes -->
+ <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users -->
+ <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml"/>
+
+ </GlobalNamingResources>
+
+ <!-- Define the Tomcat Stand-Alone Service -->
+ <Service name="Catalina">
+
+ <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
+ <Connector port="@hudson.http.port@" maxHttpHeaderSize="8192" maxThreads="150"
+ minSpareThreads="25" maxSpareThreads="75"
+ enableLookups="false" redirectPort="8443" acceptCount="100"
+ connectionTimeout="20000" disableUploadTimeout="true"/>
+
+ <!-- Define the top level container in our container hierarchy -->
+ <Engine name="Catalina" defaultHost="localhost">
+
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
+
+ <!-- Define the default virtual host
+ Note: XML Schema validation will not work with Xerces 2.2.
+ -->
+ <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
+
+ <Context path="/hudson">
+ <Environment description="" name="HUDSON_HOME" type="java.lang.String" value="@hudson.home@"/>
+ </Context>
+
+ </Host>
+
+ </Engine>
+
+ </Service>
+
+</Server>
\ No newline at end of file
Property changes on: jbpm4/task/trunk/hudson/apache-tomcat/conf/server.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/hudson/apache-tomcat/conf/tomcat-users.xml
===================================================================
--- jbpm4/task/trunk/hudson/apache-tomcat/conf/tomcat-users.xml (rev 0)
+++ jbpm4/task/trunk/hudson/apache-tomcat/conf/tomcat-users.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='utf-8'?>
+<tomcat-users>
+ <role rolename="admin"/>
+ <user username="@hudson.username@" password="@hudson.password@" roles="admin"/>
+</tomcat-users>
Property changes on: jbpm4/task/trunk/hudson/apache-tomcat/conf/tomcat-users.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/hudson/build.xml
===================================================================
--- jbpm4/task/trunk/hudson/build.xml (rev 0)
+++ jbpm4/task/trunk/hudson/build.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ====================================================================== -->
+<!-- -->
+<!-- JBoss, the OpenSource J2EE webOS -->
+<!-- -->
+<!-- Distributable under LGPL license. -->
+<!-- See terms of license at http://www.gnu.org. -->
+<!-- -->
+<!-- ====================================================================== -->
+
+<!-- $Id$ -->
+
+<project>
+
+ <property name="hudson.dir" value="${basedir}"/>
+ <property name="hudson.target.dir" value="${hudson.dir}/target"/>
+
+ <!-- ================================================================== -->
+ <!-- Initialization -->
+ <!-- ================================================================== -->
+
+ <target name="init">
+
+ <!-- Check if ant.properties is available -->
+ <available property="ant.properties.available" file="${basedir}/ant.properties"/>
+ <fail message="Cannot find ant.properties. Did you copy/edit ant.properties.example?" unless="ant.properties.available"/>
+
+ <property file="${basedir}/ant.properties"/>
+
+ <xmlproperty file="${basedir}/../pom.xml"/>
+ <property name="version.id" value="${project.version}"/>
+ <property name="repository.id" value="${project.version}"/>
+
+ <echo message="version.id=${version.id}"/>
+ <echo message="repository.id=${repository.id}"/>
+ </target>
+
+ <target name="init-hudson" depends="init">
+
+ <property name="hudson.tomcat" value="${hudson.root}/jbpm-hudson-${version.id}/apache-tomcat"/>
+ <property name="hudson.home" value="${hudson.root}/jbpm-hudson-${version.id}/hudson-home"/>
+ <echo/>
+ <echo message="hudson.root = ${hudson.root}"/>
+ <echo message="hudson.home = ${hudson.home}"/>
+ <echo/>
+
+ <available file="${hudson.root}" property="hudson.root.available"/>
+ <available file="${hudson.tomcat}" property="hudson.tomcat.available"/>
+ <fail message="Hudson root not available" unless="hudson.root.available"/>
+
+ <property name="hudson.username.${hudson.username}" value="true"/>
+ <fail message="Cannot use default hudson username: ${hudson.username}" if="hudson.username.changeme"/>
+ <property name="hudson.password.${hudson.password}" value="true"/>
+ <fail message="Cannot use default hudson password: ${hudson.password}" if="hudson.password.changeme"/>
+
+ <property name="thirdparty.dir" value="${hudson.target.dir}/thirdparty"/>
+ <mkdir dir="${thirdparty.dir}"/>
+
+ </target>
+
+ <!--
+ Setup the Hudson Tomcat instance
+ -->
+ <target name="hudson-tomcat-setup" depends="init-hudson" unless="hudson.tomcat.available">
+
+ <get src="${jboss.repository}/apache-tomcat/${apache-tomcat}/lib/apache-tomcat.zip" dest="${thirdparty.dir}/apache-tomcat.zip" usetimestamp="true" verbose="true"/>
+ <get src="${jboss.repository}/sun-hudson/${sun-hudson}/lib/hudson.war" dest="${thirdparty.dir}/hudson.war" usetimestamp="true" verbose="true"/>
+
+ <mkdir dir="${hudson.root}"/>
+ <unzip src="${thirdparty.dir}/apache-tomcat.zip" dest="${hudson.root}"/>
+ <move file="${hudson.root}/apache-tomcat-${apache-tomcat}" tofile="${hudson.tomcat}"/>
+ <chmod perm="+x">
+ <fileset dir="${hudson.tomcat}/bin">
+ <include name="*.sh"/>
+ </fileset>
+ </chmod>
+
+ <!-- Configure Tomcat -->
+ <copy todir="${hudson.tomcat}/webapps" file="${thirdparty.dir}/hudson.war"/>
+ <copy todir="${hudson.tomcat}" overwrite="true">
+ <fileset dir="${hudson.dir}/apache-tomcat">
+ <include name="**/*.xml"/>
+ </fileset>
+ <filterset>
+ <filtersfile file="${hudson.dir}/ant.properties"/>
+ <filter token="hudson.home" value="${hudson.home}"/>
+ </filterset>
+ </copy>
+ </target>
+
+ <!--
+ Update the Hudson version
+ -->
+ <target name="hudson-update" depends="init-hudson">
+
+ <get src="${jboss.repository}/sun-hudson/${sun-hudson}/lib/hudson.war" dest="${thirdparty.dir}/hudson.war" usetimestamp="false" verbose="true"/>
+
+ <delete dir="${hudson.tomcat}/webapps/hudson"/>
+ <copy todir="${hudson.tomcat}/webapps" file="${thirdparty.dir}/hudson.war"/>
+ </target>
+
+ <!--
+ Setup the Hudson QA environment
+ -->
+ <target name="hudson-setup" depends="init-hudson,hudson-tomcat-setup"
+ description="Setup the Hudson QA environment">
+
+ <!-- get the svn url -->
+ <exec dir="${hudson.dir}/.." executable="svn" failonerror="true" output="${hudson.target.dir}/svn-info.xml">
+ <arg line="info"/>
+ <arg line="--xml"/>
+ </exec>
+ <xmlproperty file="${hudson.target.dir}/svn-info.xml"/>
+ <property name="hudson.jbpm.url" value="${info.entry.url}"/>
+
+ <!-- Configure Hudson -->
+ <copy todir="${hudson.home}" overwrite="true">
+ <fileset dir="${hudson.dir}/hudson-home">
+ <include name="jobs/*/config.xml"/>
+ <include name="users/*/config.xml"/>
+ <include name="*.xml"/>
+ </fileset>
+ <filterset>
+ <filter token="hudson.jbpm.url" value="${hudson.jbpm.url}"/>
+ <filter token="hudson.home" value="${hudson.home}"/>
+ <filter token="version.id" value="${version.id}"/>
+ <filtersfile file="${hudson.dir}/ant.properties"/>
+ </filterset>
+ </copy>
+
+ <echo/>
+ <echo message="*************************************"/>
+ <echo message="* Hudson setup successfully *"/>
+ <echo message="* ant hudson-start *"/>
+ <echo message="*************************************"/>
+ <echo/>
+
+ </target>
+
+ <target name="hudson-stop" depends="init-hudson" description="Stops the Hudson QA environment">
+
+ <exec executable="${hudson.tomcat}/bin/catalina.sh" failonerror="true">
+ <arg line="stop"/>
+ </exec>
+
+ <echo/>
+ <echo message="*************************************"/>
+ <echo message="* Hudson stopped successfully *"/>
+ <echo message="* ant hudson-start *"/>
+ <echo message="*************************************"/>
+ <echo/>
+
+ </target>
+
+ <target name="hudson-start" depends="init-hudson" description="Start the Hudson QA environment">
+
+ <property environment="env"/>
+ <fail message="unset JBOSS_REPOSITORY=${env.JBOSS_REPOSITORY}" if="env.JBOSS_REPOSITORY"/>
+
+ <exec executable="${hudson.tomcat}/bin/catalina.sh" failonerror="true" output="${hudson.target.dir}/hudson.log">
+ <env key="CATALINA_OPTS" value="-Xmx512m -Djava.awt.headless=true"/>
+ <arg line="start"/>
+ </exec>
+
+ <echo/>
+ <echo message="*************************************"/>
+ <echo message="* Hudson started successfully *"/>
+ <echo message="* http://localhost:${hudson.http.port}/hudson *"/>
+ <echo message="*************************************"/>
+ <echo/>
+
+ </target>
+
+</project>
Property changes on: jbpm4/task/trunk/hudson/build.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/hudson/hudson-home/config.xml
===================================================================
--- jbpm4/task/trunk/hudson/hudson-home/config.xml (rev 0)
+++ jbpm4/task/trunk/hudson/hudson-home/config.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hudson>
+ <numExecutors>1</numExecutors>
+ <useSecurity>true</useSecurity>
+ <systemMessage>
+ <![CDATA[
+ <h2>jBPM-(a)version.id@ QA Environment</h2>
+
+ <table>
+ <tr><th align=left>jBPM:</th><td>@hudson.jbpm.url@</td></tr>
+ </table>
+]]>
+ </systemMessage>
+ <jdks/>
+ <slaves/>
+ <quietPeriod>5</quietPeriod>
+</hudson>
\ No newline at end of file
Property changes on: jbpm4/task/trunk/hudson/hudson-home/config.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml
===================================================================
--- jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml (rev 0)
+++ jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hudson.tasks.Mailer-DescriptorImpl>
+ <defaultSuffix></defaultSuffix>
+ <hudsonUrl>http://@hudson.host@:@hudson.http.port@/hudson/</hudsonUrl>
+ <adminAddress>thomas.diesler(a)jboss.com</adminAddress>
+ <smtpHost>@hudson.smtp.host@</smtpHost>
+</hudson.tasks.Mailer-DescriptorImpl>
Property changes on: jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Maven.xml
===================================================================
--- jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Maven.xml (rev 0)
+++ jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Maven.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,9 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hudson.tasks.Maven_-DescriptorImpl>
+ <installations>
+ <hudson.tasks.Maven_-MavenInstallation>
+ <name>apache-maven</name>
+ <mavenHome>@hudson.maven.path@</mavenHome>
+ </hudson.tasks.Maven_-MavenInstallation>
+ </installations>
+</hudson.tasks.Maven_-DescriptorImpl>
\ No newline at end of file
Property changes on: jbpm4/task/trunk/hudson/hudson-home/hudson.tasks.Maven.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/hudson/hudson-home/jobs/jBPM4/config.xml
===================================================================
--- jbpm4/task/trunk/hudson/hudson-home/jobs/jBPM4/config.xml (rev 0)
+++ jbpm4/task/trunk/hudson/hudson-home/jobs/jBPM4/config.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hudson.maven.MavenModuleSet>
+ <rootModule>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm</artifactId>
+ </rootModule>
+ <goals>test</goals>
+ <reporters/>
+ <scm class="hudson.scm.SubversionSCM">
+ <locations>
+ <hudson.scm.SubversionSCM_-ModuleLocation>
+ <remote>@hudson.jbpm.url@</remote>
+ <local>jpdl</local>
+ </hudson.scm.SubversionSCM_-ModuleLocation>
+ </locations>
+ <useUpdate>true</useUpdate>
+ <browser class="hudson.scm.browsers.ViewSVN">
+ <url>http://fisheye.jboss.com/browse/JbpmSvn/</url>
+ </browser>
+ </scm>
+ <canRoam>true</canRoam>
+ <disabled>false</disabled>
+ <triggers class="vector"/>
+ <keepDependencies>false</keepDependencies>
+ <properties/>
+ <description></description>
+ <actions class="vector"/>
+</hudson.maven.MavenModuleSet>
\ No newline at end of file
Property changes on: jbpm4/task/trunk/hudson/hudson-home/jobs/jBPM4/config.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/pom.xml
===================================================================
--- jbpm4/task/trunk/modules/core/pom.xml (rev 0)
+++ jbpm4/task/trunk/modules/core/pom.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ====================================================================== -->
+<!-- -->
+<!-- JBoss, the OpenSource J2EE webOS -->
+<!-- -->
+<!-- Distributable under LGPL license. -->
+<!-- See terms of license at http://www.gnu.org. -->
+<!-- -->
+<!-- ====================================================================== -->
+
+<!-- $Id$ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <name>JBoss jBPM 4 - Task Core</name>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>task-core</artifactId>
+ <packaging>jar</packaging>
+
+ <!-- Parent -->
+ <parent>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ </parent>
+
+ <!-- Properties -->
+ <properties>
+
+ </properties>
+
+ <!-- Dependencies -->
+ <dependencies>
+ <!-- jBPM Dependencies -->
+ <dependency>
+ <groupId>org.jboss.jbpm.pvm</groupId>
+ <artifactId>pvm-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm-api</artifactId>
+ </dependency>
+
+ <!-- Compile Dependencies -->
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+
+ </dependencies>
+
+
+ <!-- Plugins -->
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <showDeprecation>false</showDeprecation>
+ <testExcludes>
+ <exclude>org/jbpm/task/TaskDbTest.java</exclude>
+ <exclude>org/jbpm/task/TaskTest.java</exclude>
+ </testExcludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>hibernate.cfg.xml</exclude>
+ <exclude>jbpm.cfg.xml</exclude>
+ <exclude>jbpm.mail.templates.xml</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>org/jbpm/task/TaskServiceTest.java</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Property changes on: jbpm4/task/trunk/modules/core/pom.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/doc/models.uml
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/doc/models.uml (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/doc/models.uml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,1250 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XPD:PROJECT xmlns:XPD="http://www.staruml.com" version="1">
+<XPD:HEADER>
+<XPD:SUBUNITS>
+</XPD:SUBUNITS>
+<XPD:PROFILES>
+</XPD:PROFILES>
+</XPD:HEADER>
+<XPD:BODY>
+<XPD:OBJ name="DocumentElement" type="UMLProject" guid="dizqvgl3LkeHjy/ks6kH8wAA">
+<XPD:ATTR name="Title" type="string">Untitled</XPD:ATTR>
+<XPD:ATTR name="#OwnedElements" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLModel" guid="28q8akawHUut/vt9cqGzHQAA">
+<XPD:ATTR name="Name" type="string">Task</XPD:ATTR>
+<XPD:REF name="Namespace">dizqvgl3LkeHjy/ks6kH8wAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="y2Dig32fuk2qfbzhVMV12gAA">
+<XPD:ATTR name="Name" type="string">Task</XPD:ATTR>
+<XPD:REF name="DiagramOwner">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="/N3kDxf0DUmenjfOISss4wAA">
+<XPD:REF name="Diagram">y2Dig32fuk2qfbzhVMV12gAA</XPD:REF>
+<XPD:ATTR name="#OwnedViews" type="integer">14</XPD:ATTR>
+<XPD:OBJ name="OwnedViews[0]" type="UMLClassView" guid="BEGpovprr0OpCDXKEafPPAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">452</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">112</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">127</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">56</XPD:ATTR>
+<XPD:REF name="Model">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="cb1HAOVGbUGhz+5u0aVooAAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="9T7IkvwqGEqMzkPM65WmMAAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Task</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="18KTnjDHzEGH+Q+GkR1ClQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="JiknLGb/Z0Cu9nqlyaNn3AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="Nb2y5cEn8E++FPMih7TpfAAA">
+<XPD:REF name="Model">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="9sAfjtNojEiLZ2kkSKHULgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="UIi+TBpteUG0OFM1uqHsaAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[1]" type="UMLClassView" guid="fs8kGcLd20yQW3uybthdSwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">268</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">68</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">97</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">30</XPD:ATTR>
+<XPD:REF name="Model">uTvluPMq6EiVrEzIldF+CwAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="f5cPYbMir0W8/tl+uePzMAAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="Kxi/geJq70m18XV0vWefYwAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">TaskDefinition</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="MTLywrlLUECL0ZhK/KmVawAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="yXGzgAKcbUiqP0djDFiJuQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="PuerV6iAkkGmjsZdqAJEEAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">uTvluPMq6EiVrEzIldF+CwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="M7WkDdTEmkKEx7odnins/gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">uTvluPMq6EiVrEzIldF+CwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="FxIHioj58Ei2Xjj6rcXj8wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">uTvluPMq6EiVrEzIldF+CwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[2]" type="UMLClassView" guid="MH9M/bx8Akm+nfvMLj/xkAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">64</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">180</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">118</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">30</XPD:ATTR>
+<XPD:REF name="Model">GioGPK3R6Ue8w6V2t8TzvgAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="JxjsAefJoEmgKonRE54TqAAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="f6BUZLh9CU6aYJF1xVRY7gAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">SwimlaneDefinition</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="Sjax149rckKdVbycxgQpXgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="0dfMlb1+6Ue/2vl1YFxW3QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="yTCES2vNVUaDe5fVHcuuNwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">GioGPK3R6Ue8w6V2t8TzvgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="H4oGMkjhHEyBhi/8rQaD7wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">GioGPK3R6Ue8w6V2t8TzvgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="otxfkH9A4EakNQ1lqnfSRwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">GioGPK3R6Ue8w6V2t8TzvgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[3]" type="UMLClassView" guid="ror19oxT9kuTiijsBoK/bAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">268</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">168</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">99</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">57</XPD:ATTR>
+<XPD:REF name="Model">ijjMqBZ6REK0iCxeAVpgAAAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="2kE7oGVvZkyuBlPJ5a/RcAAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="GEzmoSK3r0WGznrtX32JzQAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Swimlane</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="2YKnNa31ik2ojBUwCEjvpQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="t4P5eBSAJkqqeh3Hg2hmBwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="4rjyvONTNUiPcfx1G59ibQAA">
+<XPD:REF name="Model">ijjMqBZ6REK0iCxeAVpgAAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="//L9vrH53EOscgK+ByNq7QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">ijjMqBZ6REK0iCxeAVpgAAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="cMsAJi5+eEWIlooBLw2zGQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">ijjMqBZ6REK0iCxeAVpgAAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[4]" type="UMLClassView" guid="gaiFlhWKiUe6Ca6zyb+P9wAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">660</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">120</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">86</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">30</XPD:ATTR>
+<XPD:REF name="Model">NKuLMRCxwkeVGSHi+kJ4PAAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="lmMUO8llAEOBRgv+t/sDnQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="Vh5aRoisiEWlEtggSfVlAgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Comment</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="Rbp+SfECfEi50IPNbuybxwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="iO3UrPh5+UasGCA9ehmwrAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="i2nM8GNG40KTTd1cuy4DtQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">NKuLMRCxwkeVGSHi+kJ4PAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="nu4ZY/6DP0S6WVnGJAA4PAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">NKuLMRCxwkeVGSHi+kJ4PAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="+CwsKO2rIEie2/cKkqFrtQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">NKuLMRCxwkeVGSHi+kJ4PAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[5]" type="UMLClassView" guid="S4BlySM5kUW/YiK6Pey5zQAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">660</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">172</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">112</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">61</XPD:ATTR>
+<XPD:REF name="Model">nDDKC4LElEWTybRg7a79OQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="EG+yjZiZSk6dQYbTSchLIgAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="kfnvHZmp/U6vqgIWtfgo+wAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Role</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="Dc5QO3PXY0CqLVjbgof6XgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="k5EEwBtSDUKqEQ+8PQDYdgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="d7UQQXomaUeNgE4YzwfwjAAA">
+<XPD:REF name="Model">nDDKC4LElEWTybRg7a79OQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="VNUc47aFgky/2uiWcvDu+wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">nDDKC4LElEWTybRg7a79OQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="7X2ZbAYJSkq2jDYnXuXq0wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">nDDKC4LElEWTybRg7a79OQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[6]" type="UMLAssociationView" guid="vlPPTxt05ky9R0jdt64xogAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">660,180;608,180;608,160;578,160</XPD:ATTR>
+<XPD:REF name="Model">G9y2XZEWjU+fF6GadfrMNQAA</XPD:REF>
+<XPD:REF name="Head">BEGpovprr0OpCDXKEafPPAAA</XPD:REF>
+<XPD:REF name="Tail">S4BlySM5kUW/YiK6Pey5zQAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="WYg7QywiKEKtk0JHTnhPQAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">G9y2XZEWjU+fF6GadfrMNQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="xrCsE8KnX0Oh8sZQo4nXUgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">G9y2XZEWjU+fF6GadfrMNQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="fHicZJt+ckSbT0efOqS9KgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">G9y2XZEWjU+fF6GadfrMNQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="N1AaoL+Z4ECW6JuSkuWnfAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">EZ8r6H+KEUOwFX+TBkkkkQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="zGcniyozykOgAgWYPsbL8AAA">
+<XPD:ATTR name="Alpha" type="real">-0,27829978479133</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">21,8403296678416</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">+roles</XPD:ATTR>
+<XPD:REF name="Model">j7CvxXw8zUuJA8N8a0/lZwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="TPkwMum6MEK5T0dcpz4jJAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">EZ8r6H+KEUOwFX+TBkkkkQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="6vZm1k5uTkiVNM7aHsMJswAA">
+<XPD:ATTR name="Alpha" type="real">0,620249823820819</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">17,2046505340853</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">j7CvxXw8zUuJA8N8a0/lZwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="2/8qn+mwQEC+A0Z7e54FFAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">EZ8r6H+KEUOwFX+TBkkkkQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="CTPYQGO6lE+AUGXQx1gMjAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">j7CvxXw8zUuJA8N8a0/lZwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="2LswS62HG0m6CPejDe/PEwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-908</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-968</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">EZ8r6H+KEUOwFX+TBkkkkQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="W6sN09AH1kSIQllKiGn4egAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-908</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-968</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">j7CvxXw8zUuJA8N8a0/lZwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[7]" type="UMLAssociationView" guid="kCEQ989tnUi8utrj1r+WuwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">660,140;578,140</XPD:ATTR>
+<XPD:REF name="Model">ucLP51aO/EenmVgZ5kHf+gAA</XPD:REF>
+<XPD:REF name="Head">BEGpovprr0OpCDXKEafPPAAA</XPD:REF>
+<XPD:REF name="Tail">gaiFlhWKiUe6Ca6zyb+P9wAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="PVDNxCwBS06I5wevxolefgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">ucLP51aO/EenmVgZ5kHf+gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="q7l9uyxHbkKezfMiZkEUtwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">ucLP51aO/EenmVgZ5kHf+gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="Y2oOGzv6QE20GosmIVezrgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">ucLP51aO/EenmVgZ5kHf+gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="C67aHXPFBk+hpaUbSC5qQwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">y1D4yhmlCUuZRScC0SWorwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="asLFqkfz1kOieET4xs6NTwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">otiWB8zxNUWzDwH20HQwxQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="9a+PmYwA106lZnqm/AD3xwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">y1D4yhmlCUuZRScC0SWorwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="NCcc+zjELUir3iJ7uWwrjwAA">
+<XPD:ATTR name="Alpha" type="real">-0,540419941447379</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">11,6619037896906</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">otiWB8zxNUWzDwH20HQwxQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="0ib1VsXba06m432Y4S+q/wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">y1D4yhmlCUuZRScC0SWorwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="CTg2tLYVQ0uVIrDKnq5wMAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">otiWB8zxNUWzDwH20HQwxQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="YZwZYYU4yk+prP+8GOLHNQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-908</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-968</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">y1D4yhmlCUuZRScC0SWorwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="mVHxvbQtUUa5+NHlAOUrQwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-908</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-968</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">otiWB8zxNUWzDwH20HQwxQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[8]" type="UMLAssociationView" guid="/4J9gJdnhE2I6S8pR8e8CwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">452,148;396,148;396,176;366,176</XPD:ATTR>
+<XPD:REF name="Model">gPaQ+DIN6EWZ4BdgEPOxBAAA</XPD:REF>
+<XPD:REF name="Head">ror19oxT9kuTiijsBoK/bAAA</XPD:REF>
+<XPD:REF name="Tail">BEGpovprr0OpCDXKEafPPAAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="rd3R8mu5OUu9cvZ6Z/4NggAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">gPaQ+DIN6EWZ4BdgEPOxBAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="GY3pM5HSK0iI2veru1WgUwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">gPaQ+DIN6EWZ4BdgEPOxBAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="DsV6M80A20K/A48wJowMVAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">gPaQ+DIN6EWZ4BdgEPOxBAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="2Hiiw/pWfUCivqUfdBW8OwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">pIDN0gCe306T092GLUvstgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="4EX0iPgXT0WYxWFInd77KQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">hKHk5PnDTkKXfRG2jmcJJAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="+KVkT8ozQkemNWISCynPpQAA">
+<XPD:ATTR name="Alpha" type="real">0,463647323286684</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15,6524758424985</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">0..1</XPD:ATTR>
+<XPD:REF name="Model">pIDN0gCe306T092GLUvstgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="34tfoxrPFkqQ6azctOeNhgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">hKHk5PnDTkKXfRG2jmcJJAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="Ma86Ms4jpU6yL/qb2Bb7CQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">pIDN0gCe306T092GLUvstgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="RTUJ+/IcmkmU5J4z/G0vWAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">hKHk5PnDTkKXfRG2jmcJJAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="C2iw/esZgEmhWgrr+NZg+QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-948</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">pIDN0gCe306T092GLUvstgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="Q/HJJURAq0OyhISJkhdf6wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-948</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">hKHk5PnDTkKXfRG2jmcJJAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[9]" type="UMLAssociationView" guid="l0EW19sL+k++O39a+OyjxQAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">660,216;366,216</XPD:ATTR>
+<XPD:REF name="Model">+Ae9qqvOAEiQr4SuowB4xgAA</XPD:REF>
+<XPD:REF name="Head">ror19oxT9kuTiijsBoK/bAAA</XPD:REF>
+<XPD:REF name="Tail">S4BlySM5kUW/YiK6Pey5zQAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="Hzr4oQcJrkuoVCYMb8ik2QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">+Ae9qqvOAEiQr4SuowB4xgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="Dd5BXxX0k0uHTHP6wlvpSgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">+Ae9qqvOAEiQr4SuowB4xgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="Tpgj7+i4REuc+JlFB3AxGAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">+Ae9qqvOAEiQr4SuowB4xgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="Iz0U5YCBrka8yPUrXxKlCgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">qhpWc/+HW0SLBBtfjX4WFwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="3DFnlxZwKkOSCvZ3x80JIAAA">
+<XPD:ATTR name="Alpha" type="real">-0,191184519777575</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">31,5753068076939</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">+candidates</XPD:ATTR>
+<XPD:REF name="Model">Y3XN0KcISUujsCKot7FRwQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="PN0Z99QsQ0aA06SWVhrzdgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">qhpWc/+HW0SLBBtfjX4WFwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="ZVJgTp3++0aX2CB2R8hCuQAA">
+<XPD:ATTR name="Alpha" type="real">0,785398663397698</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">14,142135623731</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">Y3XN0KcISUujsCKot7FRwQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="wAtztCseO0m7PZc49MG+agAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">qhpWc/+HW0SLBBtfjX4WFwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="AnVW30FHVU+3Ccfw7YrxnAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">Y3XN0KcISUujsCKot7FRwQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="ft42mcFsHECO0yQKn8iDQQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-948</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">qhpWc/+HW0SLBBtfjX4WFwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="Ooz9JUM66E+ASSUnOnh1KwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-948</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">Y3XN0KcISUujsCKot7FRwQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[10]" type="UMLAssociationView" guid="s97DNIncIUyqxXbneTudIQAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">364,88;392,88;392,120;452,120</XPD:ATTR>
+<XPD:REF name="Model">u9wX0QGdzEKXDMUSuMeSlAAA</XPD:REF>
+<XPD:REF name="Head">BEGpovprr0OpCDXKEafPPAAA</XPD:REF>
+<XPD:REF name="Tail">fs8kGcLd20yQW3uybthdSwAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="5nJJhIKfP0aphx/wCbPj8QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">u9wX0QGdzEKXDMUSuMeSlAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="GF15CGpxb0ihKLCpqEgiPwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">u9wX0QGdzEKXDMUSuMeSlAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="mQ03MxKHVEGf7/sHqs6UNQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">u9wX0QGdzEKXDMUSuMeSlAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="TFju0xnXzUeFLEfbHAgvxwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">0vFa396IN0SfuCWKBLJF0AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="ABsrUukx4UKDMLhPlPcXaAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">zekdyR8yEUmNFK08gWI5UgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="6pSDVmO3RUiGwA0KZzySZgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">0vFa396IN0SfuCWKBLJF0AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="llvYWWfx/E6vLX4zQ9IOHwAA">
+<XPD:ATTR name="Alpha" type="real">0,620249148145143</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">17,2046505340853</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">0..1</XPD:ATTR>
+<XPD:REF name="Model">zekdyR8yEUmNFK08gWI5UgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="ZP18gpDXvEaqIO5x2PK4vwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">0vFa396IN0SfuCWKBLJF0AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="6oYASua5iUi3jt++CaJaRgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">zekdyR8yEUmNFK08gWI5UgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="LrU5/QaN5kabGVbUYT2uVwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-948</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">0vFa396IN0SfuCWKBLJF0AAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="fncRPs0eyUay6gLlnfmaoAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-948</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">zekdyR8yEUmNFK08gWI5UgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[11]" type="UMLAssociationView" guid="hEfg3zF9T0KZqM6LoHkeywAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">181,193;268,193</XPD:ATTR>
+<XPD:REF name="Model">lT1ML7PzwUGLyiBN6ZM9ewAA</XPD:REF>
+<XPD:REF name="Head">ror19oxT9kuTiijsBoK/bAAA</XPD:REF>
+<XPD:REF name="Tail">MH9M/bx8Akm+nfvMLj/xkAAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="Xp9wRzdQwUiqwJCNI5b4JQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">lT1ML7PzwUGLyiBN6ZM9ewAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="dQQcX7/IbUGZGP/exqC6OQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">lT1ML7PzwUGLyiBN6ZM9ewAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="wowPjb5qSEiE1UD8gtsPVAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">lT1ML7PzwUGLyiBN6ZM9ewAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="fZzGyZZt1US3pySjYdbe3AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">xnq3//AvmkaNPVRDsIkseAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="kerBdAuXP0qGhUBsKsaVBgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">gXiNnV7a90+F3ShZ01TMFAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="AmXw2BgBNk+PLXzTBtMTqgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">xnq3//AvmkaNPVRDsIkseAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="24szT2Qfg0uwuXHurF5FawAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">gXiNnV7a90+F3ShZ01TMFAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="UHz2AHAHTk6b0UBy27uYsgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">xnq3//AvmkaNPVRDsIkseAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="4pcy4Hj8vUuVJIBH55+G8wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">gXiNnV7a90+F3ShZ01TMFAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="oiGUCSbvcE2jf8t3N6P8eAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-948</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">xnq3//AvmkaNPVRDsIkseAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="n+zAECOm3kuPp0U6fGa9qQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-948</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">gXiNnV7a90+F3ShZ01TMFAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[12]" type="UMLAssociationView" guid="0Q8MZMRv3keC5G0P3jqvLgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">540,112;540,92;612,92;612,120;578,120</XPD:ATTR>
+<XPD:REF name="Model">AVjFcKW/SkGrDDjIOVRD+gAA</XPD:REF>
+<XPD:REF name="Head">BEGpovprr0OpCDXKEafPPAAA</XPD:REF>
+<XPD:REF name="Tail">BEGpovprr0OpCDXKEafPPAAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="d3Kypc5e9USTEK3RieUIQgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">AVjFcKW/SkGrDDjIOVRD+gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="uD+JnEzcwkSPAPXtxxC+uQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">AVjFcKW/SkGrDDjIOVRD+gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="rnjCjREV6kK6FI664NzbmQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">AVjFcKW/SkGrDDjIOVRD+gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="cfgsL9WLv0C08ZQHcVaKFAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">wi5BJHl4RkiqqqtC44D95QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="GDNhCHzLh0WvJJ1jxSWCbAAA">
+<XPD:ATTR name="Alpha" type="real">-0,765792532386477</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">36,0693775937429</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">+subTasks</XPD:ATTR>
+<XPD:REF name="Model">s0hHwXTeU02e7YGLMAX0PAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="5qWWjDhi90uAUXDD5YSGkAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">wi5BJHl4RkiqqqtC44D95QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="X0imqN7kTUWC5VgPlkJ00gAA">
+<XPD:ATTR name="Alpha" type="real">-0,519146152707896</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">16,1245154965971</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">s0hHwXTeU02e7YGLMAX0PAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="L1KmK8JoRUSHUwvrb5aMcQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">wi5BJHl4RkiqqqtC44D95QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="qjcLVMn3yEiW/FQqSOppuwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">s0hHwXTeU02e7YGLMAX0PAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="ghdCa3kzQUCEmb8k45FU/AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-924</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">wi5BJHl4RkiqqqtC44D95QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="poFTZVOeaUWdQnmYEjp2JgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-924</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-972</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">s0hHwXTeU02e7YGLMAX0PAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[13]" type="UMLAssociationView" guid="9vrgDuSQRkuGM2KpgQ681wAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">712,120;712,96;774,96;774,132;745,132</XPD:ATTR>
+<XPD:REF name="Model">3DEhC+Nv0kK7uqtxV6JcZwAA</XPD:REF>
+<XPD:REF name="Head">gaiFlhWKiUe6Ca6zyb+P9wAA</XPD:REF>
+<XPD:REF name="Tail">gaiFlhWKiUe6Ca6zyb+P9wAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="HPgV9SBY2kahngUOTUUnqgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">3DEhC+Nv0kK7uqtxV6JcZwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="4xtJRUX4cUW2j7LzmJ71HgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">3DEhC+Nv0kK7uqtxV6JcZwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="cOI/0aN4FEmtKry1i0zsGgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">3DEhC+Nv0kK7uqtxV6JcZwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="mJSLnpapqEe+JCw/l9ZrWgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">9l7hGk4Y/kqJrk9GldzJ6QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="MRGwgnyuZkenbLrSBgMGowAA">
+<XPD:ATTR name="Alpha" type="real">-0,564569214907821</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">35,5105618091294</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">+replies</XPD:ATTR>
+<XPD:REF name="Model">zWDSiZ7kIEKvhXHKxmicAwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="mbaATlJxY064398AzNkbrAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">9l7hGk4Y/kqJrk9GldzJ6QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="NDIxC9Q5bUq5Bq5jTTb6DAAA">
+<XPD:ATTR name="Alpha" type="real">-0,463647636778485</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">20,1246117974981</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">zWDSiZ7kIEKvhXHKxmicAwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="vQr9dU7oMkScUooE1diouQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">9l7hGk4Y/kqJrk9GldzJ6QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="E7w5n6j9t02OUqefF5g+GQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">zWDSiZ7kIEKvhXHKxmicAwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="v+lh/JYNEk2ckddRKkYMqgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-908</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-976</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">9l7hGk4Y/kqJrk9GldzJ6QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="Hccf2ZoTsUGJM1WkqVxZHAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-908</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-976</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">zWDSiZ7kIEKvhXHKxmicAwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#OwnedElements" type="integer">15</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLClass" guid="HvFFmfu3EU2Q5JpvC4V1dAAA">
+<XPD:ATTR name="Name" type="string">Task</XPD:ATTR>
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">BEGpovprr0OpCDXKEafPPAAA</XPD:REF>
+<XPD:REF name="Views[1]">Nb2y5cEn8E++FPMih7TpfAAA</XPD:REF>
+<XPD:REF name="Views[2]">9sAfjtNojEiLZ2kkSKHULgAA</XPD:REF>
+<XPD:REF name="Views[3]">UIi+TBpteUG0OFM1uqHsaAAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">6</XPD:ATTR>
+<XPD:REF name="Associations[0]">EZ8r6H+KEUOwFX+TBkkkkQAA</XPD:REF>
+<XPD:REF name="Associations[1]">y1D4yhmlCUuZRScC0SWorwAA</XPD:REF>
+<XPD:REF name="Associations[2]">hKHk5PnDTkKXfRG2jmcJJAAA</XPD:REF>
+<XPD:REF name="Associations[3]">0vFa396IN0SfuCWKBLJF0AAA</XPD:REF>
+<XPD:REF name="Associations[4]">s0hHwXTeU02e7YGLMAX0PAAA</XPD:REF>
+<XPD:REF name="Associations[5]">wi5BJHl4RkiqqqtC44D95QAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="j/qyRKyyK0yfML2GQCwouQAA">
+<XPD:ATTR name="Name" type="string">assignee</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[1]" type="UMLClass" guid="uTvluPMq6EiVrEzIldF+CwAA">
+<XPD:ATTR name="Name" type="string">TaskDefinition</XPD:ATTR>
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">fs8kGcLd20yQW3uybthdSwAA</XPD:REF>
+<XPD:REF name="Views[1]">PuerV6iAkkGmjsZdqAJEEAAA</XPD:REF>
+<XPD:REF name="Views[2]">M7WkDdTEmkKEx7odnins/gAA</XPD:REF>
+<XPD:REF name="Views[3]">FxIHioj58Ei2Xjj6rcXj8wAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Associations[0]">zekdyR8yEUmNFK08gWI5UgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[2]" type="UMLClass" guid="GioGPK3R6Ue8w6V2t8TzvgAA">
+<XPD:ATTR name="Name" type="string">SwimlaneDefinition</XPD:ATTR>
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">MH9M/bx8Akm+nfvMLj/xkAAA</XPD:REF>
+<XPD:REF name="Views[1]">yTCES2vNVUaDe5fVHcuuNwAA</XPD:REF>
+<XPD:REF name="Views[2]">H4oGMkjhHEyBhi/8rQaD7wAA</XPD:REF>
+<XPD:REF name="Views[3]">otxfkH9A4EakNQ1lqnfSRwAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Associations[0]">zKLAXgKQ/02weDYbKw8WmwAA</XPD:REF>
+<XPD:REF name="Associations[1]">gXiNnV7a90+F3ShZ01TMFAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[3]" type="UMLClass" guid="ijjMqBZ6REK0iCxeAVpgAAAA">
+<XPD:ATTR name="Name" type="string">Swimlane</XPD:ATTR>
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">ror19oxT9kuTiijsBoK/bAAA</XPD:REF>
+<XPD:REF name="Views[1]">4rjyvONTNUiPcfx1G59ibQAA</XPD:REF>
+<XPD:REF name="Views[2]">//L9vrH53EOscgK+ByNq7QAA</XPD:REF>
+<XPD:REF name="Views[3]">cMsAJi5+eEWIlooBLw2zGQAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">4</XPD:ATTR>
+<XPD:REF name="Associations[0]">pIDN0gCe306T092GLUvstgAA</XPD:REF>
+<XPD:REF name="Associations[1]">qhpWc/+HW0SLBBtfjX4WFwAA</XPD:REF>
+<XPD:REF name="Associations[2]">YROrTOuSWkmpMzIJdfaf/QAA</XPD:REF>
+<XPD:REF name="Associations[3]">xnq3//AvmkaNPVRDsIkseAAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="UrpmYKHol0y1p0QVb2Y+KQAA">
+<XPD:ATTR name="Name" type="string">assignee</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">ijjMqBZ6REK0iCxeAVpgAAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[4]" type="UMLClass" guid="NKuLMRCxwkeVGSHi+kJ4PAAA">
+<XPD:ATTR name="Name" type="string">Comment</XPD:ATTR>
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">gaiFlhWKiUe6Ca6zyb+P9wAA</XPD:REF>
+<XPD:REF name="Views[1]">i2nM8GNG40KTTd1cuy4DtQAA</XPD:REF>
+<XPD:REF name="Views[2]">nu4ZY/6DP0S6WVnGJAA4PAAA</XPD:REF>
+<XPD:REF name="Views[3]">+CwsKO2rIEie2/cKkqFrtQAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">3</XPD:ATTR>
+<XPD:REF name="Associations[0]">otiWB8zxNUWzDwH20HQwxQAA</XPD:REF>
+<XPD:REF name="Associations[1]">zWDSiZ7kIEKvhXHKxmicAwAA</XPD:REF>
+<XPD:REF name="Associations[2]">9l7hGk4Y/kqJrk9GldzJ6QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[5]" type="UMLClass" guid="nDDKC4LElEWTybRg7a79OQAA">
+<XPD:ATTR name="Name" type="string">Role</XPD:ATTR>
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">S4BlySM5kUW/YiK6Pey5zQAA</XPD:REF>
+<XPD:REF name="Views[1]">d7UQQXomaUeNgE4YzwfwjAAA</XPD:REF>
+<XPD:REF name="Views[2]">VNUc47aFgky/2uiWcvDu+wAA</XPD:REF>
+<XPD:REF name="Views[3]">7X2ZbAYJSkq2jDYnXuXq0wAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Associations[0]">j7CvxXw8zUuJA8N8a0/lZwAA</XPD:REF>
+<XPD:REF name="Associations[1]">Y3XN0KcISUujsCKot7FRwQAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="R6W0j/ihTUmtVv3QsErV3wAA">
+<XPD:ATTR name="Name" type="string">userId</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">nDDKC4LElEWTybRg7a79OQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="0OEKBDLZWUKGfeR2HVdi8wAA">
+<XPD:ATTR name="Name" type="string">roleType</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">RoleType</XPD:ATTR>
+<XPD:REF name="Owner">nDDKC4LElEWTybRg7a79OQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[6]" type="UMLAssociation" guid="G9y2XZEWjU+fF6GadfrMNQAA">
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">vlPPTxt05ky9R0jdt64xogAA</XPD:REF>
+<XPD:REF name="Views[1]">WYg7QywiKEKtk0JHTnhPQAAA</XPD:REF>
+<XPD:REF name="Views[2]">xrCsE8KnX0Oh8sZQo4nXUgAA</XPD:REF>
+<XPD:REF name="Views[3]">fHicZJt+ckSbT0efOqS9KgAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="j7CvxXw8zUuJA8N8a0/lZwAA">
+<XPD:ATTR name="Name" type="string">roles</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">G9y2XZEWjU+fF6GadfrMNQAA</XPD:REF>
+<XPD:REF name="Participant">nDDKC4LElEWTybRg7a79OQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">zGcniyozykOgAgWYPsbL8AAA</XPD:REF>
+<XPD:REF name="Views[1]">6vZm1k5uTkiVNM7aHsMJswAA</XPD:REF>
+<XPD:REF name="Views[2]">CTPYQGO6lE+AUGXQx1gMjAAA</XPD:REF>
+<XPD:REF name="Views[3]">W6sN09AH1kSIQllKiGn4egAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="EZ8r6H+KEUOwFX+TBkkkkQAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">G9y2XZEWjU+fF6GadfrMNQAA</XPD:REF>
+<XPD:REF name="Participant">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">N1AaoL+Z4ECW6JuSkuWnfAAA</XPD:REF>
+<XPD:REF name="Views[1]">TPkwMum6MEK5T0dcpz4jJAAA</XPD:REF>
+<XPD:REF name="Views[2]">2/8qn+mwQEC+A0Z7e54FFAAA</XPD:REF>
+<XPD:REF name="Views[3]">2LswS62HG0m6CPejDe/PEwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[7]" type="UMLAssociation" guid="ucLP51aO/EenmVgZ5kHf+gAA">
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">kCEQ989tnUi8utrj1r+WuwAA</XPD:REF>
+<XPD:REF name="Views[1]">PVDNxCwBS06I5wevxolefgAA</XPD:REF>
+<XPD:REF name="Views[2]">q7l9uyxHbkKezfMiZkEUtwAA</XPD:REF>
+<XPD:REF name="Views[3]">Y2oOGzv6QE20GosmIVezrgAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="otiWB8zxNUWzDwH20HQwxQAA">
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">ucLP51aO/EenmVgZ5kHf+gAA</XPD:REF>
+<XPD:REF name="Participant">NKuLMRCxwkeVGSHi+kJ4PAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">asLFqkfz1kOieET4xs6NTwAA</XPD:REF>
+<XPD:REF name="Views[1]">NCcc+zjELUir3iJ7uWwrjwAA</XPD:REF>
+<XPD:REF name="Views[2]">CTg2tLYVQ0uVIrDKnq5wMAAA</XPD:REF>
+<XPD:REF name="Views[3]">mVHxvbQtUUa5+NHlAOUrQwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="y1D4yhmlCUuZRScC0SWorwAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">ucLP51aO/EenmVgZ5kHf+gAA</XPD:REF>
+<XPD:REF name="Participant">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">C67aHXPFBk+hpaUbSC5qQwAA</XPD:REF>
+<XPD:REF name="Views[1]">9a+PmYwA106lZnqm/AD3xwAA</XPD:REF>
+<XPD:REF name="Views[2]">0ib1VsXba06m432Y4S+q/wAA</XPD:REF>
+<XPD:REF name="Views[3]">YZwZYYU4yk+prP+8GOLHNQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[8]" type="UMLAssociation" guid="gPaQ+DIN6EWZ4BdgEPOxBAAA">
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">/4J9gJdnhE2I6S8pR8e8CwAA</XPD:REF>
+<XPD:REF name="Views[1]">rd3R8mu5OUu9cvZ6Z/4NggAA</XPD:REF>
+<XPD:REF name="Views[2]">GY3pM5HSK0iI2veru1WgUwAA</XPD:REF>
+<XPD:REF name="Views[3]">DsV6M80A20K/A48wJowMVAAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="hKHk5PnDTkKXfRG2jmcJJAAA">
+<XPD:REF name="Association">gPaQ+DIN6EWZ4BdgEPOxBAAA</XPD:REF>
+<XPD:REF name="Participant">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">4EX0iPgXT0WYxWFInd77KQAA</XPD:REF>
+<XPD:REF name="Views[1]">34tfoxrPFkqQ6azctOeNhgAA</XPD:REF>
+<XPD:REF name="Views[2]">RTUJ+/IcmkmU5J4z/G0vWAAA</XPD:REF>
+<XPD:REF name="Views[3]">Q/HJJURAq0OyhISJkhdf6wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="pIDN0gCe306T092GLUvstgAA">
+<XPD:ATTR name="Multiplicity" type="string">0..1</XPD:ATTR>
+<XPD:REF name="Association">gPaQ+DIN6EWZ4BdgEPOxBAAA</XPD:REF>
+<XPD:REF name="Participant">ijjMqBZ6REK0iCxeAVpgAAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">2Hiiw/pWfUCivqUfdBW8OwAA</XPD:REF>
+<XPD:REF name="Views[1]">+KVkT8ozQkemNWISCynPpQAA</XPD:REF>
+<XPD:REF name="Views[2]">Ma86Ms4jpU6yL/qb2Bb7CQAA</XPD:REF>
+<XPD:REF name="Views[3]">C2iw/esZgEmhWgrr+NZg+QAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[9]" type="UMLAssociation" guid="+Ae9qqvOAEiQr4SuowB4xgAA">
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">l0EW19sL+k++O39a+OyjxQAA</XPD:REF>
+<XPD:REF name="Views[1]">Hzr4oQcJrkuoVCYMb8ik2QAA</XPD:REF>
+<XPD:REF name="Views[2]">Dd5BXxX0k0uHTHP6wlvpSgAA</XPD:REF>
+<XPD:REF name="Views[3]">Tpgj7+i4REuc+JlFB3AxGAAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="Y3XN0KcISUujsCKot7FRwQAA">
+<XPD:ATTR name="Name" type="string">candidates</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">+Ae9qqvOAEiQr4SuowB4xgAA</XPD:REF>
+<XPD:REF name="Participant">nDDKC4LElEWTybRg7a79OQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">3DFnlxZwKkOSCvZ3x80JIAAA</XPD:REF>
+<XPD:REF name="Views[1]">ZVJgTp3++0aX2CB2R8hCuQAA</XPD:REF>
+<XPD:REF name="Views[2]">AnVW30FHVU+3Ccfw7YrxnAAA</XPD:REF>
+<XPD:REF name="Views[3]">Ooz9JUM66E+ASSUnOnh1KwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="qhpWc/+HW0SLBBtfjX4WFwAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">+Ae9qqvOAEiQr4SuowB4xgAA</XPD:REF>
+<XPD:REF name="Participant">ijjMqBZ6REK0iCxeAVpgAAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">Iz0U5YCBrka8yPUrXxKlCgAA</XPD:REF>
+<XPD:REF name="Views[1]">PN0Z99QsQ0aA06SWVhrzdgAA</XPD:REF>
+<XPD:REF name="Views[2]">wAtztCseO0m7PZc49MG+agAA</XPD:REF>
+<XPD:REF name="Views[3]">ft42mcFsHECO0yQKn8iDQQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[10]" type="UMLAssociation" guid="u9wX0QGdzEKXDMUSuMeSlAAA">
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">s97DNIncIUyqxXbneTudIQAA</XPD:REF>
+<XPD:REF name="Views[1]">5nJJhIKfP0aphx/wCbPj8QAA</XPD:REF>
+<XPD:REF name="Views[2]">GF15CGpxb0ihKLCpqEgiPwAA</XPD:REF>
+<XPD:REF name="Views[3]">mQ03MxKHVEGf7/sHqs6UNQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="zekdyR8yEUmNFK08gWI5UgAA">
+<XPD:ATTR name="Multiplicity" type="string">0..1</XPD:ATTR>
+<XPD:REF name="Association">u9wX0QGdzEKXDMUSuMeSlAAA</XPD:REF>
+<XPD:REF name="Participant">uTvluPMq6EiVrEzIldF+CwAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">ABsrUukx4UKDMLhPlPcXaAAA</XPD:REF>
+<XPD:REF name="Views[1]">llvYWWfx/E6vLX4zQ9IOHwAA</XPD:REF>
+<XPD:REF name="Views[2]">6oYASua5iUi3jt++CaJaRgAA</XPD:REF>
+<XPD:REF name="Views[3]">fncRPs0eyUay6gLlnfmaoAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="0vFa396IN0SfuCWKBLJF0AAA">
+<XPD:REF name="Association">u9wX0QGdzEKXDMUSuMeSlAAA</XPD:REF>
+<XPD:REF name="Participant">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">TFju0xnXzUeFLEfbHAgvxwAA</XPD:REF>
+<XPD:REF name="Views[1]">6pSDVmO3RUiGwA0KZzySZgAA</XPD:REF>
+<XPD:REF name="Views[2]">ZP18gpDXvEaqIO5x2PK4vwAA</XPD:REF>
+<XPD:REF name="Views[3]">LrU5/QaN5kabGVbUYT2uVwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[11]" type="UMLAssociation" guid="VOv3sCvVzEOalgoa+JC9YgAA">
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="YROrTOuSWkmpMzIJdfaf/QAA">
+<XPD:REF name="Association">VOv3sCvVzEOalgoa+JC9YgAA</XPD:REF>
+<XPD:REF name="Participant">ijjMqBZ6REK0iCxeAVpgAAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="zKLAXgKQ/02weDYbKw8WmwAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">VOv3sCvVzEOalgoa+JC9YgAA</XPD:REF>
+<XPD:REF name="Participant">GioGPK3R6Ue8w6V2t8TzvgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[12]" type="UMLAssociation" guid="lT1ML7PzwUGLyiBN6ZM9ewAA">
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">hEfg3zF9T0KZqM6LoHkeywAA</XPD:REF>
+<XPD:REF name="Views[1]">Xp9wRzdQwUiqwJCNI5b4JQAA</XPD:REF>
+<XPD:REF name="Views[2]">dQQcX7/IbUGZGP/exqC6OQAA</XPD:REF>
+<XPD:REF name="Views[3]">wowPjb5qSEiE1UD8gtsPVAAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="gXiNnV7a90+F3ShZ01TMFAAA">
+<XPD:REF name="Association">lT1ML7PzwUGLyiBN6ZM9ewAA</XPD:REF>
+<XPD:REF name="Participant">GioGPK3R6Ue8w6V2t8TzvgAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">kerBdAuXP0qGhUBsKsaVBgAA</XPD:REF>
+<XPD:REF name="Views[1]">24szT2Qfg0uwuXHurF5FawAA</XPD:REF>
+<XPD:REF name="Views[2]">4pcy4Hj8vUuVJIBH55+G8wAA</XPD:REF>
+<XPD:REF name="Views[3]">n+zAECOm3kuPp0U6fGa9qQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="xnq3//AvmkaNPVRDsIkseAAA">
+<XPD:REF name="Association">lT1ML7PzwUGLyiBN6ZM9ewAA</XPD:REF>
+<XPD:REF name="Participant">ijjMqBZ6REK0iCxeAVpgAAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">fZzGyZZt1US3pySjYdbe3AAA</XPD:REF>
+<XPD:REF name="Views[1]">AmXw2BgBNk+PLXzTBtMTqgAA</XPD:REF>
+<XPD:REF name="Views[2]">UHz2AHAHTk6b0UBy27uYsgAA</XPD:REF>
+<XPD:REF name="Views[3]">oiGUCSbvcE2jf8t3N6P8eAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[13]" type="UMLAssociation" guid="AVjFcKW/SkGrDDjIOVRD+gAA">
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">0Q8MZMRv3keC5G0P3jqvLgAA</XPD:REF>
+<XPD:REF name="Views[1]">d3Kypc5e9USTEK3RieUIQgAA</XPD:REF>
+<XPD:REF name="Views[2]">uD+JnEzcwkSPAPXtxxC+uQAA</XPD:REF>
+<XPD:REF name="Views[3]">rnjCjREV6kK6FI664NzbmQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="s0hHwXTeU02e7YGLMAX0PAAA">
+<XPD:ATTR name="Name" type="string">subTasks</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">AVjFcKW/SkGrDDjIOVRD+gAA</XPD:REF>
+<XPD:REF name="Participant">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">GDNhCHzLh0WvJJ1jxSWCbAAA</XPD:REF>
+<XPD:REF name="Views[1]">X0imqN7kTUWC5VgPlkJ00gAA</XPD:REF>
+<XPD:REF name="Views[2]">qjcLVMn3yEiW/FQqSOppuwAA</XPD:REF>
+<XPD:REF name="Views[3]">poFTZVOeaUWdQnmYEjp2JgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="wi5BJHl4RkiqqqtC44D95QAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">AVjFcKW/SkGrDDjIOVRD+gAA</XPD:REF>
+<XPD:REF name="Participant">HvFFmfu3EU2Q5JpvC4V1dAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">cfgsL9WLv0C08ZQHcVaKFAAA</XPD:REF>
+<XPD:REF name="Views[1]">5qWWjDhi90uAUXDD5YSGkAAA</XPD:REF>
+<XPD:REF name="Views[2]">L1KmK8JoRUSHUwvrb5aMcQAA</XPD:REF>
+<XPD:REF name="Views[3]">ghdCa3kzQUCEmb8k45FU/AAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[14]" type="UMLAssociation" guid="3DEhC+Nv0kK7uqtxV6JcZwAA">
+<XPD:REF name="Namespace">28q8akawHUut/vt9cqGzHQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">9vrgDuSQRkuGM2KpgQ681wAA</XPD:REF>
+<XPD:REF name="Views[1]">HPgV9SBY2kahngUOTUUnqgAA</XPD:REF>
+<XPD:REF name="Views[2]">4xtJRUX4cUW2j7LzmJ71HgAA</XPD:REF>
+<XPD:REF name="Views[3]">cOI/0aN4FEmtKry1i0zsGgAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="zWDSiZ7kIEKvhXHKxmicAwAA">
+<XPD:ATTR name="Name" type="string">replies</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">3DEhC+Nv0kK7uqtxV6JcZwAA</XPD:REF>
+<XPD:REF name="Participant">NKuLMRCxwkeVGSHi+kJ4PAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">MRGwgnyuZkenbLrSBgMGowAA</XPD:REF>
+<XPD:REF name="Views[1]">NDIxC9Q5bUq5Bq5jTTb6DAAA</XPD:REF>
+<XPD:REF name="Views[2]">E7w5n6j9t02OUqefF5g+GQAA</XPD:REF>
+<XPD:REF name="Views[3]">Hccf2ZoTsUGJM1WkqVxZHAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="9l7hGk4Y/kqJrk9GldzJ6QAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">3DEhC+Nv0kK7uqtxV6JcZwAA</XPD:REF>
+<XPD:REF name="Participant">NKuLMRCxwkeVGSHi+kJ4PAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">mJSLnpapqEe+JCw/l9ZrWgAA</XPD:REF>
+<XPD:REF name="Views[1]">mbaATlJxY064398AzNkbrAAA</XPD:REF>
+<XPD:REF name="Views[2]">vQr9dU7oMkScUooE1diouQAA</XPD:REF>
+<XPD:REF name="Views[3]">v+lh/JYNEk2ckddRKkYMqgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:BODY>
+</XPD:PROJECT>
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Assigner.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Assigner.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Assigner.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,33 @@
+/*
+ * 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.task;
+
+import java.io.Serializable;
+
+/** interface to delegate {@link Task} or {@link Swimlane} assignment.
+ * @author Tom Baeyens
+ */
+public interface Assigner extends Serializable {
+
+ /** sets the actorId and candidates for the given task. */
+ void assign(Task task) throws Exception;
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Assigner.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Role.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Role.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Role.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,44 @@
+/*
+ * 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.task;
+
+/** a role that a person fullfills for a task.
+ *
+ * @author Tom Baeyens
+ */
+public interface Role {
+
+ long getDbid();
+
+ String getIdentityId();
+ void setIdentityId(String identityId);
+
+ RoleType getRoleType();
+ void setRoleType(RoleType roleType);
+
+ String getDescription();
+ void setDescription(String description);
+
+ Task getTask();
+
+ Swimlane getSwimlane();
+}
\ No newline at end of file
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Role.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/RoleType.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/RoleType.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/RoleType.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,30 @@
+package org.jbpm.task;
+
+/** roleType of a person that is related to a task determines the
+ * privileges that are granted on the task. */
+public enum RoleType {
+
+ /** can do anything with the task */
+ OWNER,
+
+ /** alternative owner, but as long as this person is not the owner.
+ * This person is allowed to make comments, but nothing else. */
+ CANDIDATE,
+
+ /** person that will be using the result of this task. This person is
+ * allowed to make comments, but nothing else. */
+ CLIENT,
+
+ /** person that is allowed to watch-but-not-touch this task */
+ VIEWER,
+
+ /** a person that was assigned to a task, but got replaced because of
+ * absence or another reason. This way, a trace can be left in case
+ * This person returns and wants to take back his tasks that got
+ * reassigned. */
+ REPLACED_ASSIGNEE;
+
+ public String toString() {
+ return super.toString().toLowerCase().replace('_', '-');
+ }
+}
\ No newline at end of file
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/RoleType.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Swimlane.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Swimlane.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Swimlane.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,46 @@
+/*
+ * 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.task;
+
+import java.io.Serializable;
+import java.util.Collection;
+
+/** a runtime process role that can store an assignment so that
+ * multiple related tasks are assigned to the same actor.
+ *
+ * @author Tom Baeyens
+ */
+public interface Swimlane extends Serializable {
+
+ long getDbid();
+
+ String getName();
+
+ String getAssignee();
+ void setAssignee(String assignee);
+
+ Collection<Role> getCandidates();
+ Role createCandidate(String identityId);
+ void removeCandidate(Role candidate);
+
+ SwimlaneDefinition getSwimlaneDefinition();
+}
\ No newline at end of file
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Swimlane.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/SwimlaneDefinition.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/SwimlaneDefinition.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/SwimlaneDefinition.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,39 @@
+/*
+ * 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.task;
+
+import java.io.Serializable;
+
+/** design-time declaration of a swimlane.
+ *
+ * @author Tom Baeyens
+ */
+public interface SwimlaneDefinition extends Serializable {
+
+ long getDbid();
+
+ String getName();
+
+ String getActorIdExpression();
+ String getCandidatesExpression();
+ String getAssignmentExpression();
+}
\ No newline at end of file
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/SwimlaneDefinition.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Task.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Task.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Task.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,78 @@
+/*
+ * 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.task;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jbpm.pvm.Execution;
+import org.jbpm.pvm.model.Comment;
+
+/** runtime task.
+ * @author Tom Baeyens
+ */
+public interface Task extends Serializable {
+
+ long getDbid();
+
+ String getName();
+ void setName(String name);
+
+ String getDescription();
+ void setDescription(String description);
+
+ void submit();
+ void submit(Map<String, Object> variables);
+
+ boolean isBlocking();
+ void setBlocking(boolean isBlocking);
+
+ boolean isSignalling();
+ void setSignalling(boolean isSignalling);
+
+ int getPriority();
+ void setPriority(int priority);
+
+ Date getCreate();
+ void setCreate(Date create);
+
+ Date getDueDate();
+ void setDueDate(Date dueDate);
+
+ List<Comment> getComments();
+ Comment createComment(String message);
+ void removeComment(Comment comment);
+
+ Set<Task> getSubTasks();
+ Task createSubTask(String name);
+ Task createSubTask(TaskDefinition subtaskDefinition);
+ void removeSubTask(Task subtask);
+
+ Execution getExecution();
+
+ Swimlane getSwimlane();
+
+ TaskDefinition getTaskDefinition();
+}
\ No newline at end of file
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/Task.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskDefinition.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskDefinition.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskDefinition.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,66 @@
+/*
+ * 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.task;
+
+import java.util.List;
+
+import org.jbpm.pvm.internal.wire.Descriptor;
+import org.jbpm.task.impl.SwimlaneDefinitionImpl;
+import org.jbpm.task.impl.TaskDefinitionImpl;
+
+/** design-time declaration of a task.
+ *
+ * @author Tom Baeyens
+ */
+public interface TaskDefinition { //FIXME: extends ProcessElement {
+
+ String getName();
+
+ String getForm();
+
+ String getAssigneeExpression();
+
+ Descriptor getAssignerDescriptor();
+
+ String getCandidatesExpression();
+
+ String getDueDateDuration();
+
+ /** indicates whether the process must be blocked as long as this task is
+ * not completed. blocking should be turned off by default (isBlocking=false).
+ * but if a user (through the process language) sets isBlocking to true, then
+ * the process cannot be signalled until all blocking tasks are completed first. */
+ boolean isBlocking();
+
+ /** indicates if completion of this task causes a signal on the related execution.
+ * This is to support n-out-of-m. Whenever an execution leaves a task node, all the
+ * tasks that are not completed, related to that execution should loose their
+ * signalling power. */
+ boolean isSignalling();
+
+ int getPriority();
+
+ List<TaskDefinitionImpl> getSubTaskDefinitions();
+
+ SwimlaneDefinitionImpl getSwimlaneDefinition();
+
+}
\ No newline at end of file
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskDefinition.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskException.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskException.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskException.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,40 @@
+/*
+ * 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.task;
+
+public class TaskException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ public TaskException() {
+ super();
+ }
+ public TaskException(String msg, Throwable cause) {
+ super(msg, cause);
+ }
+ public TaskException(String msg) {
+ super(msg);
+ }
+ public TaskException(Throwable cause) {
+ super(cause);
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskException.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskService.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskService.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskService.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,44 @@
+/*
+ * 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.task;
+
+import java.util.List;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public interface TaskService {
+
+ Task createTask();
+ Task createTask(long taskDefinitionDbid);
+ Task createTask(long taskDefinitionDbid, long executionDbid);
+
+ Task getTask(long taskDbid);
+ void updateTask(Task task);
+ void deleteTask(long taskDbid);
+
+ List<Task> getPersonalTaskListPage(int firstResult, int maxResults);
+ List<Task> getPersonalTaskListPage(String userId, int firstResult, int maxResults);
+ List<Task> getGroupTaskListPage(List<String> identityIds, int firstResult, int maxResults);
+
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/TaskService.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/CreateTask.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/CreateTask.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/CreateTask.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,80 @@
+/*
+ * 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.task.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.pvm.session.DbSession;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.task.Task;
+import org.jbpm.task.impl.TaskDefinitionImpl;
+import org.jbpm.task.impl.TaskImpl;
+
+/**
+ * @author Tom Baeyens
+ */
+public class CreateTask implements Command
+{
+
+ private static final long serialVersionUID = 1L;
+
+ protected Long taskDefinitionDbid;
+ protected Long executionDbid;
+
+ public CreateTask() {
+ }
+
+ public CreateTask(long taskDefinitionDbid) {
+ this.taskDefinitionDbid = taskDefinitionDbid;
+ }
+
+ public CreateTask(long taskDefinitionDbid, long executionDbid) {
+ this.taskDefinitionDbid = taskDefinitionDbid;
+ this.executionDbid = executionDbid;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ TaskDefinitionImpl taskDefinition = null;
+ ExecutionImpl execution = null;
+
+ if (taskDefinitionDbid!=null) {
+ DbSession dbSession = environment.get(DbSession.class);
+ taskDefinition = dbSession.get(TaskDefinitionImpl.class, taskDefinitionDbid);
+ }
+
+ if (executionDbid!=null) {
+ DbSession dbSession = environment.get(DbSession.class);
+ execution = dbSession.get(ExecutionImpl.class, executionDbid);
+ }
+
+ Task task = null;
+ if (taskDefinition==null) {
+ task = TaskImpl.create();
+ } else if (execution==null) {
+ task = TaskImpl.create(taskDefinition);
+ } else {
+ task = TaskImpl.create(taskDefinition, execution);
+ }
+
+ return task;
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/CreateTask.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/DeleteTask.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/DeleteTask.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/DeleteTask.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,50 @@
+/*
+ * 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.task.cmd;
+
+import org.jbpm.task.impl.TaskImpl;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.pvm.session.DbSession;
+
+/**
+ * @author Tom Baeyens
+ */
+public class DeleteTask implements Command
+{
+
+ private static final long serialVersionUID = 1L;
+
+ protected long taskDbid;
+
+ public DeleteTask(long taskDbid) {
+ this.taskDbid = taskDbid;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ DbSession dbSession = environment.get(DbSession.class);
+ TaskImpl task = dbSession.get(TaskImpl.class, taskDbid);
+ dbSession.delete(task);
+ return null;
+ }
+
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/DeleteTask.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/GetTask.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/GetTask.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/GetTask.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,47 @@
+/*
+ * 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.task.cmd;
+
+import org.jbpm.task.impl.TaskImpl;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.pvm.session.DbSession;
+
+/**
+ * @author Tom Baeyens
+ */
+public class GetTask implements Command
+{
+
+ private static final long serialVersionUID = 1L;
+
+ protected long taskDbid;
+
+ public GetTask(long taskDbid) {
+ this.taskDbid = taskDbid;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ DbSession dbSession = environment.get(DbSession.class);
+ return dbSession.get(TaskImpl.class, taskDbid);
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/GetTask.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/UpdateTask.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/UpdateTask.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/UpdateTask.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,50 @@
+/*
+ * 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.task.cmd;
+
+import org.jbpm.task.Task;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.session.DbSession;
+import org.jbpm.pvm.env.Environment;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class UpdateTask implements Command
+{
+
+ private static final long serialVersionUID = 1L;
+
+ protected Task task;
+
+ public UpdateTask(Task task) {
+ this.task = task;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ DbSession dbSession = environment.get(DbSession.class);
+ dbSession.save(task);
+ return null;
+ }
+
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/cmd/UpdateTask.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/db/TaskDbSession.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/db/TaskDbSession.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/db/TaskDbSession.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,35 @@
+/*
+ * 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.task.db;
+
+import org.jbpm.pvm.session.DbSession;
+import org.jbpm.pvm.internal.hibernate.HibernateDbSession;
+
+/** persistence interface for tasks.
+ *
+ * @author Tom Baeyens
+ */
+public class TaskDbSession extends HibernateDbSession implements DbSession
+{
+
+ // TODO
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/db/TaskDbSession.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycle.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycle.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycle.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,94 @@
+/*
+ * 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.task.impl;
+
+import org.jbpm.pvm.Execution;
+import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.pvm.internal.model.NodeImpl;
+import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.jbpm.pvm.model.Node;
+import org.jbpm.task.TaskException;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Tom Baeyens
+ */
+public class LifeCycle {
+
+ private static LifeCycleParser lifeCycleParser = new LifeCycleParser();
+ private static Map<String, ProcessDefinitionImpl> lifeCycleProcesses = new HashMap<String, ProcessDefinitionImpl>();
+
+ public static String initialise(TaskImpl task) {
+
+ throw new RuntimeException("FIXME: LifeCycle#initialise()");
+
+ /*ProcessDefinitionImpl lifeCycle = getLifeCycle(task);
+ Map<String, Object> lifeCycleVariables = new HashMap<String, Object>();
+ lifeCycleVariables.put("task", task);
+ Execution lifeCycleExecution = lifeCycle.startExecution(lifeCycleVariables);
+ return lifeCycleExecution.getNode().getName();*/
+ }
+
+ public static ProcessDefinitionImpl getLifeCycle(TaskImpl task) {
+
+ throw new RuntimeException("FIXME: LifeCycle#getLifeCycle()");
+
+ /* if (task==null) {
+ throw new TaskException("task is null");
+ }
+ String resource = task.getLifeCycleResource();
+ if (resource==null) {
+ throw new TaskException("task "+task.getClass().getName()+" did'nt return a lifecycle");
+ }
+ ProcessDefinitionImpl lifeCycleProcess = null;
+ synchronized (lifeCycleProcesses) {
+ lifeCycleProcess = lifeCycleProcesses.get(resource);
+ if (lifeCycleProcess==null) {
+ Parse parse = new Parse();
+ lifeCycleProcess = (ProcessDefinitionImpl) lifeCycleParser.parseResource(resource, null, parse);
+ if (parse.hasProblems()) {
+ throw new TaskException("process lifecycle "+resource+" parsing problems: "+parse.getProblems().toString() );
+ }
+ lifeCycleProcesses.put(resource, lifeCycleProcess);
+ }
+ }
+ return lifeCycleProcess;*/
+ }
+
+ protected void fireLifeCycleEvent(String eventName, TaskImpl task) {
+ throw new RuntimeException("FIXME: LifeCycle#fireLifeCycleEvent()");
+ /*
+ ExecutionImpl lifeCycleExecution = new ExecutionImpl();
+ ProcessDefinitionImpl lifeCycleProcess = getLifeCycle(task);
+ lifeCycleExecution.setProcess(lifeCycleProcess);
+ String state = task.getState();
+ Node node = lifeCycleProcess.getNode(state);
+ lifeCycleExecution.setNode((NodeImpl) node);
+ lifeCycleExecution.signal(eventName);
+ task.state = lifeCycleExecution.getNode().getName();
+ */
+ }
+
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycle.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleParser.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleParser.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleParser.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,110 @@
+/*
+ * 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.task.impl;
+
+import java.util.List;
+
+import org.jbpm.pvm.internal.xml.Parser;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
+import org.jbpm.pvm.internal.model.NodeImpl;
+import org.jbpm.pvm.internal.util.XmlUtil;
+import org.w3c.dom.Element;
+
+/**
+ * @author Tom Baeyens
+ */
+public class LifeCycleParser extends Parser
+{
+
+ public Object parseDocumentElement(Element element, Parse parse) {
+ ProcessDefinitionImpl lifeCycleProcess = new ProcessDefinitionImpl();
+
+ List<Element> stateElements = XmlUtil.elements(element, "state");
+ if (stateElements!=null) {
+ for (Element stateElement: stateElements) {
+ parseState(stateElement, lifeCycleProcess, parse);
+ }
+ for (Element stateElement: stateElements) {
+ parseTransitions(stateElement, lifeCycleProcess, parse);
+ }
+ }
+
+ String initialStateName = null;
+ if (element.hasAttribute("initial")) {
+ initialStateName = element.getAttribute("initial");
+ NodeImpl initial = (NodeImpl) lifeCycleProcess.getNode(initialStateName);
+ if (initial!=null) {
+ lifeCycleProcess.setInitial(initial);
+ } else {
+ parse.addProblem("initial "+initialStateName+" doesn't exist");
+ }
+ }
+
+ return lifeCycleProcess;
+ }
+
+ public void parseTransitions(Element element, ProcessDefinitionImpl lifeCycleProcess, Parse parse) {
+ if (! element.hasAttribute("name")) {
+ parse.addProblem("state doesn't have a name: "+XmlUtil.toString(element));
+ return;
+ }
+ String stateName = element.getAttribute("name");
+ NodeImpl state = (NodeImpl) lifeCycleProcess.getNode(stateName);
+
+ List<Element> transitionElements = XmlUtil.elements(element, "transition");
+ if (transitionElements!=null) {
+ for (Element transitionElement: transitionElements) {
+ parseTransition(transitionElement, state, parse);
+ }
+ }
+ }
+
+ public void parseTransition(Element element, NodeImpl state, Parse parse) {
+ if (! element.hasAttribute("name")) {
+ parse.addProblem("transition doesn't have a name: "+XmlUtil.toString(element));
+ return;
+ }
+ String transitionName = element.getAttribute("name");
+ if (! element.hasAttribute("to")) {
+ parse.addProblem("transition "+transitionName+" doesn't have a to attribute indicating the destination state: "+XmlUtil.toString(element));
+ return;
+ }
+ String destinationName = element.getAttribute("to");
+ NodeImpl destination = (NodeImpl) state.getProcessDefinition().getNode(destinationName);
+ if (destination!=null) {
+ state.createOutgoingTransition(destination, transitionName);
+ } else {
+ parse.addProblem("destination "+destinationName+" of "+transitionName+" is unknown");
+ }
+ }
+
+ public void parseState(Element element, ProcessDefinitionImpl lifeCycleProcess, Parse parse) {
+ if (! element.hasAttribute("name")) {
+ parse.addProblem("state doesn't have an id: "+XmlUtil.toString(element));
+ return;
+ }
+ String stateName = element.getAttribute("name");
+ NodeImpl state = lifeCycleProcess.createNode(stateName);
+ state.setBehaviour(new LifeCycleState());
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleParser.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleState.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleState.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleState.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,49 @@
+/*
+ * 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.task.impl;
+
+import java.util.Map;
+
+import org.jbpm.pvm.activity.ExternalActivity;
+import org.jbpm.pvm.activity.ActivityExecution;
+
+/**
+ * @author Tom Baeyens
+ */
+public class LifeCycleState implements ExternalActivity
+{
+
+ private static final long serialVersionUID = 1L;
+
+
+ public void execute(ActivityExecution execution) throws Exception {
+ execution.waitForSignal();
+ }
+
+ public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
+ execution.take(signalName);
+ }
+
+ /*public Set<SignalDefinition> getSignals(Execution execution) throws Exception {
+ return null;
+ } */
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/LifeCycleState.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/RoleImpl.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/RoleImpl.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/RoleImpl.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,82 @@
+/*
+ * 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.task.impl;
+
+import java.io.Serializable;
+
+import org.jbpm.task.Role;
+import org.jbpm.task.RoleType;
+
+
+/** the relation between a task and a person.
+ * @author Tom Baeyens
+ */
+public class RoleImpl implements Serializable, Role {
+
+ private static final long serialVersionUID = 1L;
+
+ protected long dbid;
+ protected int dbversion;
+ protected String identityId;
+ protected RoleType roleType;
+ protected String description;
+ protected TaskImpl task;
+ protected SwimlaneImpl swimlane;
+
+ public String toString() {
+ return roleType.toString()+"("+identityId+")";
+ }
+
+ public TaskImpl getTask() {
+ return task;
+ }
+ public void setTask(TaskImpl task) {
+ this.task = task;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public long getDbid() {
+ return dbid;
+ }
+ public SwimlaneImpl getSwimlane() {
+ return swimlane;
+ }
+ public void setSwimlane(SwimlaneImpl swimlane) {
+ this.swimlane = swimlane;
+ }
+ public RoleType getRoleType() {
+ return roleType;
+ }
+ public void setRoleType(RoleType roleType) {
+ this.roleType = roleType;
+ }
+ public String getIdentityId() {
+ return identityId;
+ }
+ public void setIdentityId(String identityId) {
+ this.identityId = identityId;
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/RoleImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneDefinitionImpl.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneDefinitionImpl.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneDefinitionImpl.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,99 @@
+/*
+ * 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.task.impl;
+
+import java.io.Serializable;
+
+import org.jbpm.task.SwimlaneDefinition;
+import org.jbpm.pvm.internal.util.EqualsUtil;
+
+/**
+ * is a process role (aka participant).
+ */
+public class SwimlaneDefinitionImpl implements Serializable, SwimlaneDefinition {
+
+ private static final long serialVersionUID = 1L;
+
+ protected long dbid;
+ protected int dbversion;
+ protected String name = null;
+
+ /**
+ * expression that resolves to 1 single actorId.
+ */
+ protected String actorIdExpression = null;
+
+ /**
+ * expression that resolves to a comma separated list of actorIds.
+ */
+ protected String candidatesExpression = null;
+
+ /**
+ * expression that resolves to an AssignmentHandler implementation.
+ */
+ protected String assignmentExpression = null;
+
+ // equals ///////////////////////////////////////////////////////////////////
+ // hack to support comparing hibernate proxies against the real objects
+ // since this always falls back to ==, we don't need to overwrite the hashcode
+ public boolean equals(Object o) {
+ return EqualsUtil.equals(this, o);
+ }
+
+ public void setActorIdExpression(String actorIdExpression) {
+ // Note: combination of actorIdExpression and candidatesExpression is allowed
+ this.actorIdExpression = actorIdExpression;
+ this.assignmentExpression = null;
+ }
+ public void setCandidatesExpression(String pooledActorsExpression) {
+ // Note: combination of actorIdExpression and pooledActorsExpression is allowed
+ this.candidatesExpression = pooledActorsExpression;
+ this.assignmentExpression = null;
+ }
+ public void setAssignmentExpression(String assignmentExpression) {
+ // assignment expressions and assignmentDelegation are mutually exclusive
+ this.actorIdExpression = null;
+ this.candidatesExpression = null;
+ this.assignmentExpression = assignmentExpression;
+ }
+
+ // getters and setters //////////////////////////////////////////////////////
+
+ public long getDbid() {
+ return dbid;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getName() {
+ return name;
+ }
+ public String getActorIdExpression() {
+ return actorIdExpression;
+ }
+ public String getCandidatesExpression() {
+ return candidatesExpression;
+ }
+ public String getAssignmentExpression() {
+ return assignmentExpression;
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneDefinitionImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneImpl.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneImpl.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneImpl.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,120 @@
+/*
+ * 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.task.impl;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jbpm.task.Role;
+import org.jbpm.task.RoleType;
+import org.jbpm.task.Swimlane;
+import org.jbpm.task.SwimlaneDefinition;
+import org.jbpm.task.TaskException;
+import org.jbpm.pvm.internal.util.EqualsUtil;
+
+/**
+ * runtime process role for a specific process instance.
+ */
+public class SwimlaneImpl implements Serializable, Swimlane {
+
+ private static final long serialVersionUID = 1L;
+
+ protected long dbid;
+ protected int dbversion;
+ protected String name = null;
+ protected String assignee = null;
+ protected Set<RoleImpl> candidates = null;
+ protected SwimlaneDefinition swimlaneDefinition = null;
+
+ // assignment methods ///////////////////////////////////////////////////////
+
+ public String getAssignee() {
+ return assignee;
+ }
+
+ public void setAssignee(String assignee) {
+ this.assignee = assignee;
+ }
+
+ // candidates ///////////////////////////////////////////////////////////////
+
+ public Collection<Role> getCandidates() {
+ if (candidates==null) {
+ return Collections.EMPTY_LIST;
+ }
+ return (Collection)candidates;
+ }
+
+ public Role createCandidate(String identityId) {
+ if (identityId==null) {
+ throw new TaskException("identityId is null");
+ }
+ RoleImpl role = new RoleImpl();
+ role.setIdentityId(identityId);
+ role.setRoleType(RoleType.CANDIDATE);
+ role.setSwimlane(this);
+ if (candidates==null) {
+ candidates = new HashSet<RoleImpl>();
+ }
+ candidates.add(role);
+ return role;
+ }
+
+ public void removeCandidate(Role candidate) {
+ if (candidate==null) {
+ throw new TaskException("candidate is null");
+ }
+ if ( (candidates!=null)
+ && (candidates.remove(candidate))
+ ) {
+ ((RoleImpl)candidate).setTask(null);
+ }
+ }
+
+ // equals ///////////////////////////////////////////////////////////////////
+ // hack to support comparing hibernate proxies against the real objects
+ // since this always falls back to ==, we don't need to overwrite the hashcode
+ public boolean equals(Object o) {
+ return EqualsUtil.equals(this, o);
+ }
+
+ // getters and setters //////////////////////////////////////////////////////
+
+ public long getDbid() {
+ return dbid;
+ }
+ public String getName() {
+ return name;
+ }
+ public SwimlaneDefinition getSwimlaneDefinition() {
+ return swimlaneDefinition;
+ }
+ public void setSwimlaneDefinition(SwimlaneDefinition swimlaneDefinition) {
+ this.swimlaneDefinition = swimlaneDefinition;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/SwimlaneImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskDefinitionImpl.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskDefinitionImpl.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskDefinitionImpl.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,129 @@
+/*
+ * 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.task.impl;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.jbpm.pvm.internal.model.ProcessElementImpl;
+import org.jbpm.pvm.internal.wire.Descriptor;
+import org.jbpm.pvm.internal.util.Priority;
+import org.jbpm.task.TaskDefinition;
+
+/**
+ * defines a task and how the actor(s) must be calculated at runtime.
+ */
+public class TaskDefinitionImpl extends ProcessElementImpl implements Serializable, TaskDefinition {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String name;
+ protected String description;
+
+ /** @see #isBlocking() */
+ protected boolean isBlocking;
+
+ /** @see #isSignalling() */
+ protected boolean isSignalling = true;
+
+ protected String dueDateDuration;
+ protected List<TaskDefinitionImpl> subTaskDefinitions;
+ protected int priority = Priority.NORMAL;
+ protected SwimlaneDefinitionImpl swimlaneDefinition;
+ protected String assigneeExpression;
+ protected String candidatesExpression;
+ protected Descriptor assignerDescriptor;
+
+
+ public String getForm() {
+ return (String) (properties!=null ? properties.get("form") : null);
+ }
+
+ // getters and setters //////////////////////////////////////////////////////
+
+ public String getAssigneeExpression() {
+ return assigneeExpression;
+ }
+ public void setAssigneeExpression(String assigneeExpression) {
+ this.assigneeExpression = assigneeExpression;
+ }
+ public Descriptor getAssignerDescriptor() {
+ return assignerDescriptor;
+ }
+ public void setAssignerDescriptor(Descriptor assignerDescriptor) {
+ this.assignerDescriptor = assignerDescriptor;
+ }
+ public String getCandidatesExpression() {
+ return candidatesExpression;
+ }
+ public void setCandidatesExpression(String candidatesExpression) {
+ this.candidatesExpression = candidatesExpression;
+ }
+ public boolean isBlocking() {
+ return isBlocking;
+ }
+ public void setBlocking(boolean isBlocking) {
+ this.isBlocking = isBlocking;
+ }
+ public boolean isSignalling() {
+ return isSignalling;
+ }
+ public void setSignalling(boolean isSignalling) {
+ this.isSignalling = isSignalling;
+ }
+ public int getPriority() {
+ return priority;
+ }
+ public void setPriority(int priority) {
+ this.priority = priority;
+ }
+ public List<TaskDefinitionImpl> getSubTaskDefinitions() {
+ return subTaskDefinitions;
+ }
+ public void setSubTaskDefinitions(List<TaskDefinitionImpl> subTaskDefinitions) {
+ this.subTaskDefinitions = subTaskDefinitions;
+ }
+ public SwimlaneDefinitionImpl getSwimlaneDefinition() {
+ return swimlaneDefinition;
+ }
+ public void setSwimlaneDefinition(SwimlaneDefinitionImpl swimlaneDefinition) {
+ this.swimlaneDefinition = swimlaneDefinition;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public String getDueDateDuration() {
+ return dueDateDuration;
+ }
+ public void setDueDateDuration(String dueDateDuration) {
+ this.dueDateDuration = dueDateDuration;
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskDefinitionImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskExecution.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskExecution.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskExecution.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,36 @@
+/*
+ * 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.task.impl;
+
+import java.util.Map;
+
+import org.jbpm.task.Swimlane;
+import org.jbpm.task.Task;
+
+/**
+ * @author Tom Baeyens
+ */
+public interface TaskExecution {
+
+ Map<String, ? extends Task> getTasks();
+ Map<String, ? extends Swimlane> getSwimlanes();
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskExecution.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskImpl.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskImpl.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskImpl.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,393 @@
+/*
+ * 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.task.impl;
+
+import org.jbpm.pvm.Execution;
+import org.jbpm.pvm.model.Comment;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.pvm.internal.model.CommentImpl;
+import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.pvm.internal.util.Clock;
+import org.jbpm.pvm.internal.util.Priority;
+import org.jbpm.pvm.internal.util.ReflectUtil;
+import org.jbpm.pvm.internal.util.EqualsUtil;
+import org.jbpm.pvm.internal.cal.Duration;
+import org.jbpm.task.*;
+
+import java.io.Serializable;
+import java.util.*;
+
+/**
+ * is one task instance that can be assigned to an actor (read: put in
+ * someones task list) and that can trigger the continuation of execution
+ * of the token upon completion.
+ */
+public class TaskImpl implements Serializable, Task {
+
+ private static final long serialVersionUID = 1L;
+ // private static final Logger log = Logger.getLogger(TaskImpl.class.getName());
+
+ // could be made configurable:
+ public static final String CONTEXTKEY_TASK_CLASS_NAME = "taskClassName";
+ public static final String[] SEARCHORDER_TASK_CLASS_NAME = new String[]{
+ "FIXME: DefaultEnvironment.CONTEXTNAME_APPLICATION" //DefaultEnvironment.CONTEXTNAME_APPLICATION
+ };
+
+ protected long dbid;
+ protected int dbversion;
+ protected String name;
+ protected String description;
+
+ protected String assignee;
+ protected Set<RoleImpl> roles;
+
+ protected Date create;
+ protected Date dueDate;
+ protected Integer progress;
+
+ //FIXME: protected VariableMap variableMap;
+ protected List<CommentImpl> comments;
+
+ protected int priority = Priority.NORMAL;
+
+ protected String state;
+
+ protected Execution execution;
+ protected boolean isSignalling = true;
+ protected boolean isBlocking;
+
+ protected TaskDefinitionImpl taskDefinition;
+ protected SwimlaneImpl swimlane;
+
+ protected TaskImpl superTask;
+ protected Set<TaskImpl> subTasks;
+
+ protected TaskImpl() {
+ }
+
+ // creating a task
+
+ public static TaskImpl create() {
+ return create(null, null);
+ }
+
+ public static TaskImpl create(TaskDefinitionImpl taskDefinition) {
+ return create(taskDefinition, null);
+ }
+
+ public static TaskImpl create(TaskDefinitionImpl taskDefinition, ExecutionImpl execution) {
+ TaskImpl task = null;
+ // if a task class name is configured
+ Environment environment = Environment.getCurrent();
+ String taskClassName = (environment!=null ? (String) environment.get(TaskImpl.CONTEXTKEY_TASK_CLASS_NAME, TaskImpl.SEARCHORDER_TASK_CLASS_NAME) : null);
+ if (taskClassName!=null) {
+ // dynamically instantiate it
+ ClassLoader classLoader = environment.getClassLoader();
+ Class<?> taskClass = ReflectUtil.loadClass(classLoader, taskClassName);
+ task = (TaskImpl) ReflectUtil.newInstance(taskClass);
+
+ // otherwise just use the default task implementation type
+ } else {
+ task = new TaskImpl();
+ }
+
+ task.create = Clock.getCurrentTime();
+
+ task.setTaskDefinition(taskDefinition);
+ task.setExecution(execution);
+
+ // initialise the task state
+ task.state = LifeCycle.initialise(task);
+
+ return task;
+ }
+
+ public void setTaskDefinition(TaskDefinitionImpl taskDefinition) {
+ this.taskDefinition = taskDefinition;
+ if (taskDefinition!=null) {
+ this.name = taskDefinition.getName();
+ this.description = taskDefinition.getDescription();
+ this.isBlocking = taskDefinition.isBlocking();
+ this.isSignalling = taskDefinition.isSignalling();
+ this.priority = taskDefinition.getPriority();
+
+ String durationText = taskDefinition.getDueDateDuration();
+ if (durationText!=null) {
+ this.dueDate = calculateDueDate(new Duration(durationText));
+ }
+ }
+ }
+
+ protected static Date calculateDueDate(Duration dueDate) {
+ // TODO
+ return null;
+ }
+
+ // assigning a task /////////////////////////////////////////////////////////
+
+ public String getAssignee() {
+ return assignee;
+ }
+
+ public void setAssignee(String assignee) {
+ this.assignee = assignee;
+ // TODO fire the assignment event
+ }
+
+ // roles ////////////////////////////////////////////////////////////////////
+
+ public Set<RoleImpl> getRoles() {
+ if (roles==null) {
+ return Collections.EMPTY_SET;
+ }
+ return roles;
+ }
+
+ public Set<RoleImpl> getAllRoles() {
+ Set<RoleImpl> allRoles = null;
+ if (roles!=null) {
+ allRoles = new HashSet<RoleImpl>(roles);
+ } else {
+ allRoles = new HashSet<RoleImpl>();
+ }
+ if (swimlane!=null) {
+ allRoles.addAll((Set)swimlane.getCandidates());
+ }
+ return allRoles;
+ }
+
+ public Role addRole(String identityId, RoleType roleType) {
+ if (identityId==null) {
+ throw new TaskException("userId is null");
+ }
+ if (roleType==null) {
+ throw new TaskException("roleType is null");
+ }
+ RoleImpl role = new RoleImpl();
+ role.setIdentityId(identityId);
+ role.setTask(this);
+ role.setRoleType(roleType);
+ if (roles==null) {
+ roles = new HashSet<RoleImpl>();
+ }
+ roles.add(role);
+ return role;
+ }
+
+ public void removeRole(Role role) {
+ if (role==null) {
+ throw new TaskException("role is null");
+ }
+ if ( (roles!=null)
+ && (roles.remove(role))
+ ) {
+ ((RoleImpl)role).setTask(null);
+ }
+ }
+
+ // completion ///////////////////////////////////////////////////////////////
+
+ public void submit() {
+ submit(null);
+ }
+
+ public void submit(Map<String, Object> variables) {
+ }
+
+ // comments /////////////////////////////////////////////////////////////////
+
+ public List<Comment> getComments() {
+ if (comments==null) {
+ return Collections.EMPTY_LIST;
+ }
+ return (List) comments;
+ }
+
+ public Comment createComment(String commentText) {
+ if (comments==null) {
+ comments = new ArrayList<CommentImpl>();
+ }
+ CommentImpl comment = new CommentImpl(commentText);
+ comments.add(comment);
+ return comment;
+ }
+
+ public void removeComment(Comment comment) {
+ if (comment==null) {
+ throw new TaskException("comment is null");
+ }
+ if (comments!=null) {
+ comments.remove(comment);
+ }
+ }
+
+ // subtasks /////////////////////////////////////////////////////////////////
+
+ public Set<Task> getSubTasks() {
+ if (subTasks==null) {
+ return Collections.EMPTY_SET;
+ }
+ return (Set) subTasks;
+ }
+
+ public Task createSubTask(String name) {
+ if (subTasks==null) {
+ subTasks = new HashSet<TaskImpl>();
+ }
+ TaskImpl subtask = new TaskImpl();
+ subtask.setName(name);
+ addSubTask(subtask);
+ return subtask;
+ }
+
+ public Task createSubTask(TaskDefinition subtaskDefinition) {
+ if (subtaskDefinition==null) {
+ throw new TaskException("subtaskDefinition is null");
+ }
+ if (subTasks==null) {
+ subTasks = new HashSet<TaskImpl>();
+ }
+ TaskImpl subtask = create(taskDefinition);
+ addSubTask(subtask);
+ return subtask;
+ }
+
+ public Task addSubTask(TaskImpl subtask) {
+ if (subTasks==null) {
+ subTasks = new HashSet<TaskImpl>();
+ }
+ subtask.setSuperTask(this);
+ subTasks.add(subtask);
+ return subtask;
+ }
+
+ public void removeSubTask(Task subtask) {
+ if (subtask==null) {
+ throw new TaskException("subtask is null");
+ }
+ if ( (subTasks!=null)
+ && (subTasks.remove(subtask))
+ ) {
+ ((TaskImpl)subtask).setSuperTask(null);
+ }
+ }
+
+ // equals ///////////////////////////////////////////////////////////////////
+ // hack to support comparing hibernate proxies against the real objects
+ // since this always falls back to ==, we don't need to overwrite the hashcode
+ public boolean equals(Object o) {
+ return EqualsUtil.equals(this, o);
+ }
+
+ public String getLifeCycleResource() {
+ // the default lifecycle can be overridden in subclasses
+ return "org/jbpm/task/impl/default.lifecycle.xml";
+ }
+
+ // modified getters and setters /////////////////////////////////////////////
+ public void setProgress(Integer progress) {
+ if ( (progress<0)
+ || (progress>100)
+ ) {
+ throw new TaskException("task progress is a percentage (integer) and must be expressed between 0 and 100");
+ }
+ this.progress = progress;
+ }
+
+ // getters and setters //////////////////////////////////////////////////////
+
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public boolean isBlocking() {
+ return isBlocking;
+ }
+ public void setBlocking(boolean isBlocking) {
+ this.isBlocking = isBlocking;
+ }
+ public boolean isSignalling() {
+ return isSignalling;
+ }
+ public void setSignalling(boolean isSignalling) {
+ this.isSignalling = isSignalling;
+ }
+ public int getPriority() {
+ return priority;
+ }
+ public void setPriority(int priority) {
+ this.priority = priority;
+ }
+ public void setComments(List<CommentImpl> comments) {
+ this.comments = comments;
+ }
+ public Date getCreate() {
+ return create;
+ }
+ public void setCreate(Date create) {
+ this.create = create;
+ }
+ public Date getDueDate() {
+ return dueDate;
+ }
+ public void setDueDate(Date dueDate) {
+ this.dueDate = dueDate;
+ }
+ public Execution getExecution() {
+ return execution;
+ }
+ public void setExecution(Execution execution) {
+ this.execution = execution;
+ }
+ public String getState() {
+ return state;
+ }
+ public Swimlane getSwimlane() {
+ return swimlane;
+ }
+ public void setSwimlane(SwimlaneImpl swimlane) {
+ this.swimlane = swimlane;
+ }
+ public long getDbid() {
+ return dbid;
+ }
+ public TaskDefinition getTaskDefinition() {
+ return taskDefinition;
+ }
+ public TaskImpl getSuperTask() {
+ return superTask;
+ }
+ public void setSuperTask(TaskImpl superTask) {
+ this.superTask = superTask;
+ }
+ public Integer getProgress() {
+ return progress;
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskServiceImpl.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskServiceImpl.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskServiceImpl.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,91 @@
+/*
+ * 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.task.impl;
+
+import java.util.List;
+
+import org.jbpm.task.Task;
+import org.jbpm.task.TaskService;
+import org.jbpm.task.cmd.CreateTask;
+import org.jbpm.task.cmd.DeleteTask;
+import org.jbpm.task.cmd.GetTask;
+import org.jbpm.task.cmd.UpdateTask;
+import org.jbpm.pvm.internal.cmd.CommandService;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskServiceImpl implements TaskService {
+
+ protected CommandService commandService;
+
+ public TaskServiceImpl() {
+ }
+
+ public TaskServiceImpl(CommandService commandService) {
+ this.commandService = commandService;
+ }
+
+ public Task createTask() {
+ return (Task) commandService.execute(new CreateTask());
+ }
+
+ public Task createTask(long taskDefinitionDbid) {
+ return (Task) commandService.execute(new CreateTask(taskDefinitionDbid));
+ }
+
+ public Task createTask(long taskDefinitionDbid, long executionDbid) {
+ return (Task) commandService.execute(new CreateTask(taskDefinitionDbid, executionDbid));
+ }
+
+ public void deleteTask(long taskDbid) {
+ commandService.execute(new DeleteTask(taskDbid));
+ }
+
+ public Task getTask(long taskDbid) {
+ return (Task) commandService.execute(new GetTask(taskDbid));
+ }
+
+ public void updateTask(Task task) {
+ commandService.execute(new UpdateTask(task));
+ }
+
+ public List<Task> getGroupTaskListPage(List<String> identityIds, int firstResult, int maxResults) {
+ throw new UnsupportedOperationException("TODO");
+ }
+
+ public List<Task> getPersonalTaskListPage(int firstResult, int maxResults) {
+ throw new UnsupportedOperationException("TODO");
+ }
+
+ public List<Task> getPersonalTaskListPage(String userId, int firstResult, int maxResults) {
+ throw new UnsupportedOperationException("TODO");
+ }
+
+ public CommandService getCommandService() {
+ return commandService;
+ }
+ public void setCommandService(CommandService commandService) {
+ this.commandService = commandService;
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/TaskServiceImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/default.lifecycle.xml
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/default.lifecycle.xml (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/default.lifecycle.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,13 @@
+<task-lifecycle initial="open">
+ <state name="open">
+ <transition name="complete" to="completed" />
+ <transition name="suspend" to="suspended" />
+ <transition name="cancel" to="cancelled" />
+ </state>
+ <state name="suspended">
+ <transition name="resume" to="open" />
+ <transition name="cancel" to="cancelled" />
+ </state>
+ <state name="cancelled" />
+ <state name="completed" />
+</task-lifecycle>
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/impl/default.lifecycle.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/task.model.jpg
===================================================================
(Binary files differ)
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/task.model.jpg
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionBinding.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionBinding.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionBinding.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,51 @@
+/*
+ * 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.task.xml;
+
+import org.jbpm.pvm.internal.xml.Binding;
+import org.jbpm.pvm.internal.xml.Parser;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.w3c.dom.Element;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskDbSessionBinding implements Binding
+{
+
+
+ public String getCategory()
+ {
+ throw new RuntimeException("NYI");
+ }
+
+ public boolean matches(Element element)
+ {
+ throw new RuntimeException("NYI");
+ }
+
+ public Object parse(Element element, Parse parse, Parser parser) {
+ return new TaskDbSessionDescriptor();
+ }
+
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionBinding.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionDescriptor.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionDescriptor.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionDescriptor.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,52 @@
+/*
+ * 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.task.xml;
+
+import org.hibernate.Session;
+import org.jbpm.task.db.TaskDbSession;
+import org.jbpm.pvm.internal.wire.WireDefinition;
+import org.jbpm.pvm.internal.wire.WireContext;
+import org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskDbSessionDescriptor extends AbstractDescriptor
+{
+
+ private static final long serialVersionUID = 1L;
+
+ public Object construct(WireContext wireContext) {
+ return new TaskDbSession();
+ }
+
+ public void initialize(Object object, WireContext wireContext) {
+ Session session = wireContext.get(Session.class);
+ TaskDbSession taskDbSession = (TaskDbSession) object;
+ taskDbSession.setSession(session);
+ }
+
+ public Class< ? > getType(WireDefinition wireDefinition) {
+ return TaskDbSession.class;
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskDbSessionDescriptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceBinding.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceBinding.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceBinding.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,51 @@
+/*
+ * 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.task.xml;
+
+import org.jbpm.pvm.internal.xml.Binding;
+import org.jbpm.pvm.internal.xml.Parser;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.w3c.dom.Element;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskServiceBinding implements Binding
+{
+
+
+ public String getCategory()
+ {
+ throw new RuntimeException("NYI");
+ }
+
+ public boolean matches(Element element)
+ {
+ throw new RuntimeException("NYI");
+ }
+
+ public Object parse(Element element, Parse parse, Parser parser) {
+ return new TaskServiceDescriptor();
+ }
+
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceBinding.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceDescriptor.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceDescriptor.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceDescriptor.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,51 @@
+/*
+ * 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.task.xml;
+
+import org.jbpm.task.impl.TaskServiceImpl;
+import org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor;
+import org.jbpm.pvm.internal.wire.WireContext;
+import org.jbpm.pvm.internal.wire.WireDefinition;
+import org.jbpm.pvm.internal.cmd.CommandService;
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskServiceDescriptor extends AbstractDescriptor
+{
+
+ private static final long serialVersionUID = 1L;
+
+ public Object construct(WireContext wireContext) {
+ return new TaskServiceImpl();
+ }
+
+ public void initialize(Object object, WireContext wireContext) {
+ CommandService commandService = wireContext.get(CommandService.class);
+ TaskServiceImpl taskService = (TaskServiceImpl) object;
+ taskService.setCommandService(commandService);
+ }
+
+ public Class< ? > getType(WireDefinition wireDefinition) {
+ return TaskServiceImpl.class;
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/main/java/org/jbpm/task/xml/TaskServiceDescriptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.hbm.xml
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.hbm.xml (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.hbm.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,152 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping auto-import="false" package="org.jbpm.task.impl" default-access="field">
+
+ <!-- ### TASK DEFINITION ################################################ -->
+ <class name="TaskDefinitionImpl" discriminator-value="T">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <discriminator type="char" column="CLASS_"/>
+ <version name="dbversion" column="DBVERSION_" />
+
+ <property name="name" column="NAME_"/>
+ <property name="description" column="DESCR_"/>
+
+ <property name="priority" column="PRIORITY_"/>
+ <property name="dueDateDuration" column="DUEDATE_"/>
+ <property name="isBlocking" column="BLOCK_"/>
+ <property name="isSignalling" column="SIGNAL_"/>
+ <property name="assigneeExpression" column="ASSIGNEE_EXPR_"/>
+ <property name="candidatesExpression" column="CANDIDATES_EXPR_"/>
+
+ <many-to-one name="assignerDescriptor"
+ column="ASSIGNER_DESCR_"
+ cascade="all"
+ class="org.jbpm.wire.descriptor.AbstractDescriptor"
+ foreign-key="FK_TSK_ASIG_DESCR"
+ index="IDX_TSK_ASIG_DESCR" />
+
+ <many-to-one name="swimlaneDefinition"
+ column="SWIMLANE_DEF_"
+ cascade="all"
+ class="SwimlaneDefinitionImpl"
+ foreign-key="FK_TSK_SWIML_DEF"
+ index="IDX_TSK_SWIML_DEF" />
+
+ <list name="subTaskDefinitions" cascade="all-delete-orphan">
+ <key column="TASKDEF_" />
+ <list-index column="TASKDEF_IDX_" />
+ <one-to-many class="TaskDefinitionImpl" />
+ </list>
+ </class>
+
+ <!-- ### TASK ########################################################### -->
+ <class name="TaskImpl"
+ discriminator-value="T">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <discriminator type="char" column="CLASS_"/>
+ <version name="dbversion" column="DBVERSION_" />
+
+ <property name="name" column="NAME_"/>
+ <property name="description" column="DESCR_"/>
+ <property name="assignee" column="ASSIGNEE_"/>
+
+ <set name="roles" cascade="all-delete-orphan">
+ <key column="TASK_" foreign-key="FK_ROLE_TASK" />
+ <one-to-many class="RoleImpl" />
+ </set>
+
+ <property name="priority" column="PRIORITY_"/>
+ <property name="create" column="CREATE_"/>
+ <property name="dueDate" column="DUEDATE_"/>
+ <property name="progress" column="PROGRESS_"/>
+
+ <many-to-one name="variableMap"
+ class="org.jbpm.pvm.impl.VariableMap"
+ column="VARMAP_"
+ foreign-key="FK_TASK_VARMAP"
+ cascade="all" />
+
+ <many-to-one name="swimlane"
+ class="SwimlaneImpl"
+ column="SWIMLANE_"
+ foreign-key="FK_TASK_SWIML" />
+
+ <many-to-one name="taskDefinition"
+ column="TASK_DEF_"
+ class="TaskDefinitionImpl"
+ foreign-key="FK_TSK_DEF"
+ index="IDX_TSK_DEF" />
+
+ <list name="comments" cascade="all-delete-orphan">
+ <key column="TASK_" />
+ <list-index column="TASK_IDX_" />
+ <one-to-many class="org.jbpm.pvm.impl.CommentImpl" />
+ </list>
+
+ <set name="subTasks" cascade="all-delete-orphan">
+ <key column="SUPERTASK_" foreign-key="FK_TASK_SUPERTASK" />
+ <one-to-many class="TaskImpl" />
+ </set>
+
+ </class>
+
+ <!-- ### ROLE ########################################################### -->
+ <class name="RoleImpl"
+ discriminator-value="R">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <discriminator type="char" column="CLASS_"/>
+ <version name="dbversion" column="DBVERSION_" />
+
+ <property name="identityId" column="IDENTITYID_"/>
+ <property name="roleType" type="org.jbpm.task.RoleType" column="ROLETYPE_" />
+ <property name="description" column="DESCR_"/>
+
+ <many-to-one name="task"
+ class="TaskImpl"
+ column="TASK_"
+ foreign-key="FK_ROLE_TASK" />
+
+ </class>
+
+ <!-- ### SWIMLANE DEFINITION ############################################ -->
+ <class name="SwimlaneDefinitionImpl">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <version name="dbversion" column="DBVERSION_" />
+
+ <property name="name" column="NAME_"/>
+ </class>
+
+
+ <!-- ### SWIMLANE ####################################################### -->
+ <class name="SwimlaneImpl">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <version name="dbversion" column="DBVERSION_" />
+
+ <property name="name" column="NAME_"/>
+ <property name="assignee" column="ASSIGNEE_"/>
+
+ <many-to-one name="swimlaneDefinition"
+ class="SwimlaneDefinitionImpl"
+ column="SWIMLANEDEF_"
+ foreign-key="FK_SWIMLANE_DEF" />
+
+ <set name="candidates" cascade="all-delete-orphan">
+ <key column="SWIMLANE_" foreign-key="FK_ROLE_SWIMLANE" />
+ <one-to-many class="RoleImpl" />
+ </set>
+
+ </class>
+
+</hibernate-mapping>
Property changes on: jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.hbm.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.queries.hbm.xml
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.queries.hbm.xml (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.queries.hbm.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping>
+
+
+ <query name="findTasks">
+ <![CDATA[
+ select task
+ from org.jbpm.task.impl.TaskImpl as task
+ ]]>
+ </query>
+
+
+</hibernate-mapping>
\ No newline at end of file
Property changes on: jbpm4/task/trunk/modules/core/src/main/resources/hibernate.task.queries.hbm.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/resources/pvm.hibernate.mappings.xml
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/resources/pvm.hibernate.mappings.xml (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/resources/pvm.hibernate.mappings.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,4 @@
+<mappings>
+ <mapping resource="hibernate.task.hbm.xml" />
+ <mapping resource="hibernate.task.queries.hbm.xml" />
+</mappings>
Property changes on: jbpm4/task/trunk/modules/core/src/main/resources/pvm.hibernate.mappings.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/main/resources/pvm.wire.bindings.xml
===================================================================
--- jbpm4/task/trunk/modules/core/src/main/resources/pvm.wire.bindings.xml (rev 0)
+++ jbpm4/task/trunk/modules/core/src/main/resources/pvm.wire.bindings.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,6 @@
+<wire-bindings>
+
+ <binding tag="task-db-session" class="org.jbpm.task.xml.TaskDbSessionBinding" category="descriptor" />
+ <binding tag="task-service" class="org.jbpm.task.xml.TaskServiceBinding" category="descriptor" />
+
+</wire-bindings>
Property changes on: jbpm4/task/trunk/modules/core/src/main/resources/pvm.wire.bindings.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskDbTest.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskDbTest.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskDbTest.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,391 @@
+/*
+ * 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.task;
+
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.pvm.env.EnvironmentFactory;
+import org.jbpm.pvm.internal.util.Clock;
+import org.jbpm.pvm.internal.util.Priority;
+import org.jbpm.pvm.model.Comment;
+import org.jbpm.pvm.session.DbSession;
+import org.jbpm.pvm.test.base.DbTestCase;
+import org.jbpm.task.impl.RoleImpl;
+import org.jbpm.task.impl.SwimlaneImpl;
+import org.jbpm.task.impl.TaskDefinitionImpl;
+import org.jbpm.task.impl.TaskImpl;
+
+import java.util.*;
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskDbTest extends DbTestCase
+{
+
+ public void testTask() {
+ Date now = new Date();
+ Date inFiveMinutes = new Date(now.getTime()+ (5*60*1000));
+
+ TaskImpl task;
+ try {
+ Clock.setCurrentTime(now);
+ task = TaskImpl.create();
+ } finally {
+ Clock.setCurrentTime(null);
+ }
+ task.setName("hello");
+ task.setDescription("say hello to your neighbour developer");
+ task.setDueDate(inFiveMinutes);
+ task.setPriority(Priority.HIGHEST);
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals("hello", task.getName());
+ assertEquals("say hello to your neighbour developer", task.getDescription());
+ assertEquals(now, task.getCreate());
+ assertEquals(inFiveMinutes, task.getDueDate());
+ assertEquals(Priority.HIGHEST, task.getPriority());
+ }
+
+ public void testTaskAssignment() {
+ TaskImpl task = TaskImpl.create();
+ task.setAssignee("john doe");
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals("john doe", task.getAssignee());
+ }
+
+ public void testTaskReassignmentAssignment() {
+ TaskImpl task = TaskImpl.create();
+ task.setAssignee("johndoe");
+ assertEquals("johndoe", task.getAssignee());
+
+ task = reload(task, TaskImpl.class);
+
+ task.setAssignee("joesmoe");
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals("joesmoe", task.getAssignee());
+ }
+
+ public void testTaskRoles() {
+ TaskImpl task = TaskImpl.create();
+
+ assertNotNull(task.getRoles());
+ assertEquals(0, task.getRoles().size());
+
+ task.addRole("john doe", RoleType.CLIENT).setDescription("uses the result");
+ task.addRole("joe smoe", RoleType.OWNER).setDescription("does what he wants");
+ task.addRole("jack black", RoleType.CANDIDATE).setDescription("can take this task");
+ task.addRole("jim slim", RoleType.VIEWER).setDescription("is allowed to see");
+ task.addRole("jeff nef", RoleType.REPLACED_ASSIGNEE).setDescription("is sick");
+
+ task = reload(task, TaskImpl.class);
+
+ Map<String, RoleImpl> roleMap = getRoleMap(task.getRoles());
+
+ assertEquals(RoleType.CLIENT, roleMap.get("john doe").getRoleType());
+ assertEquals("uses the result", roleMap.get("john doe").getDescription());
+
+ assertEquals(RoleType.OWNER, roleMap.get("joe smoe").getRoleType());
+ assertEquals("does what he wants", roleMap.get("joe smoe").getDescription());
+
+ assertEquals(RoleType.CANDIDATE, roleMap.get("jack black").getRoleType());
+ assertEquals("can take this task", roleMap.get("jack black").getDescription());
+
+ assertEquals(RoleType.VIEWER, roleMap.get("jim slim").getRoleType());
+ assertEquals("is allowed to see", roleMap.get("jim slim").getDescription());
+
+ assertEquals(RoleType.REPLACED_ASSIGNEE, roleMap.get("jeff nef").getRoleType());
+ assertEquals("is sick", roleMap.get("jeff nef").getDescription());
+
+ assertEquals(5, roleMap.size());
+
+ task.removeRole(roleMap.get("john doe"));
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals(4, task.getRoles().size());
+ task.removeRole(getRoleMap(task.getRoles()).get("joe smoe"));
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals(3, task.getRoles().size());
+ task.removeRole(getRoleMap(task.getRoles()).get("jack black"));
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals(2, task.getRoles().size());
+ task.removeRole(getRoleMap(task.getRoles()).get("jim slim"));
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals(1, task.getRoles().size());
+ task.removeRole(getRoleMap(task.getRoles()).get("jeff nef"));
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals(0, getRoleMap(task.getRoles()).size());
+ }
+
+ public static Map<String, RoleImpl> getRoleMap(Set<RoleImpl> roles) {
+ Map<String, RoleImpl> roleMap = new HashMap<String, RoleImpl>();
+ for (RoleImpl role: roles) {
+ roleMap.put(role.getIdentityId(), role);
+ }
+ return roleMap;
+ }
+
+ public void testTaskAllRoles() {
+ SwimlaneImpl manager = new SwimlaneImpl();
+
+ manager.createCandidate("joe smoe").setDescription("too much tostesteron");
+ manager.createCandidate("jack black").setDescription("the pigeon");
+ manager.createCandidate("jim slim").setDescription("lame duck");
+
+ manager = reload(manager, SwimlaneImpl.class);
+
+ TaskImpl task = TaskImpl.create();
+ assertNotNull(task.getAllRoles());
+ assertEquals(0, task.getAllRoles().size());
+
+ task.addRole("john doe", RoleType.CLIENT).setDescription("uses the result");
+ assertEquals(1, task.getAllRoles().size());
+
+ task.addRole("jeff nef", RoleType.REPLACED_ASSIGNEE).setDescription("is sick");
+ task.setSwimlane(manager);
+
+ task = reload(task, TaskImpl.class);
+
+ Map<String, RoleImpl> roleMap = getRoleMap(task.getAllRoles());
+
+ assertEquals(RoleType.CLIENT, roleMap.get("john doe").getRoleType());
+ assertEquals("uses the result", roleMap.get("john doe").getDescription());
+
+ assertEquals(RoleType.CANDIDATE, roleMap.get("joe smoe").getRoleType());
+ assertEquals("too much tostesteron", roleMap.get("joe smoe").getDescription());
+
+ assertEquals(RoleType.CANDIDATE, roleMap.get("jack black").getRoleType());
+ assertEquals("the pigeon", roleMap.get("jack black").getDescription());
+
+ assertEquals(RoleType.CANDIDATE, roleMap.get("jim slim").getRoleType());
+ assertEquals("lame duck", roleMap.get("jim slim").getDescription());
+
+ assertEquals(RoleType.REPLACED_ASSIGNEE, roleMap.get("jeff nef").getRoleType());
+ assertEquals("is sick", roleMap.get("jeff nef").getDescription());
+
+ assertEquals(5, roleMap.size());
+
+ task.removeRole(roleMap.get("john doe"));
+
+ task = reload(task, TaskImpl.class);
+ manager = environment.get(DbSession.class).get(SwimlaneImpl.class, manager.getDbid());
+
+ assertEquals(4, task.getAllRoles().size());
+ manager.removeCandidate(getRoleMap(task.getAllRoles()).get("joe smoe"));
+
+ task = reload(task, TaskImpl.class);
+ manager = environment.get(DbSession.class).get(SwimlaneImpl.class, manager.getDbid());
+
+ assertEquals(3, task.getAllRoles().size());
+ manager.removeCandidate(getRoleMap(task.getAllRoles()).get("jack black"));
+
+ task = reload(task, TaskImpl.class);
+ manager = environment.get(DbSession.class).get(SwimlaneImpl.class, manager.getDbid());
+
+ assertEquals(2, task.getAllRoles().size());
+ manager.removeCandidate(getRoleMap(task.getAllRoles()).get("jim slim"));
+
+ task = reload(task, TaskImpl.class);
+ manager = environment.get(DbSession.class).get(SwimlaneImpl.class, manager.getDbid());
+
+ assertEquals(1, task.getAllRoles().size());
+ task.removeRole(getRoleMap(task.getAllRoles()).get("jeff nef"));
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals(0, task.getAllRoles().size());
+ }
+
+ public void testTaskComment() {
+ EnvironmentFactory environmentFactory = EnvironmentFactory.parseXmlString("<environment/>");
+ TaskImpl task = TaskImpl.create();
+
+ Environment environment = environmentFactory.openEnvironment();
+ try {
+ environment.setUserId("john doe");
+ task.createComment("should I really do this ? yuk.");
+ } finally {
+ environment.close();
+ }
+
+ task = reload(task, TaskImpl.class);
+
+ environment = environmentFactory.openEnvironment();
+ try {
+ environment.setUserId("joe smoe");
+ task.createComment("yes, you should really do it.");
+ } finally {
+ environment.close();
+ }
+
+ task = reload(task, TaskImpl.class);
+
+ List<Comment> comments = task.getComments();
+ assertNotNull(comments);
+
+ assertEquals("should I really do this ? yuk.", comments.get(0).getMessage());
+ assertEquals("john doe", comments.get(0).getUserId());
+
+ assertEquals("yes, you should really do it.", comments.get(1).getMessage());
+ assertEquals("joe smoe", comments.get(1).getUserId());
+ }
+
+ public void testTaskCommentReplies() {
+ TaskImpl task = TaskImpl.create();
+ Comment comment = task.createComment("hi, how are you?");
+ Comment reply = comment.createReply("i'm fine, thanks");
+ reply = reply.createReply("nice wheather, huh");
+ reply.createReply("snow's great fun");
+
+ task = reload(task, TaskImpl.class);
+
+ comment = task.createComment("are you going to the office?");
+ reply = comment.createReply("no not now");
+ reply = reply.createReply("when are you going");
+ reply.createReply("later");
+
+ task = reload(task, TaskImpl.class);
+
+ List<Comment> comments = task.getComments();
+ assertEquals("hi, how are you?", comments.get(0).getMessage());
+ assertEquals("i'm fine, thanks", comments.get(0).getReplies().get(0).getMessage());
+ assertEquals("nice wheather, huh", comments.get(0).getReplies().get(0).getReplies().get(0).getMessage());
+ assertEquals("snow's great fun", comments.get(0).getReplies().get(0).getReplies().get(0).getReplies().get(0).getMessage());
+
+ assertEquals("are you going to the office?", comments.get(1).getMessage());
+ assertEquals("no not now", comments.get(1).getReplies().get(0).getMessage());
+ assertEquals("when are you going", comments.get(1).getReplies().get(0).getReplies().get(0).getMessage());
+ assertEquals("later", comments.get(1).getReplies().get(0).getReplies().get(0).getReplies().get(0).getMessage());
+
+ comment = task.getComments().get(0);
+ comment.removeReply(comment.getReplies().get(0));
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals("hi, how are you?", comment.getMessage());
+ assertTrue(comment.getReplies().isEmpty());
+ assertEquals(2, task.getComments().size());
+
+ task.removeComment(task.getComments().get(1));
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals(1, task.getComments().size());
+ assertEquals("hi, how are you?", comment.getMessage());
+ }
+
+ public void testTaskWithDefinition() {
+ TaskDefinitionImpl taskDefinition = new TaskDefinitionImpl();
+ taskDefinition.setName("hello");
+ taskDefinition.setPriority(Priority.HIGH);
+
+ taskDefinition = reload(taskDefinition, TaskDefinitionImpl.class);
+
+ TaskImpl task = TaskImpl.create(taskDefinition);
+
+ task = reload(task, TaskImpl.class);
+
+ assertEquals("hello", task.getName());
+ assertEquals(Priority.HIGH, task.getPriority());
+ assertEquals("hello", task.getTaskDefinition().getName());
+ }
+
+ public void testSubTasks() {
+ TaskImpl improveWorld = TaskImpl.create();
+ improveWorld.setName("improve the world");
+
+ improveWorld.createSubTask("try to automate everything");
+
+ improveWorld = reload(improveWorld, TaskImpl.class);
+
+ improveWorld.createSubTask("discover the problem is in the workflow part");
+ TaskImpl writeWorkflowEngine = (TaskImpl) improveWorld.createSubTask("write an open source workflow engine");
+ writeWorkflowEngine.createSubTask("create a sf.net project");
+ Task commitCode = writeWorkflowEngine.createSubTask("commit code to cvs");
+ writeWorkflowEngine.createSubTask("nurture it and grow it");
+ writeWorkflowEngine.createSubTask("harvest a beautiful project");
+
+ improveWorld.createSubTask("automate everything with workflow");
+ improveWorld.createSubTask("create peace everywhere");
+
+ improveWorld = reload(improveWorld, TaskImpl.class);
+
+ writeWorkflowEngine = environment.get(DbSession.class).get(TaskImpl.class, writeWorkflowEngine.getDbid());
+
+ Set<String> expectedSubtaskNames = new HashSet<String>();
+ expectedSubtaskNames.add("try to automate everything");
+ expectedSubtaskNames.add("discover the problem is in the workflow part");
+ expectedSubtaskNames.add("write an open source workflow engine");
+ expectedSubtaskNames.add("automate everything with workflow");
+ expectedSubtaskNames.add("create peace everywhere");
+
+ Set<Task> subtasks = improveWorld.getSubTasks();
+ Set<String> subtaskNames = new HashSet<String>();
+ for (Task subtask: subtasks) {
+ subtaskNames.add(subtask.getName());
+ }
+
+ assertEquals(expectedSubtaskNames, subtaskNames);
+
+ expectedSubtaskNames = new HashSet<String>();
+ expectedSubtaskNames.add("create a sf.net project");
+ expectedSubtaskNames.add("commit code to cvs");
+ expectedSubtaskNames.add("nurture it and grow it");
+ expectedSubtaskNames.add("harvest a beautiful project");
+
+ subtasks = writeWorkflowEngine.getSubTasks();
+ subtaskNames = new HashSet<String>();
+ for (Task subtask: subtasks) {
+ subtaskNames.add(subtask.getName());
+ }
+
+ assertEquals(expectedSubtaskNames, subtaskNames);
+
+ writeWorkflowEngine = reload(writeWorkflowEngine, TaskImpl.class);
+ commitCode = environment.get(DbSession.class).get(TaskImpl.class, commitCode.getDbid());
+ writeWorkflowEngine.removeSubTask(commitCode);
+ expectedSubtaskNames.remove("commit code to cvs");
+
+ writeWorkflowEngine = reload(writeWorkflowEngine, TaskImpl.class);
+
+ subtasks = writeWorkflowEngine.getSubTasks();
+ subtaskNames = new HashSet<String>();
+ for (Task subtask: subtasks) {
+ subtaskNames.add(subtask.getName());
+ }
+
+ assertEquals(expectedSubtaskNames, subtaskNames);
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskDbTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskServiceTest.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskServiceTest.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskServiceTest.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,67 @@
+/*
+ * 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.task;
+
+import java.util.Date;
+import java.util.List;
+
+import org.hibernate.Session;
+import org.jbpm.task.impl.TaskImpl;
+import org.jbpm.pvm.test.base.ServiceTestCase;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.internal.cmd.CommandService;
+import org.jbpm.pvm.env.Environment;
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskServiceTest extends ServiceTestCase
+{
+
+ public void testTaskService() {
+ TaskService taskService = getEnvironmentFactory().get(TaskService.class);
+
+ Task task = taskService.createTask();
+ task.setName("doing the dishes");
+ Date now = new Date();
+ task.setDueDate(now);
+ taskService.updateTask(task);
+
+ long taskDbid = task.getDbid();
+ task = taskService.getTask(taskDbid);
+ assertEquals("doing the dishes", task.getName());
+ assertEquals(now, task.getDueDate());
+
+ taskService.deleteTask(taskDbid);
+
+ // verify that the task table is empty
+ getEnvironmentFactory().get(CommandService.class).execute(new Command() {
+ public Object execute(Environment environment) throws Exception {
+ Session session = environment.get(Session.class);
+ List tasks = session.createQuery("from "+TaskImpl.class.getName()).list();
+ assertEquals(0, tasks.size());
+ return null;
+ }
+ });
+ }
+
+}
Property changes on: jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskServiceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskTest.java
===================================================================
--- jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskTest.java (rev 0)
+++ jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskTest.java 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,312 @@
+/*
+ * 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.task;
+
+import org.jbpm.pvm.internal.util.Clock;
+import org.jbpm.pvm.internal.util.Priority;
+import org.jbpm.pvm.test.base.JbpmTestCase;
+import org.jbpm.pvm.env.EnvironmentFactory;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.pvm.model.Comment;
+import org.jbpm.task.impl.RoleImpl;
+import org.jbpm.task.impl.SwimlaneImpl;
+import org.jbpm.task.impl.TaskDefinitionImpl;
+import org.jbpm.task.impl.TaskImpl;
+
+import java.util.*;
+
+/**
+ * @author Tom Baeyens
+ */
+public class TaskTest extends JbpmTestCase
+{
+
+ public void testTask() {
+ Date now = new Date();
+ Date inFiveMinutes = new Date(now.getTime()+ (5*60*1000));
+
+ TaskImpl task;
+ try {
+ Clock.setCurrentTime(now);
+ task = TaskImpl.create();
+ } finally {
+ Clock.setCurrentTime(null);
+ }
+ task.setName("hello");
+ task.setDescription("say hello to your neighbour developer");
+ task.setDueDate(inFiveMinutes);
+ task.setPriority(Priority.HIGHEST);
+
+ assertEquals("hello", task.getName());
+ assertEquals("say hello to your neighbour developer", task.getDescription());
+ assertEquals(now, task.getCreate());
+ assertEquals(inFiveMinutes, task.getDueDate());
+ assertEquals(Priority.HIGHEST, task.getPriority());
+ }
+
+ public void testTaskAssignment() {
+ TaskImpl task = TaskImpl.create();
+ task.setAssignee("john doe");
+ assertEquals("john doe", task.getAssignee());
+ }
+
+ public void testTaskReassignmentAssignment() {
+ TaskImpl task = TaskImpl.create();
+ task.setAssignee("johndoe");
+ assertEquals("johndoe", task.getAssignee());
+ task.setAssignee("joesmoe");
+ assertEquals("joesmoe", task.getAssignee());
+ }
+
+ public void testTaskRoles() {
+ TaskImpl task = TaskImpl.create();
+
+ assertNotNull(task.getRoles());
+ assertEquals(0, task.getRoles().size());
+
+ task.addRole("john doe", RoleType.CLIENT).setDescription("uses the result");
+ task.addRole("joe smoe", RoleType.OWNER).setDescription("does what he wants");
+ task.addRole("jack black", RoleType.CANDIDATE).setDescription("can take this task");
+ task.addRole("jim slim", RoleType.VIEWER).setDescription("is allowed to see");
+ task.addRole("jeff nef", RoleType.REPLACED_ASSIGNEE).setDescription("is sick");
+
+ Set<RoleImpl> roles = task.getRoles();
+ Map<String, RoleImpl> roleMap = new HashMap<String, RoleImpl>();
+ for (RoleImpl role: roles) {
+ roleMap.put(role.getIdentityId(), role);
+ }
+
+ assertEquals(RoleType.CLIENT, roleMap.get("john doe").getRoleType());
+ assertEquals("uses the result", roleMap.get("john doe").getDescription());
+
+ assertEquals(RoleType.OWNER, roleMap.get("joe smoe").getRoleType());
+ assertEquals("does what he wants", roleMap.get("joe smoe").getDescription());
+
+ assertEquals(RoleType.CANDIDATE, roleMap.get("jack black").getRoleType());
+ assertEquals("can take this task", roleMap.get("jack black").getDescription());
+
+ assertEquals(RoleType.VIEWER, roleMap.get("jim slim").getRoleType());
+ assertEquals("is allowed to see", roleMap.get("jim slim").getDescription());
+
+ assertEquals(RoleType.REPLACED_ASSIGNEE, roleMap.get("jeff nef").getRoleType());
+ assertEquals("is sick", roleMap.get("jeff nef").getDescription());
+
+ assertEquals(5, roles.size());
+
+ task.removeRole(roleMap.get("john doe"));
+ assertEquals(4, task.getRoles().size());
+ task.removeRole(roleMap.get("joe smoe"));
+ assertEquals(3, task.getRoles().size());
+ task.removeRole(roleMap.get("jack black"));
+ assertEquals(2, task.getRoles().size());
+ task.removeRole(roleMap.get("jim slim"));
+ assertEquals(1, task.getRoles().size());
+ task.removeRole(roleMap.get("jeff nef"));
+ assertEquals(0, roles.size());
+ }
+
+ public void testTaskAllRoles() {
+ TaskImpl task = TaskImpl.create();
+
+ assertNotNull(task.getAllRoles());
+ assertEquals(0, task.getAllRoles().size());
+
+ task.addRole("john doe", RoleType.CLIENT).setDescription("uses the result");
+
+ SwimlaneImpl manager = new SwimlaneImpl();
+ task.setSwimlane(manager);
+
+ manager.createCandidate("joe smoe").setDescription("tostesteron ambition");
+ manager.createCandidate("jack black").setDescription("the pigeon");
+ manager.createCandidate("jim slim").setDescription("lame duck");
+
+ task.addRole("jeff nef", RoleType.REPLACED_ASSIGNEE).setDescription("is sick");
+
+ Set<RoleImpl> roles = task.getAllRoles();
+ Map<String, RoleImpl> roleMap = new HashMap<String, RoleImpl>();
+ for (RoleImpl role: roles) {
+ roleMap.put(role.getIdentityId(), role);
+ }
+
+ assertEquals(RoleType.CLIENT, roleMap.get("john doe").getRoleType());
+ assertEquals("uses the result", roleMap.get("john doe").getDescription());
+
+ assertEquals(RoleType.CANDIDATE, roleMap.get("joe smoe").getRoleType());
+ assertEquals("tostesteron ambition", roleMap.get("joe smoe").getDescription());
+
+ assertEquals(RoleType.CANDIDATE, roleMap.get("jack black").getRoleType());
+ assertEquals("the pigeon", roleMap.get("jack black").getDescription());
+
+ assertEquals(RoleType.CANDIDATE, roleMap.get("jim slim").getRoleType());
+ assertEquals("lame duck", roleMap.get("jim slim").getDescription());
+
+ assertEquals(RoleType.REPLACED_ASSIGNEE, roleMap.get("jeff nef").getRoleType());
+ assertEquals("is sick", roleMap.get("jeff nef").getDescription());
+
+ assertEquals(5, roles.size());
+
+ task.removeRole(roleMap.get("john doe"));
+ assertEquals(4, task.getAllRoles().size());
+ manager.removeCandidate(roleMap.get("joe smoe"));
+ assertEquals(3, task.getAllRoles().size());
+ manager.removeCandidate(roleMap.get("jack black"));
+ assertEquals(2, task.getAllRoles().size());
+ manager.removeCandidate(roleMap.get("jim slim"));
+ assertEquals(1, task.getAllRoles().size());
+ task.removeRole(roleMap.get("jeff nef"));
+ assertEquals(0, task.getAllRoles().size());
+ }
+
+ public void testTaskComment() {
+ EnvironmentFactory environmentFactory = EnvironmentFactory.parseXmlString("<environment/>");
+ TaskImpl task = TaskImpl.create();
+
+ Environment environment = environmentFactory.openEnvironment();
+ try {
+ environment.setUserId("john doe");
+ task.createComment("should I really do this ? yuk.");
+ } finally {
+ environment.close();
+ }
+
+ environment = environmentFactory.openEnvironment();
+ try {
+ environment.setUserId("joe smoe");
+ task.createComment("yes, you should really do it.");
+ } finally {
+ environment.close();
+ }
+
+ List<Comment> comments = task.getComments();
+ assertNotNull(comments);
+
+ assertEquals("should I really do this ? yuk.", comments.get(0).getMessage());
+ assertEquals("john doe", comments.get(0).getUserId());
+
+ assertEquals("yes, you should really do it.", comments.get(1).getMessage());
+ assertEquals("joe smoe", comments.get(1).getUserId());
+ }
+
+ public void testTaskCommentReplies() {
+ TaskImpl task = TaskImpl.create();
+ Comment comment = task.createComment("hi, how are you?");
+ Comment reply = comment.createReply("i'm fine, thanks");
+ reply = reply.createReply("nice wheather, huh");
+ reply.createReply("snow's great fun");
+
+ comment = task.createComment("are you going to the office?");
+ reply = comment.createReply("no not now");
+ reply = reply.createReply("when are you going");
+ reply.createReply("later");
+
+ List<Comment> comments = task.getComments();
+ assertEquals("hi, how are you?", comments.get(0).getMessage());
+ assertEquals("i'm fine, thanks", comments.get(0).getReplies().get(0).getMessage());
+ assertEquals("nice wheather, huh", comments.get(0).getReplies().get(0).getReplies().get(0).getMessage());
+ assertEquals("snow's great fun", comments.get(0).getReplies().get(0).getReplies().get(0).getReplies().get(0).getMessage());
+
+ assertEquals("are you going to the office?", comments.get(1).getMessage());
+ assertEquals("no not now", comments.get(1).getReplies().get(0).getMessage());
+ assertEquals("when are you going", comments.get(1).getReplies().get(0).getReplies().get(0).getMessage());
+ assertEquals("later", comments.get(1).getReplies().get(0).getReplies().get(0).getReplies().get(0).getMessage());
+
+ comment = task.getComments().get(0);
+ comment.removeReply(comment.getReplies().get(0));
+
+ assertEquals("hi, how are you?", comment.getMessage());
+ assertTrue(comment.getReplies().isEmpty());
+ assertEquals(2, task.getComments().size());
+
+ task.removeComment(task.getComments().get(1));
+
+ assertEquals(1, task.getComments().size());
+ assertEquals("hi, how are you?", comment.getMessage());
+ }
+
+ public void testTaskWithDefinition() {
+ TaskDefinitionImpl taskDefinition = new TaskDefinitionImpl();
+ taskDefinition.setName("hello");
+ taskDefinition.setPriority(Priority.HIGH);
+
+ TaskImpl task = TaskImpl.create(taskDefinition);
+ assertEquals("hello", task.getName());
+ assertEquals(Priority.HIGH, task.getPriority());
+ assertEquals("hello", task.getTaskDefinition().getName());
+ }
+
+ public void testSubTasks() {
+ TaskImpl improveWorld = TaskImpl.create();
+ improveWorld.setName("improve the world");
+
+ improveWorld.createSubTask("try to automate everything");
+ improveWorld.createSubTask("discover the problem is in the workflow part");
+ Task writeWorkflowEngine = improveWorld.createSubTask("write an open source workflow engine");
+ writeWorkflowEngine.createSubTask("create a sf.net project");
+ Task commitCode = writeWorkflowEngine.createSubTask("commit code to cvs");
+ writeWorkflowEngine.createSubTask("nurture it and grow it");
+ writeWorkflowEngine.createSubTask("harvest a beautiful project");
+
+ improveWorld.createSubTask("automate everything with workflow");
+ improveWorld.createSubTask("create peace everywhere");
+
+ Set<String> expectedSubtaskNames = new HashSet<String>();
+ expectedSubtaskNames.add("try to automate everything");
+ expectedSubtaskNames.add("discover the problem is in the workflow part");
+ expectedSubtaskNames.add("write an open source workflow engine");
+ expectedSubtaskNames.add("automate everything with workflow");
+ expectedSubtaskNames.add("create peace everywhere");
+
+ Set<Task> subtasks = improveWorld.getSubTasks();
+ Set<String> subtaskNames = new HashSet<String>();
+ for (Task subtask: subtasks) {
+ subtaskNames.add(subtask.getName());
+ }
+
+ assertEquals(expectedSubtaskNames, subtaskNames);
+
+ expectedSubtaskNames = new HashSet<String>();
+ expectedSubtaskNames.add("create a sf.net project");
+ expectedSubtaskNames.add("commit code to cvs");
+ expectedSubtaskNames.add("nurture it and grow it");
+ expectedSubtaskNames.add("harvest a beautiful project");
+
+ subtasks = writeWorkflowEngine.getSubTasks();
+ subtaskNames = new HashSet<String>();
+ for (Task subtask: subtasks) {
+ subtaskNames.add(subtask.getName());
+ }
+
+ assertEquals(expectedSubtaskNames, subtaskNames);
+
+ writeWorkflowEngine.removeSubTask(commitCode);
+
+ expectedSubtaskNames.remove("commit code to cvs");
+
+ subtasks = writeWorkflowEngine.getSubTasks();
+ subtaskNames = new HashSet<String>();
+ for (Task subtask: subtasks) {
+ subtaskNames.add(subtask.getName());
+ }
+
+ assertEquals(expectedSubtaskNames, subtaskNames);
+ }
+}
Property changes on: jbpm4/task/trunk/modules/core/src/test/java/org/jbpm/task/TaskTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/modules/core/src/test/resources/org.jbpm.task.cfg.xml
===================================================================
--- jbpm4/task/trunk/modules/core/src/test/resources/org.jbpm.task.cfg.xml (rev 0)
+++ jbpm4/task/trunk/modules/core/src/test/resources/org.jbpm.task.cfg.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,31 @@
+<environment>
+
+ <application>
+
+ <pvm-service />
+ <task-service />
+
+ <standard-command-service>
+ <retry-interceptor />
+ <environment-interceptor />
+ <transaction-interceptor />
+ </standard-command-service>
+
+ <hibernate-configuration>
+ <properties resource="hibernate.properties" />
+ <mappings resources="pvm.hibernate.mappings.xml" />
+ <cache-configuration resource="pvm.definition.cache.xml" usage="nonstrict-read-write" />
+ </hibernate-configuration>
+ <hibernate-session-factory />
+ <variable-types resource="pvm.variable.types.xml" />
+
+ </application>
+
+ <block>
+ <standard-transaction />
+ <hibernate-session />
+ <pvm-db-session />
+ <task-db-session />
+ </block>
+
+</environment>
Property changes on: jbpm4/task/trunk/modules/core/src/test/resources/org.jbpm.task.cfg.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/task/trunk/pom.xml
===================================================================
--- jbpm4/task/trunk/pom.xml (rev 0)
+++ jbpm4/task/trunk/pom.xml 2008-07-14 14:00:53 UTC (rev 1620)
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ====================================================================== -->
+<!-- -->
+<!-- JBoss, the OpenSource J2EE webOS -->
+<!-- -->
+<!-- Distributable under LGPL license. -->
+<!-- See terms of license at http://www.gnu.org. -->
+<!-- -->
+<!-- ====================================================================== -->
+
+<!-- $Id$ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <name>JBoss jBPM 4 - Task</name>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>task</artifactId>
+ <packaging>pom</packaging>
+
+ <version>4.0.0-SNAPSHOT</version>
+
+ <!-- Parent -->
+ <parent>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm-parent</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <!-- Modules -->
+ <modules>
+ <module>modules/core</module>
+ </modules>
+
+ <!-- Properties -->
+ <properties>
+ <pvm.version>1.0.0-SNAPSHOT</pvm.version>
+ <jboss.jbpm.api.version>1.0.0-SNAPSHOT</jboss.jbpm.api.version>
+ <junit.version>3.8.2</junit.version>
+ <log4j.version>1.2.14</log4j.version>
+ </properties>
+
+ <!-- DependencyManagement -->
+ <dependencyManagement>
+ <dependencies>
+ <!-- jBPM Dependencies -->
+ <dependency>
+ <groupId>org.jboss.jbpm.pvm</groupId>
+ <artifactId>pvm-core</artifactId>
+ <version>${pvm.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm-api</artifactId>
+ <version>${jboss.jbpm.api.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j.version}</version>
+ </dependency>
+
+ <!-- Compile Dependencies -->
+ <!--dependency>
+ <groupId>bsh</groupId>
+ <artifactId>bsh</artifactId>
+ </dependency-->
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>${junit.version}</version>
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
+ <!-- Plugins -->
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+ <!-- DistributionManagement -->
+ <distributionManagement>
+ <site>
+ <id>jbws.dyndns.org</id>
+ <url>file:///home/tdiesler/workspace/jbpm-site</url>
+ </site>
+ </distributionManagement>
+
+ <!-- Profiles -->
+ <profiles>
+
+ <!--
+ Name: skiptests
+ Desc: Skips the tests
+ -->
+ <profile>
+ <id>skiptests</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skipTests>true</skipTests>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <quiet>true</quiet>
+ <source>1.5</source>
+ <verbose>false</verbose>
+ <excludePackageNames>*.internal:*.test</excludePackageNames>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <repositories>
+ <repository>
+ <id>maven2.java.net</id>
+ <name>Java.net Repository for Maven 2</name>
+ <url>http://download.java.net/maven/2/</url>
+ </repository>
+ <repository>
+ <id>java.net</id>
+ <url>http://download.java.net/maven/1/</url>
+ <layout>legacy</layout>
+ </repository>
+ <repository>
+ <id>repository.jboss.org</id>
+ <url>http://repository.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>snapshots.jboss.org</id>
+ <url>http://snapshots.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+</project>
Property changes on: jbpm4/task/trunk/pom.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
17 years, 9 months
JBoss JBPM SVN: r1619 - in jbpm4/indentity: trunk and 31 other directories.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-07-14 09:57:16 -0400 (Mon, 14 Jul 2008)
New Revision: 1619
Added:
jbpm4/indentity/trunk/
jbpm4/indentity/trunk/.classpath
jbpm4/indentity/trunk/.project
jbpm4/indentity/trunk/hudson/
jbpm4/indentity/trunk/hudson/ant.properties.example
jbpm4/indentity/trunk/hudson/apache-tomcat/
jbpm4/indentity/trunk/hudson/apache-tomcat/conf/
jbpm4/indentity/trunk/hudson/apache-tomcat/conf/server.xml
jbpm4/indentity/trunk/hudson/apache-tomcat/conf/tomcat-users.xml
jbpm4/indentity/trunk/hudson/build.xml
jbpm4/indentity/trunk/hudson/hudson-home/
jbpm4/indentity/trunk/hudson/hudson-home/config.xml
jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml
jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Maven.xml
jbpm4/indentity/trunk/hudson/hudson-home/jobs/
jbpm4/indentity/trunk/hudson/hudson-home/jobs/jBPM4/
jbpm4/indentity/trunk/hudson/hudson-home/jobs/jBPM4/config.xml
jbpm4/indentity/trunk/modules/
jbpm4/indentity/trunk/modules/core/
jbpm4/indentity/trunk/modules/core/pom.xml
jbpm4/indentity/trunk/modules/core/src/
jbpm4/indentity/trunk/modules/core/src/main/
jbpm4/indentity/trunk/modules/core/src/main/doc/
jbpm4/indentity/trunk/modules/core/src/main/doc/models.uml
jbpm4/indentity/trunk/modules/core/src/main/java/
jbpm4/indentity/trunk/modules/core/src/main/java/org/
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.hbm.xml
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.queries.hbm.xml
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Group.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Identity.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityException.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityService.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Membership.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/User.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityLoginModule.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityPrincipal.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/package.html
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/CreateMembership.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteGroup.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteMembership.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteUser.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroup.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroups.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMemberships.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForGroup.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForRole.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForUser.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUser.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUsers.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveGroup.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveUser.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateGroup.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateMembership.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateUser.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/package.html
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/PermissionUserType.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/package.html
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/identity-db.png
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/identity-java.png
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/GroupImpl.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityImpl.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityServiceImpl.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/MembershipImpl.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/Permissions.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/UserImpl.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/package.html
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/package.html
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/AuthenticationSession.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/IdentityDbSession.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/QueryOptions.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/package.html
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionBinding.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionDescriptor.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceBinding.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceDescriptor.java
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/package.html
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.hibernate.mappings.xml
jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.wire.bindings.xml
jbpm4/indentity/trunk/modules/core/src/main/resources/
jbpm4/indentity/trunk/modules/core/src/main/resources/org/
jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/
jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.hbm.xml
jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.queries.hbm.xml
jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/id/
jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/id/environment.cfg.xml
jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.hibernate.mappings.xml
jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.wire.bindings.xml
jbpm4/indentity/trunk/modules/core/src/main/resources/release.notes.html
jbpm4/indentity/trunk/modules/core/src/test/
jbpm4/indentity/trunk/modules/core/src/test/java/
jbpm4/indentity/trunk/modules/core/src/test/java/org/
jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/
jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/
jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/AllTests.java
jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/IdentityServiceTest.java
jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/ObjectEqualityDbTest.java
jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/UserTest.java
jbpm4/indentity/trunk/modules/core/src/test/resources/
jbpm4/indentity/trunk/modules/core/src/test/resources/org.jbpm.id.cfg.xml
jbpm4/indentity/trunk/pom.xml
Log:
Start identity project
Added: jbpm4/indentity/trunk/.classpath
===================================================================
--- jbpm4/indentity/trunk/.classpath (rev 0)
+++ jbpm4/indentity/trunk/.classpath 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="modules/jpdl/target/classes" path="modules/jpdl/src/main/java"/>
+ <classpathentry kind="src" output="modules/jpdl/target/classes" path="modules/jpdl/src/main/resources"/>
+ <classpathentry kind="src" output="modules/jpdl/target/test-classes" path="modules/jpdl/src/test/java"/>
+ <classpathentry kind="src" output="modules/jpdl/target/test-classes" path="modules/jpdl/src/test/resources"/>
+ <classpathentry kind="src" output="modules/identity/target/classes" path="modules/identity/src/main/java"/>
+ <classpathentry kind="src" output="modules/identity/target/classes" path="modules/identity/src/main/resources"/>
+ <classpathentry kind="src" output="modules/identity/target/test-classes" path="modules/identity/src/test/java"/>
+ <classpathentry kind="src" output="modules/identity/target/test-classes" path="modules/identity/src/test/resources"/>
+ <classpathentry kind="src" output="modules/task/target/classes" path="modules/task/src/main/java"/>
+ <classpathentry kind="src" output="modules/task/target/classes" path="modules/task/src/main/resources"/>
+ <classpathentry kind="src" output="modules/task/target/test-classes" path="modules/task/src/test/java"/>
+ <classpathentry kind="src" output="modules/task/target/test-classes" path="modules/task/src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: jbpm4/indentity/trunk/.project
===================================================================
--- jbpm4/indentity/trunk/.project (rev 0)
+++ jbpm4/indentity/trunk/.project 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>jbpm</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ </natures>
+</projectDescription>
Added: jbpm4/indentity/trunk/hudson/ant.properties.example
===================================================================
--- jbpm4/indentity/trunk/hudson/ant.properties.example (rev 0)
+++ jbpm4/indentity/trunk/hudson/ant.properties.example 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,25 @@
+#
+# A sample ant properties file
+#
+# $Id: ant.properties.example 3995 2007-07-26 08:52:45Z thomas.diesler(a)jboss.com $
+
+# JBoss remote repository
+jboss.repository=http://repository.jboss.org
+
+# Hudson QA Environment
+hudson.username=changeme
+hudson.password=changeme
+
+hudson.maven.path=/usr/java/apache-maven-2.0.9
+
+hudson.root=/usr/share/java/workspace
+hudson.host=jbws.dyndns.org
+hudson.admin.port=8150
+hudson.http.port=8180
+
+hudson.mail.recipients=
+hudson.smtp.host=localhost
+
+# Hudson setup
+apache-tomcat=5.5.20
+sun-hudson=1.226
Added: jbpm4/indentity/trunk/hudson/apache-tomcat/conf/server.xml
===================================================================
--- jbpm4/indentity/trunk/hudson/apache-tomcat/conf/server.xml (rev 0)
+++ jbpm4/indentity/trunk/hudson/apache-tomcat/conf/server.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,57 @@
+
+<Server port="@hudson.admin.port@" shutdown="SHUTDOWN">
+
+ <!-- Comment these entries out to disable JMX MBeans support used for the
+ administration web application -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener"/>
+ <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
+ <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
+
+ <!-- Global JNDI resources -->
+ <GlobalNamingResources>
+
+ <!-- Test entry for demonstration purposes -->
+ <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users -->
+ <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml"/>
+
+ </GlobalNamingResources>
+
+ <!-- Define the Tomcat Stand-Alone Service -->
+ <Service name="Catalina">
+
+ <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
+ <Connector port="@hudson.http.port@" maxHttpHeaderSize="8192" maxThreads="150"
+ minSpareThreads="25" maxSpareThreads="75"
+ enableLookups="false" redirectPort="8443" acceptCount="100"
+ connectionTimeout="20000" disableUploadTimeout="true"/>
+
+ <!-- Define the top level container in our container hierarchy -->
+ <Engine name="Catalina" defaultHost="localhost">
+
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
+
+ <!-- Define the default virtual host
+ Note: XML Schema validation will not work with Xerces 2.2.
+ -->
+ <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
+
+ <Context path="/hudson">
+ <Environment description="" name="HUDSON_HOME" type="java.lang.String" value="@hudson.home@"/>
+ </Context>
+
+ </Host>
+
+ </Engine>
+
+ </Service>
+
+</Server>
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/hudson/apache-tomcat/conf/server.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/hudson/apache-tomcat/conf/tomcat-users.xml
===================================================================
--- jbpm4/indentity/trunk/hudson/apache-tomcat/conf/tomcat-users.xml (rev 0)
+++ jbpm4/indentity/trunk/hudson/apache-tomcat/conf/tomcat-users.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='utf-8'?>
+<tomcat-users>
+ <role rolename="admin"/>
+ <user username="@hudson.username@" password="@hudson.password@" roles="admin"/>
+</tomcat-users>
Property changes on: jbpm4/indentity/trunk/hudson/apache-tomcat/conf/tomcat-users.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/hudson/build.xml
===================================================================
--- jbpm4/indentity/trunk/hudson/build.xml (rev 0)
+++ jbpm4/indentity/trunk/hudson/build.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ====================================================================== -->
+<!-- -->
+<!-- JBoss, the OpenSource J2EE webOS -->
+<!-- -->
+<!-- Distributable under LGPL license. -->
+<!-- See terms of license at http://www.gnu.org. -->
+<!-- -->
+<!-- ====================================================================== -->
+
+<!-- $Id$ -->
+
+<project>
+
+ <property name="hudson.dir" value="${basedir}"/>
+ <property name="hudson.target.dir" value="${hudson.dir}/target"/>
+
+ <!-- ================================================================== -->
+ <!-- Initialization -->
+ <!-- ================================================================== -->
+
+ <target name="init">
+
+ <!-- Check if ant.properties is available -->
+ <available property="ant.properties.available" file="${basedir}/ant.properties"/>
+ <fail message="Cannot find ant.properties. Did you copy/edit ant.properties.example?" unless="ant.properties.available"/>
+
+ <property file="${basedir}/ant.properties"/>
+
+ <xmlproperty file="${basedir}/../pom.xml"/>
+ <property name="version.id" value="${project.version}"/>
+ <property name="repository.id" value="${project.version}"/>
+
+ <echo message="version.id=${version.id}"/>
+ <echo message="repository.id=${repository.id}"/>
+ </target>
+
+ <target name="init-hudson" depends="init">
+
+ <property name="hudson.tomcat" value="${hudson.root}/jbpm-hudson-${version.id}/apache-tomcat"/>
+ <property name="hudson.home" value="${hudson.root}/jbpm-hudson-${version.id}/hudson-home"/>
+ <echo/>
+ <echo message="hudson.root = ${hudson.root}"/>
+ <echo message="hudson.home = ${hudson.home}"/>
+ <echo/>
+
+ <available file="${hudson.root}" property="hudson.root.available"/>
+ <available file="${hudson.tomcat}" property="hudson.tomcat.available"/>
+ <fail message="Hudson root not available" unless="hudson.root.available"/>
+
+ <property name="hudson.username.${hudson.username}" value="true"/>
+ <fail message="Cannot use default hudson username: ${hudson.username}" if="hudson.username.changeme"/>
+ <property name="hudson.password.${hudson.password}" value="true"/>
+ <fail message="Cannot use default hudson password: ${hudson.password}" if="hudson.password.changeme"/>
+
+ <property name="thirdparty.dir" value="${hudson.target.dir}/thirdparty"/>
+ <mkdir dir="${thirdparty.dir}"/>
+
+ </target>
+
+ <!--
+ Setup the Hudson Tomcat instance
+ -->
+ <target name="hudson-tomcat-setup" depends="init-hudson" unless="hudson.tomcat.available">
+
+ <get src="${jboss.repository}/apache-tomcat/${apache-tomcat}/lib/apache-tomcat.zip" dest="${thirdparty.dir}/apache-tomcat.zip" usetimestamp="true" verbose="true"/>
+ <get src="${jboss.repository}/sun-hudson/${sun-hudson}/lib/hudson.war" dest="${thirdparty.dir}/hudson.war" usetimestamp="true" verbose="true"/>
+
+ <mkdir dir="${hudson.root}"/>
+ <unzip src="${thirdparty.dir}/apache-tomcat.zip" dest="${hudson.root}"/>
+ <move file="${hudson.root}/apache-tomcat-${apache-tomcat}" tofile="${hudson.tomcat}"/>
+ <chmod perm="+x">
+ <fileset dir="${hudson.tomcat}/bin">
+ <include name="*.sh"/>
+ </fileset>
+ </chmod>
+
+ <!-- Configure Tomcat -->
+ <copy todir="${hudson.tomcat}/webapps" file="${thirdparty.dir}/hudson.war"/>
+ <copy todir="${hudson.tomcat}" overwrite="true">
+ <fileset dir="${hudson.dir}/apache-tomcat">
+ <include name="**/*.xml"/>
+ </fileset>
+ <filterset>
+ <filtersfile file="${hudson.dir}/ant.properties"/>
+ <filter token="hudson.home" value="${hudson.home}"/>
+ </filterset>
+ </copy>
+ </target>
+
+ <!--
+ Update the Hudson version
+ -->
+ <target name="hudson-update" depends="init-hudson">
+
+ <get src="${jboss.repository}/sun-hudson/${sun-hudson}/lib/hudson.war" dest="${thirdparty.dir}/hudson.war" usetimestamp="false" verbose="true"/>
+
+ <delete dir="${hudson.tomcat}/webapps/hudson"/>
+ <copy todir="${hudson.tomcat}/webapps" file="${thirdparty.dir}/hudson.war"/>
+ </target>
+
+ <!--
+ Setup the Hudson QA environment
+ -->
+ <target name="hudson-setup" depends="init-hudson,hudson-tomcat-setup"
+ description="Setup the Hudson QA environment">
+
+ <!-- get the svn url -->
+ <exec dir="${hudson.dir}/.." executable="svn" failonerror="true" output="${hudson.target.dir}/svn-info.xml">
+ <arg line="info"/>
+ <arg line="--xml"/>
+ </exec>
+ <xmlproperty file="${hudson.target.dir}/svn-info.xml"/>
+ <property name="hudson.jbpm.url" value="${info.entry.url}"/>
+
+ <!-- Configure Hudson -->
+ <copy todir="${hudson.home}" overwrite="true">
+ <fileset dir="${hudson.dir}/hudson-home">
+ <include name="jobs/*/config.xml"/>
+ <include name="users/*/config.xml"/>
+ <include name="*.xml"/>
+ </fileset>
+ <filterset>
+ <filter token="hudson.jbpm.url" value="${hudson.jbpm.url}"/>
+ <filter token="hudson.home" value="${hudson.home}"/>
+ <filter token="version.id" value="${version.id}"/>
+ <filtersfile file="${hudson.dir}/ant.properties"/>
+ </filterset>
+ </copy>
+
+ <echo/>
+ <echo message="*************************************"/>
+ <echo message="* Hudson setup successfully *"/>
+ <echo message="* ant hudson-start *"/>
+ <echo message="*************************************"/>
+ <echo/>
+
+ </target>
+
+ <target name="hudson-stop" depends="init-hudson" description="Stops the Hudson QA environment">
+
+ <exec executable="${hudson.tomcat}/bin/catalina.sh" failonerror="true">
+ <arg line="stop"/>
+ </exec>
+
+ <echo/>
+ <echo message="*************************************"/>
+ <echo message="* Hudson stopped successfully *"/>
+ <echo message="* ant hudson-start *"/>
+ <echo message="*************************************"/>
+ <echo/>
+
+ </target>
+
+ <target name="hudson-start" depends="init-hudson" description="Start the Hudson QA environment">
+
+ <property environment="env"/>
+ <fail message="unset JBOSS_REPOSITORY=${env.JBOSS_REPOSITORY}" if="env.JBOSS_REPOSITORY"/>
+
+ <exec executable="${hudson.tomcat}/bin/catalina.sh" failonerror="true" output="${hudson.target.dir}/hudson.log">
+ <env key="CATALINA_OPTS" value="-Xmx512m -Djava.awt.headless=true"/>
+ <arg line="start"/>
+ </exec>
+
+ <echo/>
+ <echo message="*************************************"/>
+ <echo message="* Hudson started successfully *"/>
+ <echo message="* http://localhost:${hudson.http.port}/hudson *"/>
+ <echo message="*************************************"/>
+ <echo/>
+
+ </target>
+
+</project>
Property changes on: jbpm4/indentity/trunk/hudson/build.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/hudson/hudson-home/config.xml
===================================================================
--- jbpm4/indentity/trunk/hudson/hudson-home/config.xml (rev 0)
+++ jbpm4/indentity/trunk/hudson/hudson-home/config.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hudson>
+ <numExecutors>1</numExecutors>
+ <useSecurity>true</useSecurity>
+ <systemMessage>
+ <![CDATA[
+ <h2>jBPM-(a)version.id@ QA Environment</h2>
+
+ <table>
+ <tr><th align=left>jBPM:</th><td>@hudson.jbpm.url@</td></tr>
+ </table>
+]]>
+ </systemMessage>
+ <jdks/>
+ <slaves/>
+ <quietPeriod>5</quietPeriod>
+</hudson>
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/hudson/hudson-home/config.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml
===================================================================
--- jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml (rev 0)
+++ jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hudson.tasks.Mailer-DescriptorImpl>
+ <defaultSuffix></defaultSuffix>
+ <hudsonUrl>http://@hudson.host@:@hudson.http.port@/hudson/</hudsonUrl>
+ <adminAddress>thomas.diesler(a)jboss.com</adminAddress>
+ <smtpHost>@hudson.smtp.host@</smtpHost>
+</hudson.tasks.Mailer-DescriptorImpl>
Property changes on: jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Mailer.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Maven.xml
===================================================================
--- jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Maven.xml (rev 0)
+++ jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Maven.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,9 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hudson.tasks.Maven_-DescriptorImpl>
+ <installations>
+ <hudson.tasks.Maven_-MavenInstallation>
+ <name>apache-maven</name>
+ <mavenHome>@hudson.maven.path@</mavenHome>
+ </hudson.tasks.Maven_-MavenInstallation>
+ </installations>
+</hudson.tasks.Maven_-DescriptorImpl>
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/hudson/hudson-home/hudson.tasks.Maven.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/hudson/hudson-home/jobs/jBPM4/config.xml
===================================================================
--- jbpm4/indentity/trunk/hudson/hudson-home/jobs/jBPM4/config.xml (rev 0)
+++ jbpm4/indentity/trunk/hudson/hudson-home/jobs/jBPM4/config.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<hudson.maven.MavenModuleSet>
+ <rootModule>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm</artifactId>
+ </rootModule>
+ <goals>test</goals>
+ <reporters/>
+ <scm class="hudson.scm.SubversionSCM">
+ <locations>
+ <hudson.scm.SubversionSCM_-ModuleLocation>
+ <remote>@hudson.jbpm.url@</remote>
+ <local>jpdl</local>
+ </hudson.scm.SubversionSCM_-ModuleLocation>
+ </locations>
+ <useUpdate>true</useUpdate>
+ <browser class="hudson.scm.browsers.ViewSVN">
+ <url>http://fisheye.jboss.com/browse/JbpmSvn/</url>
+ </browser>
+ </scm>
+ <canRoam>true</canRoam>
+ <disabled>false</disabled>
+ <triggers class="vector"/>
+ <keepDependencies>false</keepDependencies>
+ <properties/>
+ <description></description>
+ <actions class="vector"/>
+</hudson.maven.MavenModuleSet>
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/hudson/hudson-home/jobs/jBPM4/config.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/pom.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/pom.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/pom.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ====================================================================== -->
+<!-- -->
+<!-- JBoss, the OpenSource J2EE webOS -->
+<!-- -->
+<!-- Distributable under LGPL license. -->
+<!-- See terms of license at http://www.gnu.org. -->
+<!-- -->
+<!-- ====================================================================== -->
+
+<!-- $Id$ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <name>JBoss jBPM 4 - Identity Core</name>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm-identity</artifactId>
+ <packaging>jar</packaging>
+
+ <!-- Parent -->
+ <parent>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ </parent>
+
+ <!-- Properties -->
+ <properties>
+
+ </properties>
+
+ <!-- Dependencies -->
+ <dependencies>
+ <!-- jBPM Dependencies -->
+ <dependency>
+ <groupId>org.jboss.jbpm.pvm</groupId>
+ <artifactId>pvm-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm-api</artifactId>
+ </dependency>
+
+ <!-- Compile Dependencies -->
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+
+ </dependencies>
+
+
+ <!-- Plugins -->
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <showDeprecation>false</showDeprecation>
+ <testExcludes>
+
+ </testExcludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>hibernate.cfg.xml</exclude>
+ <exclude>jbpm.cfg.xml</exclude>
+ <exclude>jbpm.mail.templates.xml</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>org/jbpm/id/IdentityServiceTest.java</exclude>
+ <exclude>org/jbpm/id/ObjectEqualityDbTest.java</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Property changes on: jbpm4/indentity/trunk/modules/core/pom.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/doc/models.uml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/doc/models.uml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/doc/models.uml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,2104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XPD:PROJECT xmlns:XPD="http://www.staruml.com" version="1">
+<XPD:HEADER>
+<XPD:SUBUNITS>
+</XPD:SUBUNITS>
+<XPD:PROFILES>
+<XPD:PROFILE>UMLStandard</XPD:PROFILE>
+<XPD:PROFILE>ERD</XPD:PROFILE>
+</XPD:PROFILES>
+</XPD:HEADER>
+<XPD:BODY>
+<XPD:OBJ name="DocumentElement" type="UMLProject" guid="SFKy0gfzeUOt9WIuFpuPJwAA">
+<XPD:ATTR name="Title" type="string">Untitled</XPD:ATTR>
+<XPD:ATTR name="#OwnedElements" type="integer">5</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLModel" guid="MmlfE7IrhkaBnJGisyKhAwAA">
+<XPD:ATTR name="Name" type="string">Use Case Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">useCaseModel</XPD:ATTR>
+<XPD:REF name="Namespace">SFKy0gfzeUOt9WIuFpuPJwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLUseCaseDiagram" guid="Lre0gSFS5kyvvJRm2jE/iwAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">MmlfE7IrhkaBnJGisyKhAwAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLUseCaseDiagramView" guid="prGt17glb0m5rNIgkyAUCgAA">
+<XPD:REF name="Diagram">Lre0gSFS5kyvvJRm2jE/iwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[1]" type="UMLModel" guid="VXiDLgpRU0OwRgwSvXn4gwAA">
+<XPD:ATTR name="Name" type="string">Analysis Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR>
+<XPD:REF name="Namespace">SFKy0gfzeUOt9WIuFpuPJwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="YqxKUxZYckG8E48rhS13TAAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="DiagramType" type="string">RobustnessDiagram</XPD:ATTR>
+<XPD:REF name="DiagramOwner">VXiDLgpRU0OwRgwSvXn4gwAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="cwXqF9WhRUeKn8BXIRTJkAAA">
+<XPD:REF name="Diagram">YqxKUxZYckG8E48rhS13TAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[2]" type="UMLModel" guid="2VWhDnmwo0ix2f/qWIJoQQAA">
+<XPD:ATTR name="Name" type="string">Design Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">designModel</XPD:ATTR>
+<XPD:REF name="Namespace">SFKy0gfzeUOt9WIuFpuPJwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="LD6gEBruw0KnrfR/LeUZawAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
+<XPD:REF name="DiagramOwner">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="YrSY0VG8w02y8rpl+N2f/QAA">
+<XPD:REF name="Diagram">LD6gEBruw0KnrfR/LeUZawAA</XPD:REF>
+<XPD:ATTR name="#OwnedViews" type="integer">15</XPD:ATTR>
+<XPD:OBJ name="OwnedViews[0]" type="UMLClassView" guid="L2HdIRUnB0KXWhOPLM7ZpgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">132</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">188</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">93</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">98</XPD:ATTR>
+<XPD:REF name="Model">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="GPE+JFO9iE+R/MZOP7vNlQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="ZSAN1lAw9kWgAfyXQTMU7AAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">User</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="NZFWyMOt2U6zPNlH5ldSIwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="MFa0e2rvCEW8MhBe60umswAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="PCheRuZpRE2Cu7BHAZygzQAA">
+<XPD:REF name="Model">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="3X85kOLWpUiaGCtvLd14vgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="PISF5PqtpUK/sqjlfUCDKgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[1]" type="UMLClassView" guid="E500kzt0P0SHU5an75+xnAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">520</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">192</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">86</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">72</XPD:ATTR>
+<XPD:REF name="Model">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="FBTxJQnx70W37IBq7WHITAAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="Byx4uX107U2HVPPCi/206wAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Group</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="Cjxi6bnhiESc4wQO7J7gWQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="R4siFGcmx0ml/fKsC5Ga6AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="Ix54/fgyE0OgAFdJsnDHdQAA">
+<XPD:REF name="Model">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="wYOONhbS00e6hVsC/nMJlgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="v1nVF813xESep4TRjSoR1gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[2]" type="UMLClassView" guid="l+E+cqk2k0uv4Rb7dTLqMAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">340</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">188</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">80</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">46</XPD:ATTR>
+<XPD:REF name="Model">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="gvAMAwhucU6rzIAiMAR+OgAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="pJT+G+IaZ0+5CoKVQt/2KgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Membership</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="/T4QK0Euy0elA8MGWEeeZAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="SrUMoXaLW0axt2cZgQa2ywAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="PRH3gL3GZ02sv0aEnkuYLwAA">
+<XPD:REF name="Model">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="raOvHDd4uUS/RR/IVf6+PgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="giZaGg0cQEabhP5Lsf4/TAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[3]" type="UMLAssociationView" guid="W5n7V+vwlUGjMFnJf37MogAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">520,208;419,208</XPD:ATTR>
+<XPD:REF name="Model">QhRocEhIrkaE5uj2ohPq5gAA</XPD:REF>
+<XPD:REF name="Head">l+E+cqk2k0uv4Rb7dTLqMAAA</XPD:REF>
+<XPD:REF name="Tail">E500kzt0P0SHU5an75+xnAAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="dbHwqetg8kmzdqQoUlJWswAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">QhRocEhIrkaE5uj2ohPq5gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="1OBnuYS3G0OvhFYBVoRDXQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">QhRocEhIrkaE5uj2ohPq5gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="s4VGjXkWCEiW40SU2m6OrAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">QhRocEhIrkaE5uj2ohPq5gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="lmAnsiNM3UaEmq2J1weEsgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">0JXs2qIxuUmGr64mRyKhLAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="gijKfDnYMECeJARlV0Nf7gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">soqpOs+N+EW0aZFgmrucIgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="sV1/SH8e7Ue0EB+tKuDwnQAA">
+<XPD:ATTR name="Alpha" type="real">-0,750928729856491</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">20,5182845286832</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">0JXs2qIxuUmGr64mRyKhLAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="E8hD81MhbE2Ah3mfMHzB3AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">soqpOs+N+EW0aZFgmrucIgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="k359rPVc6kWREynY5VpOagAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">0JXs2qIxuUmGr64mRyKhLAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="Y6OHTzw26EOpFDT0eLjFXAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">soqpOs+N+EW0aZFgmrucIgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="Wmi3PHMvV0izAPrirJdSRQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1004</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-968</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">0JXs2qIxuUmGr64mRyKhLAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="2H4gUzEPG0GLFhscXPMshwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1004</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-968</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">soqpOs+N+EW0aZFgmrucIgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[4]" type="UMLClassView" guid="I32qylNMgUK3mfG9ixTzTgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">164</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">76</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">60</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">30</XPD:ATTR>
+<XPD:ATTR name="AutoResize" type="boolean">True</XPD:ATTR>
+<XPD:REF name="Model">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="eHlwSqzogEqoFv6ZPW/vaQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="sjszB0daZkyTD1FLp7/FFgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Property</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="ZdBRUryn00W9y1db8Dpy9gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="KnsOauU6fU64kJZKJn6FeAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="fgxJfmJNK0qtFwijq/U4wAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="mEqfMFRXcUq2vdhCvdFzqwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="Sxa3OS4Ye025alDKatOrcQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[5]" type="UMLAssociationView" guid="+3pDc3s10k+dylAT4cTgfAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">224,208;340,208</XPD:ATTR>
+<XPD:REF name="Model">Fj6ASOgcyECxoYQZUWzkzAAA</XPD:REF>
+<XPD:REF name="Head">l+E+cqk2k0uv4Rb7dTLqMAAA</XPD:REF>
+<XPD:REF name="Tail">L2HdIRUnB0KXWhOPLM7ZpgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="PtY42ndC6Ui0UHMIUQmAlQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">Fj6ASOgcyECxoYQZUWzkzAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="C5KX2a7bV0ieV3QO7iucHAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">Fj6ASOgcyECxoYQZUWzkzAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="Xtxm7iLNKkSOtX/rx4nY4AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">Fj6ASOgcyECxoYQZUWzkzAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="tC5K3gOzDkycYmSm1wLziAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">gilud8NU0kmzD1wV9qEyXQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="EYrhrmuI6UGG/zIPivtajAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">OF9NCyGii06fGXHEe8x2rQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="Mjj895W9A024aab3DXHOqwAA">
+<XPD:ATTR name="Alpha" type="real">0,588002859957923</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">21,6333076527839</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">gilud8NU0kmzD1wV9qEyXQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="wyPXuYcslU+z1jCzzf/dSwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">OF9NCyGii06fGXHEe8x2rQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="QIfQxO8ksU6m2ryXfrz+3wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">gilud8NU0kmzD1wV9qEyXQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="PE6xEyD5T0+SnnDpgq3cwwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">OF9NCyGii06fGXHEe8x2rQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="f+lYO4RsvUCHDffrTWdUdQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1004</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-968</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">gilud8NU0kmzD1wV9qEyXQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="c02edfyeO0OWXROuRqBEEQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1004</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-968</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">OF9NCyGii06fGXHEe8x2rQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[6]" type="UMLClassView" guid="QMFbZuboe0ecFo6y0DORigAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">324</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">40</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">109</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">73</XPD:ATTR>
+<XPD:REF name="Model">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="Ec7ZKYI7IkiYIY7A1E1bngAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="uubzIUcaDEuokGPfa7m5SgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Identity</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="SmxkuZyWh0qA3LZHFViPkQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="iS8KUBmlmkiQqrxthyjfOgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="WiOfDt4Gc0ScTBymY0XAQAAA">
+<XPD:REF name="Model">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="FtUTKGcdEU2VslTd4qBTdQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="MUQnZMVWvEGBT5zf6s+VlQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[7]" type="UMLAssociationView" guid="olV5jVIJkUCkNM5V1aRuxgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">223,100;324,100</XPD:ATTR>
+<XPD:REF name="Model">nt47VeFLgE2DKmj6jnBJsgAA</XPD:REF>
+<XPD:REF name="Head">QMFbZuboe0ecFo6y0DORigAA</XPD:REF>
+<XPD:REF name="Tail">I32qylNMgUK3mfG9ixTzTgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="78HwQ5VAf0mKUjDAZlSv+gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">nt47VeFLgE2DKmj6jnBJsgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="0XvbOz1WIECUEovZiFMyBQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">nt47VeFLgE2DKmj6jnBJsgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="Pdrud5iH90ir4+RUn+5zyAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">nt47VeFLgE2DKmj6jnBJsgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="ZV9bIgO/cEa2T1i3gP2RgwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">zQnxl/F/akaOYTyJZmmaWAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="ohf1xcO4+0SBEj6xa2yk0wAA">
+<XPD:ATTR name="Alpha" type="real">0,348770906260332</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">35,1140997321589</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">+properties</XPD:ATTR>
+<XPD:REF name="Model">bRIeqXEQUEq6yYT2Bh73fgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="sb2xeiKxfkqoQZAupd/eRQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">zQnxl/F/akaOYTyJZmmaWAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="WW+cbl/U6kOcqOl7y3BhawAA">
+<XPD:ATTR name="Alpha" type="real">-1,07685436154523</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">14,7648230602334</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">bRIeqXEQUEq6yYT2Bh73fgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="3ECDAGInrUCw2A3lQ5/G2QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">zQnxl/F/akaOYTyJZmmaWAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="pFRi4mBs60iDLHyD1592FgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">bRIeqXEQUEq6yYT2Bh73fgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="bLQI36E5I0euChpmnVMjpQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">zQnxl/F/akaOYTyJZmmaWAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="pliCSpFyREq7LYrItI84jgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">bRIeqXEQUEq6yYT2Bh73fgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[8]" type="UMLGeneralizationView" guid="k91NXSq4rUCcYGXuCoL52wAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">180,188;180,156;376,156;376,112</XPD:ATTR>
+<XPD:REF name="Model">jScvqiffCkWS63+XW17yvQAA</XPD:REF>
+<XPD:REF name="Head">QMFbZuboe0ecFo6y0DORigAA</XPD:REF>
+<XPD:REF name="Tail">L2HdIRUnB0KXWhOPLM7ZpgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="6Rjd5wogjkikgsTLr+hQowAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">jScvqiffCkWS63+XW17yvQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="sG+MI8BsDEGYnxXsbuQkXQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">jScvqiffCkWS63+XW17yvQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="st5jQWrG2E+BZpdDJIWZ5QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">jScvqiffCkWS63+XW17yvQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[9]" type="UMLGeneralizationView" guid="HfXQ5YktLkyuJ9C4svEcgwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">376,188;376,112</XPD:ATTR>
+<XPD:REF name="Model">kMS+BSoX8kiIzvTJ0cLsDwAA</XPD:REF>
+<XPD:REF name="Head">QMFbZuboe0ecFo6y0DORigAA</XPD:REF>
+<XPD:REF name="Tail">l+E+cqk2k0uv4Rb7dTLqMAAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="CtFgC3GAeEewRNRMUcaF7wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">kMS+BSoX8kiIzvTJ0cLsDwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="sF+4M0BWg0OcvQBFaCqW8QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">kMS+BSoX8kiIzvTJ0cLsDwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="rfKGy1SYXk+nsTfVm2e2rQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">kMS+BSoX8kiIzvTJ0cLsDwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[10]" type="UMLGeneralizationView" guid="hpD9m8hdjkuXekiShHOpBgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">568,192;568,156;376,156;376,112</XPD:ATTR>
+<XPD:REF name="Model">4aX/GFTn8EyXxIVomfyQ3gAA</XPD:REF>
+<XPD:REF name="Head">QMFbZuboe0ecFo6y0DORigAA</XPD:REF>
+<XPD:REF name="Tail">E500kzt0P0SHU5an75+xnAAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="Y/u2vRvanUevrfAKoOHLfgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">4aX/GFTn8EyXxIVomfyQ3gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="USeRZdDEYUiAZ6LSZLvBPAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">4aX/GFTn8EyXxIVomfyQ3gAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="MMp8gtSwq0aiLyQ8bDXzHwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">4aX/GFTn8EyXxIVomfyQ3gAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[11]" type="UMLClassView" guid="CZ89By4EIUyI3CRYe6yjJwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">164</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">36</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">72</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">30</XPD:ATTR>
+<XPD:ATTR name="AutoResize" type="boolean">True</XPD:ATTR>
+<XPD:REF name="Model">FACTDREeV0mbJsmh5kHXYgAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="L4X/bDhqDEKmer6mBl+pUgAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="hELH/po0VkmgOK7Tm4sWpgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">Permission</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="adOT2Tu/RkS/kIOVYE6yHwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="6t5NwcpMI06wrpeAdew8PgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="x17Xjk6SX0eNlHGvJpmxbwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">FACTDREeV0mbJsmh5kHXYgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="vjfwcEizSkumg6DsL8VLLAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">FACTDREeV0mbJsmh5kHXYgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="crMBoRxUaUO5o3pewfhz6QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">FACTDREeV0mbJsmh5kHXYgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[12]" type="UMLAssociationView" guid="3T+jKUvfOUetJbB3ng7nXgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">235,56;324,56</XPD:ATTR>
+<XPD:REF name="Model">Gql7ZxA7NUOTF94WRCKJ2QAA</XPD:REF>
+<XPD:REF name="Head">QMFbZuboe0ecFo6y0DORigAA</XPD:REF>
+<XPD:REF name="Tail">CZ89By4EIUyI3CRYe6yjJwAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="PjCe4HcL60u9kK5Ry++MVwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">Gql7ZxA7NUOTF94WRCKJ2QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="FJxt5nQ6NUqVrDXkcGYaUwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">Gql7ZxA7NUOTF94WRCKJ2QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="z+AExyvbLkCBPVfFbjMyDgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">Gql7ZxA7NUOTF94WRCKJ2QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="GDJ3MHW7u0KIGKrMBc3CEwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">sOc2bvULS0WTKJUYaZpUqwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="f7kZt9Z9C0WOS8o/d+JisgAA">
+<XPD:ATTR name="Alpha" type="real">0,314231825596509</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">42,0594816896262</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">+permissions</XPD:ATTR>
+<XPD:REF name="Model">NI3mXjy5GE6jWXrj7AJUDgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="c4Z6Mva2AUCX6csUAbpI1AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">sOc2bvULS0WTKJUYaZpUqwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="bR1JwusL+EqHkWICU4Lw/AAA">
+<XPD:ATTR name="Alpha" type="real">-0,540419206153081</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">17,4928556845359</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">NI3mXjy5GE6jWXrj7AJUDgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="4PpTtWgYxkKWRa+N6gupIAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">sOc2bvULS0WTKJUYaZpUqwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="3pbTtoUVkkGY33OU53SpjQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">NI3mXjy5GE6jWXrj7AJUDgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="wBkIgbbNEEqWXxxK+MMG4QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">sOc2bvULS0WTKJUYaZpUqwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="/2fLJ4PTRkK+aBZPGbXfxAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">NI3mXjy5GE6jWXrj7AJUDgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[13]" type="UMLAssociationView" guid="3eBOJwYoDECDEdMphMhvzQAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">164,90;96,90;96,224;132,224</XPD:ATTR>
+<XPD:REF name="Model">BV50PoLPGk6ILDiJJDDtIAAA</XPD:REF>
+<XPD:REF name="Head">L2HdIRUnB0KXWhOPLM7ZpgAA</XPD:REF>
+<XPD:REF name="Tail">I32qylNMgUK3mfG9ixTzTgAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="KUNywwz+v06zFvdrRhw6nQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">BV50PoLPGk6ILDiJJDDtIAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="S+wS9Htrj0S6r5f1cSXkpQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">BV50PoLPGk6ILDiJJDDtIAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="Ogcf4OjenU+o7fQDHeAaXAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">BV50PoLPGk6ILDiJJDDtIAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="sxXKO8gzekeyW3jQBcb8ngAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">daXt33JgCkCECD/gf4IpvgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="9wxzZtYrFUyBHvFZTvxa4QAA">
+<XPD:ATTR name="Alpha" type="real">-0,179853539792487</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">44,7213595499958</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">+preferences</XPD:ATTR>
+<XPD:REF name="Model">5FT2YpPYNUCBElvb9K8eygAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="g5Npiue9oEyxcM2aJl0xlwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">daXt33JgCkCECD/gf4IpvgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="/FcZb+MCjkmv0Tq7Q69WVgAA">
+<XPD:ATTR name="Alpha" type="real">0,620249823820819</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">17,2046505340853</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">5FT2YpPYNUCBElvb9K8eygAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="1lKxOkupSU+kTCLuelpzFgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">daXt33JgCkCECD/gf4IpvgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="Si1+loMA0kWcFI8sI++KDQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">5FT2YpPYNUCBElvb9K8eygAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="6zTN9eorWU6V0SH1If1vnwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1008</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1028</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">daXt33JgCkCECD/gf4IpvgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="VfIos/OQtU+xI6hNP/05fwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1008</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1028</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">5FT2YpPYNUCBElvb9K8eygAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[14]" type="UMLAssociationView" guid="ZeoFoac3WE6KXIpyCIgIhQAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">584,192;584,172;676,172;676,227;605,227</XPD:ATTR>
+<XPD:REF name="Model">LoaGoSPyIkCr07RS19RJwgAA</XPD:REF>
+<XPD:REF name="Head">E500kzt0P0SHU5an75+xnAAA</XPD:REF>
+<XPD:REF name="Tail">E500kzt0P0SHU5an75+xnAAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="jNzzmMOAGkiUIz1nRXhQdAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">LoaGoSPyIkCr07RS19RJwgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="ZCBHEMsIYkmNXGHsASeT0QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:REF name="Model">LoaGoSPyIkCr07RS19RJwgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="eq6ZJ28G7Uejf3JBIWV85wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">LoaGoSPyIkCr07RS19RJwgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="aQTlPaHwekmHeJLj1gADdQAA">
+<XPD:ATTR name="Alpha" type="real">0,345555453103004</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">26,5706605111728</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">+children</XPD:ATTR>
+<XPD:REF name="Model">iuAemlPRREaMAXICRLp2RwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="zPkxUjcRHEu5WvRCyuU0OwAA">
+<XPD:ATTR name="Alpha" type="real">-0,631079138194524</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">32,2024843762092</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">+parent</XPD:ATTR>
+<XPD:REF name="Model">xqS9idj2IkCHkImTf1WWBQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="j56a+gafU0S04zqYZOJl2wAA">
+<XPD:ATTR name="Alpha" type="real">-0,885066271334398</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">14,2126704035519</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">iuAemlPRREaMAXICRLp2RwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="VKXIv3oY2EaY2Qz5aovRIwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">xqS9idj2IkCHkImTf1WWBQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="0aaDYyD3K0ahuToSb/bt7gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">iuAemlPRREaMAXICRLp2RwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="SLYQ0SXbD0ampnxwK0rn3gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">xqS9idj2IkCHkImTf1WWBQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="HSoheQFynUGZ8ggqtgJXYAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">iuAemlPRREaMAXICRLp2RwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="uVZPpknS7kSuTy4o+T8G/QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">xqS9idj2IkCHkImTf1WWBQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedDiagrams[1]" type="UMLClassDiagram" guid="9D2qHFyxbUmfQy4rNNbgawAA">
+<XPD:ATTR name="Name" type="string">ER(IE) Diagram1</XPD:ATTR>
+<XPD:ATTR name="DiagramType" type="string">ER(IE) Diagram</XPD:ATTR>
+<XPD:REF name="DiagramOwner">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="R/rfvrw0fUufhpPoHK0MnAAA">
+<XPD:REF name="Diagram">9D2qHFyxbUmfQy4rNNbgawAA</XPD:REF>
+<XPD:ATTR name="#OwnedViews" type="integer">8</XPD:ATTR>
+<XPD:OBJ name="OwnedViews[0]" type="UMLClassView" guid="soP9ko6CbUGyz/cZ4Mx6cgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="ShowExtendedNotation" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">44</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">56</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">142</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">144</XPD:ATTR>
+<XPD:ATTR name="StereotypeDisplay" type="UMLStereotypeDisplayKind">sdkNone</XPD:ATTR>
+<XPD:ATTR name="ShowOperationSignature" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentStereotype" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentVisibility" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="9jUFKk93qUypAqvwn9ZflQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="ISeVwP3ukE6kjCpgv7EcgAAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">USER</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="HH2/OYE4B0OyimfqiKNYpQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="qTahG3iHAUmG9LtbAk4yoQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="mtvq3WRJJ0isWgu9fHAT4wAA">
+<XPD:REF name="Model">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="JNzmUNX1IkqVkYfApY3v8AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="E3Q08iGMCEaNKzPT3uM1jQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[1]" type="UMLClassView" guid="V3lPgW2pFU2SCAI9JpzYnwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="ShowExtendedNotation" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">612</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">56</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">128</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">118</XPD:ATTR>
+<XPD:ATTR name="StereotypeDisplay" type="UMLStereotypeDisplayKind">sdkNone</XPD:ATTR>
+<XPD:ATTR name="ShowOperationSignature" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentStereotype" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentVisibility" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="Rjq8j++wr0yNBEG+S837IgAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="bG/6lZvegUG1+CKWEJqjQgAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">GROUP</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="lTGMNWcV1UiNUGd5SUaSlwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="7cn4CGzZhkmOWjSwsiu1TgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="BAgobnrLT0WRDViCG3kMnQAA">
+<XPD:REF name="Model">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="Smp2gAII5kGIXwz8aiAb3QAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="/qhOVS1csEmJ5fk4ExsGTwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[2]" type="UMLClassView" guid="sbd2Gz/ktEOnP43bY99rBwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="ShowExtendedNotation" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">216</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">252</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">90</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">51</XPD:ATTR>
+<XPD:ATTR name="StereotypeDisplay" type="UMLStereotypeDisplayKind">sdkNone</XPD:ATTR>
+<XPD:ATTR name="ShowOperationSignature" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentStereotype" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentVisibility" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">KatzBbwK80WLqpTFygv5nwAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="bZtDoHtVbUmbh2kX9y0AeQAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="shNJc+eRtkGxOyxQa5x83AAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">PERMISSION</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="BmMyQoOjB0eCwOe6xMhO0gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="SouKSShBJ0yFjRo+GXbfcgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="AL+A2Rhri0uEUuTAtEvw0QAA">
+<XPD:REF name="Model">KatzBbwK80WLqpTFygv5nwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="hCpXAlnj6UWg66moBPvUZQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">KatzBbwK80WLqpTFygv5nwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="onvlzSRsM0uUXoPyWsQUiQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">KatzBbwK80WLqpTFygv5nwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[3]" type="UMLClassView" guid="1/33Y0gMMUW31b/FxQ+QjwAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="ShowExtendedNotation" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">308</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">56</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">143</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">105</XPD:ATTR>
+<XPD:ATTR name="StereotypeDisplay" type="UMLStereotypeDisplayKind">sdkNone</XPD:ATTR>
+<XPD:ATTR name="ShowOperationSignature" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentStereotype" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentVisibility" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="SYSO9KBDO0C5HlbgsL5ahwAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="s/W/LKSE7k6WJB//YS2rpQAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">MEMBERSHIP</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="pqW/pFOEt0CX7HltHHw/rAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="PsA/QyWr6k+PnVWwxkr4BQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="C+WgmpajZ06aflKQkVhGWQAA">
+<XPD:REF name="Model">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="Z822K8KJIUe4S3rRJjMRTAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="rlmlfa9DU0WEaaLd7jXZ5AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[4]" type="UMLAssociationView" guid="5POJ1oGvBUSRa1kSdgvWeQAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="ShowExtendedNotation" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">308,116;185,116</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentStereotype" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentVisibility" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">WHScUyOIrkiop7/BOTSpKAAA</XPD:REF>
+<XPD:REF name="Head">soP9ko6CbUGyz/cZ4Mx6cgAA</XPD:REF>
+<XPD:REF name="Tail">1/33Y0gMMUW31b/FxQ+QjwAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="BaarGZxnuEmtyuwcHr2KUQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">WHScUyOIrkiop7/BOTSpKAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="ljR3hJYzr0yWwyORY9twvQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="Text" type="string"><<identifying>></XPD:ATTR>
+<XPD:REF name="Model">WHScUyOIrkiop7/BOTSpKAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="81X7p2yA6UKseafg1CGWUgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">WHScUyOIrkiop7/BOTSpKAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="ev3aqh/430C1gbObY5BlegAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">adEtdnQRk0qRVSxgPlaFGgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="EFRVWqUYsUS9IZZM1swL0gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">hEakj/zN50ehZ6WP7E05wAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="MeeG2NSHI0CKtijqgxE9HAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">adEtdnQRk0qRVSxgPlaFGgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="PpBsMs0fEEuLzojoB5MP0gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">hEakj/zN50ehZ6WP7E05wAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="4xa0aNdBW0m3hihbrq9cYAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">adEtdnQRk0qRVSxgPlaFGgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="+tjncZmPCEeDCsyPO6eTSQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">hEakj/zN50ehZ6WP7E05wAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="5ki3yYgd9kSg4EeW1mHv2gAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">adEtdnQRk0qRVSxgPlaFGgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="sX2BZkX39UOSC9mdI9eGhAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">hEakj/zN50ehZ6WP7E05wAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[5]" type="UMLClassView" guid="ymgsmpJUxEWXvPUiSRqLtgAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="ShowExtendedNotation" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">444</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">228</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">128</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">64</XPD:ATTR>
+<XPD:ATTR name="StereotypeDisplay" type="UMLStereotypeDisplayKind">sdkNone</XPD:ATTR>
+<XPD:ATTR name="ShowOperationSignature" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentStereotype" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentVisibility" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">fchUG9V6p0e3vWPnCiWIigAA</XPD:REF>
+<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="mVgPOvwaR0Cdp0E6ixIfswAA">
+<XPD:OBJ name="NameLabel" type="LabelView" guid="niIZns3nC0+xekdf82L8MQAA">
+<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">PROPERTY</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="EAkevls+zkCz6aGqSKdhngAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="LabelView" guid="d/K4repfTUaoiEYqyzq/3AAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="TLu4PDlkEkynKOHIBPbzdQAA">
+<XPD:REF name="Model">fchUG9V6p0e3vWPnCiWIigAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="9Wxy/v8YOESColEkIKBLewAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">fchUG9V6p0e3vWPnCiWIigAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="nBY4pl+qqkquTnf+sUpAcAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">fchUG9V6p0e3vWPnCiWIigAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[6]" type="UMLAssociationView" guid="twffHrKJYkaFxkbR2Ti9MAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="ShowExtendedNotation" type="boolean">True</XPD:ATTR>
+<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
+<XPD:ATTR name="Points" type="Points">450,128;612,128</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentStereotype" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="ShowCompartmentVisibility" type="boolean">False</XPD:ATTR>
+<XPD:REF name="Model">mhyaE4CKr0SEwmrnEpuK7wAA</XPD:REF>
+<XPD:REF name="Head">V3lPgW2pFU2SCAI9JpzYnwAA</XPD:REF>
+<XPD:REF name="Tail">1/33Y0gMMUW31b/FxQ+QjwAA</XPD:REF>
+<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="ROAP9xLxeEu7TRCO9FaD9wAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">mhyaE4CKr0SEwmrnEpuK7wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="g+KVCakhNE6rgZzQROd6NQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="Text" type="string"><<identifying>></XPD:ATTR>
+<XPD:REF name="Model">mhyaE4CKr0SEwmrnEpuK7wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="zrU+z7IxY0ywNsHNj4P8DwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
+<XPD:REF name="Model">mhyaE4CKr0SEwmrnEpuK7wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="jEFsKPFcPUqxdxgWV9ogKgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">QR7i8Rd8RUSbJe5lydEm5QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="9uVEk7fkQkycyXqWPyQ7DQAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">ExNGgTikIkanuowy7Sn8QwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="WqtwUmMvFUi2KLwrOZwJFgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">QR7i8Rd8RUSbJe5lydEm5QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="maLd7KFPlk+qDCsTX3neQwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">*</XPD:ATTR>
+<XPD:REF name="Model">ExNGgTikIkanuowy7Sn8QwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="u7jZnfO/g0i8X2SumjkgOwAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
+<XPD:REF name="Model">QR7i8Rd8RUSbJe5lydEm5QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="6lKyiYepIUqBy87nV2YwMgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
+<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
+<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
+<XPD:REF name="Model">ExNGgTikIkanuowy7Sn8QwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="vXHlD+ikrEuub6qQYlQhSAAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">QR7i8Rd8RUSbJe5lydEm5QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="8BzwGEjEB021SVZm6vYZHgAA">
+<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
+<XPD:REF name="Model">ExNGgTikIkanuowy7Sn8QwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedViews[7]" type="UMLNoteView" guid="+0P5DeJA7UOCAm6YU2HucAAA">
+<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
+<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
+<XPD:ATTR name="Left" type="integer">276</XPD:ATTR>
+<XPD:ATTR name="Top" type="integer">208</XPD:ATTR>
+<XPD:ATTR name="Width" type="integer">193</XPD:ATTR>
+<XPD:ATTR name="Height" type="integer">73</XPD:ATTR>
+<XPD:ATTR name="Text" type="string">TODO: Complete this
+</XPD:ATTR>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:ATTR name="#OwnedElements" type="integer">33</XPD:ATTR>
+<XPD:OBJ name="OwnedElements[0]" type="UMLClass" guid="CgxQ3apT6EW3ma9tmpb6BQAA">
+<XPD:ATTR name="Name" type="string">User</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">L2HdIRUnB0KXWhOPLM7ZpgAA</XPD:REF>
+<XPD:REF name="Views[1]">PCheRuZpRE2Cu7BHAZygzQAA</XPD:REF>
+<XPD:REF name="Views[2]">3X85kOLWpUiaGCtvLd14vgAA</XPD:REF>
+<XPD:REF name="Views[3]">PISF5PqtpUK/sqjlfUCDKgAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">jScvqiffCkWS63+XW17yvQAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">9</XPD:ATTR>
+<XPD:REF name="Associations[0]">JOR1UkTs70arkSiao/lqoQAA</XPD:REF>
+<XPD:REF name="Associations[1]">OPpyFlEZf0+2AD3mg65OhQAA</XPD:REF>
+<XPD:REF name="Associations[2]">XB/v81DVP0au4uVhM+HXrQAA</XPD:REF>
+<XPD:REF name="Associations[3]">xAmC878NTEiZ0Em7K+NzJQAA</XPD:REF>
+<XPD:REF name="Associations[4]">OF9NCyGii06fGXHEe8x2rQAA</XPD:REF>
+<XPD:REF name="Associations[5]">xMLW8bt1sEGLyKtEHgvShwAA</XPD:REF>
+<XPD:REF name="Associations[6]">OwJKeHzbXkmvERbHa3ID+wAA</XPD:REF>
+<XPD:REF name="Associations[7]">UDBA1dP2kkyH8+oWhL0sNgAA</XPD:REF>
+<XPD:REF name="Associations[8]">daXt33JgCkCECD/gf4IpvgAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">5</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="dUelPhxTqkG3FWHeJn6QTAAA">
+<XPD:ATTR name="Name" type="string">id</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="PtYY4wGWXkiGKSzhy+zkkgAA">
+<XPD:ATTR name="Name" type="string">name</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="lqZvT689rU292UmuO8tXEAAA">
+<XPD:ATTR name="Name" type="string">email</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[3]" type="UMLAttribute" guid="l8t49eGwGU+ozDZjo55HEQAA">
+<XPD:ATTR name="Name" type="string">phone</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[4]" type="UMLAttribute" guid="47LvQlCZZkWCjuC+9ZAg7AAA">
+<XPD:ATTR name="Name" type="string">address</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[1]" type="UMLClass" guid="XgXvqt8MvEWJpcTpmlr/gwAA">
+<XPD:ATTR name="Name" type="string">Group</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">E500kzt0P0SHU5an75+xnAAA</XPD:REF>
+<XPD:REF name="Views[1]">Ix54/fgyE0OgAFdJsnDHdQAA</XPD:REF>
+<XPD:REF name="Views[2]">wYOONhbS00e6hVsC/nMJlgAA</XPD:REF>
+<XPD:REF name="Views[3]">v1nVF813xESep4TRjSoR1gAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">4aX/GFTn8EyXxIVomfyQ3gAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">3</XPD:ATTR>
+<XPD:REF name="Associations[0]">soqpOs+N+EW0aZFgmrucIgAA</XPD:REF>
+<XPD:REF name="Associations[1]">xqS9idj2IkCHkImTf1WWBQAA</XPD:REF>
+<XPD:REF name="Associations[2]">iuAemlPRREaMAXICRLp2RwAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">3</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="46gqTAHqMkCJXe+IcOmV0QAA">
+<XPD:ATTR name="Name" type="string">id</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="t2HdkEUdlEGm8o4gj5q7UgAA">
+<XPD:ATTR name="Name" type="string">name</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="qw/q6+smjUK2rl1PjRmfTQAA">
+<XPD:ATTR name="Name" type="string">type</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[2]" type="UMLClass" guid="Ynz++EPVBEO+oLLjSnR28wAA">
+<XPD:ATTR name="Name" type="string">Membership</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">l+E+cqk2k0uv4Rb7dTLqMAAA</XPD:REF>
+<XPD:REF name="Views[1]">PRH3gL3GZ02sv0aEnkuYLwAA</XPD:REF>
+<XPD:REF name="Views[2]">raOvHDd4uUS/RR/IVf6+PgAA</XPD:REF>
+<XPD:REF name="Views[3]">giZaGg0cQEabhP5Lsf4/TAAA</XPD:REF>
+<XPD:ATTR name="#Generalizations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Generalizations[0]">kMS+BSoX8kiIzvTJ0cLsDwAA</XPD:REF>
+<XPD:REF name="Generalizations[1]">O4ofQXJOAUSeIC6hqoTTJwAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Specializations[0]">O4ofQXJOAUSeIC6hqoTTJwAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">5</XPD:ATTR>
+<XPD:REF name="Associations[0]">0JXs2qIxuUmGr64mRyKhLAAA</XPD:REF>
+<XPD:REF name="Associations[1]">mor9QkPqoEOoQVNZPKG6YgAA</XPD:REF>
+<XPD:REF name="Associations[2]">e6IURR4DJU6PWWZd5pxTfgAA</XPD:REF>
+<XPD:REF name="Associations[3]">X7MImrDBKE6NrwP5xkq4mgAA</XPD:REF>
+<XPD:REF name="Associations[4]">gilud8NU0kmzD1wV9qEyXQAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="vlBp4sUuTkecblET5hlxLAAA">
+<XPD:ATTR name="Name" type="string">role</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[3]" type="UMLAssociation" guid="QhRocEhIrkaE5uj2ohPq5gAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">W5n7V+vwlUGjMFnJf37MogAA</XPD:REF>
+<XPD:REF name="Views[1]">dbHwqetg8kmzdqQoUlJWswAA</XPD:REF>
+<XPD:REF name="Views[2]">1OBnuYS3G0OvhFYBVoRDXQAA</XPD:REF>
+<XPD:REF name="Views[3]">s4VGjXkWCEiW40SU2m6OrAAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="soqpOs+N+EW0aZFgmrucIgAA">
+<XPD:REF name="Association">QhRocEhIrkaE5uj2ohPq5gAA</XPD:REF>
+<XPD:REF name="Participant">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">gijKfDnYMECeJARlV0Nf7gAA</XPD:REF>
+<XPD:REF name="Views[1]">E8hD81MhbE2Ah3mfMHzB3AAA</XPD:REF>
+<XPD:REF name="Views[2]">Y6OHTzw26EOpFDT0eLjFXAAA</XPD:REF>
+<XPD:REF name="Views[3]">2H4gUzEPG0GLFhscXPMshwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="0JXs2qIxuUmGr64mRyKhLAAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akComposite</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">QhRocEhIrkaE5uj2ohPq5gAA</XPD:REF>
+<XPD:REF name="Participant">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">lmAnsiNM3UaEmq2J1weEsgAA</XPD:REF>
+<XPD:REF name="Views[1]">sV1/SH8e7Ue0EB+tKuDwnQAA</XPD:REF>
+<XPD:REF name="Views[2]">k359rPVc6kWREynY5VpOagAA</XPD:REF>
+<XPD:REF name="Views[3]">Wmi3PHMvV0izAPrirJdSRQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[4]" type="UMLAssociation" guid="VM9fIa9vuk6CCcKKbE/IGQAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="mor9QkPqoEOoQVNZPKG6YgAA">
+<XPD:REF name="Association">VM9fIa9vuk6CCcKKbE/IGQAA</XPD:REF>
+<XPD:REF name="Participant">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="JOR1UkTs70arkSiao/lqoQAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akComposite</XPD:ATTR>
+<XPD:REF name="Association">VM9fIa9vuk6CCcKKbE/IGQAA</XPD:REF>
+<XPD:REF name="Participant">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[5]" type="UMLAssociation" guid="APLkr+xou0qxz6czvTCoFwAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="OPpyFlEZf0+2AD3mg65OhQAA">
+<XPD:REF name="Association">APLkr+xou0qxz6czvTCoFwAA</XPD:REF>
+<XPD:REF name="Participant">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="e6IURR4DJU6PWWZd5pxTfgAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akComposite</XPD:ATTR>
+<XPD:REF name="Association">APLkr+xou0qxz6czvTCoFwAA</XPD:REF>
+<XPD:REF name="Participant">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[6]" type="UMLClass" guid="bvcCRaiVmk+m3reKH7sc/wAA">
+<XPD:ATTR name="Name" type="string">Property</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">I32qylNMgUK3mfG9ixTzTgAA</XPD:REF>
+<XPD:REF name="Views[1]">fgxJfmJNK0qtFwijq/U4wAAA</XPD:REF>
+<XPD:REF name="Views[2]">mEqfMFRXcUq2vdhCvdFzqwAA</XPD:REF>
+<XPD:REF name="Views[3]">Sxa3OS4Ye025alDKatOrcQAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">7</XPD:ATTR>
+<XPD:REF name="Associations[0]">1HHLU4z6WU+sxNUuQoOlOQAA</XPD:REF>
+<XPD:REF name="Associations[1]">ccyCthzuL0ynMgmjR2LhbQAA</XPD:REF>
+<XPD:REF name="Associations[2]">gNRuYdpWTUu4ke5HMyr2PwAA</XPD:REF>
+<XPD:REF name="Associations[3]">2kOQGbCrXkS+2CSfxRDkGAAA</XPD:REF>
+<XPD:REF name="Associations[4]">1bmS+k2w5kWl+OFezOi1LQAA</XPD:REF>
+<XPD:REF name="Associations[5]">bRIeqXEQUEq6yYT2Bh73fgAA</XPD:REF>
+<XPD:REF name="Associations[6]">5FT2YpPYNUCBElvb9K8eygAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[7]" type="UMLAssociation" guid="tWqXaqWsOUK21+3DwxNacAAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="1HHLU4z6WU+sxNUuQoOlOQAA">
+<XPD:ATTR name="Name" type="string">preferences</XPD:ATTR>
+<XPD:REF name="Association">tWqXaqWsOUK21+3DwxNacAAA</XPD:REF>
+<XPD:REF name="Participant">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="XB/v81DVP0au4uVhM+HXrQAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">tWqXaqWsOUK21+3DwxNacAAA</XPD:REF>
+<XPD:REF name="Participant">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[8]" type="UMLAssociation" guid="+9I8v/V/B0mASHY4wocohQAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="xAmC878NTEiZ0Em7K+NzJQAA">
+<XPD:REF name="Association">+9I8v/V/B0mASHY4wocohQAA</XPD:REF>
+<XPD:REF name="Participant">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="X7MImrDBKE6NrwP5xkq4mgAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">+9I8v/V/B0mASHY4wocohQAA</XPD:REF>
+<XPD:REF name="Participant">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[9]" type="UMLAssociation" guid="Fj6ASOgcyECxoYQZUWzkzAAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">+3pDc3s10k+dylAT4cTgfAAA</XPD:REF>
+<XPD:REF name="Views[1]">PtY42ndC6Ui0UHMIUQmAlQAA</XPD:REF>
+<XPD:REF name="Views[2]">C5KX2a7bV0ieV3QO7iucHAAA</XPD:REF>
+<XPD:REF name="Views[3]">Xtxm7iLNKkSOtX/rx4nY4AAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="OF9NCyGii06fGXHEe8x2rQAA">
+<XPD:REF name="Association">Fj6ASOgcyECxoYQZUWzkzAAA</XPD:REF>
+<XPD:REF name="Participant">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">EYrhrmuI6UGG/zIPivtajAAA</XPD:REF>
+<XPD:REF name="Views[1]">wyPXuYcslU+z1jCzzf/dSwAA</XPD:REF>
+<XPD:REF name="Views[2]">PE6xEyD5T0+SnnDpgq3cwwAA</XPD:REF>
+<XPD:REF name="Views[3]">c02edfyeO0OWXROuRqBEEQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="gilud8NU0kmzD1wV9qEyXQAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akComposite</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">Fj6ASOgcyECxoYQZUWzkzAAA</XPD:REF>
+<XPD:REF name="Participant">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">tC5K3gOzDkycYmSm1wLziAAA</XPD:REF>
+<XPD:REF name="Views[1]">Mjj895W9A024aab3DXHOqwAA</XPD:REF>
+<XPD:REF name="Views[2]">QIfQxO8ksU6m2ryXfrz+3wAA</XPD:REF>
+<XPD:REF name="Views[3]">f+lYO4RsvUCHDffrTWdUdQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[10]" type="UMLAssociation" guid="3lrrAkWgykWDUj3lXxO3sQAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="xMLW8bt1sEGLyKtEHgvShwAA">
+<XPD:REF name="Association">3lrrAkWgykWDUj3lXxO3sQAA</XPD:REF>
+<XPD:REF name="Participant">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="ccyCthzuL0ynMgmjR2LhbQAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">3lrrAkWgykWDUj3lXxO3sQAA</XPD:REF>
+<XPD:REF name="Participant">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[11]" type="UMLAssociation" guid="GJI5U/VQkUO2NUlexVcLoAAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="gNRuYdpWTUu4ke5HMyr2PwAA">
+<XPD:ATTR name="Name" type="string">properties</XPD:ATTR>
+<XPD:REF name="Association">GJI5U/VQkUO2NUlexVcLoAAA</XPD:REF>
+<XPD:REF name="Participant">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="OwJKeHzbXkmvERbHa3ID+wAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">GJI5U/VQkUO2NUlexVcLoAAA</XPD:REF>
+<XPD:REF name="Participant">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[12]" type="UMLAssociation" guid="xGUqjxObukWRK2+QIytyMwAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="2kOQGbCrXkS+2CSfxRDkGAAA">
+<XPD:REF name="Association">xGUqjxObukWRK2+QIytyMwAA</XPD:REF>
+<XPD:REF name="Participant">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="UDBA1dP2kkyH8+oWhL0sNgAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">xGUqjxObukWRK2+QIytyMwAA</XPD:REF>
+<XPD:REF name="Participant">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[13]" type="UMLClass" guid="aMse2dPTW0e1cPWgT5yomQAA">
+<XPD:ATTR name="Name" type="string">Identity</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">QMFbZuboe0ecFo6y0DORigAA</XPD:REF>
+<XPD:REF name="Views[1]">WiOfDt4Gc0ScTBymY0XAQAAA</XPD:REF>
+<XPD:REF name="Views[2]">FtUTKGcdEU2VslTd4qBTdQAA</XPD:REF>
+<XPD:REF name="Views[3]">MUQnZMVWvEGBT5zf6s+VlQAA</XPD:REF>
+<XPD:ATTR name="#Specializations" type="integer">3</XPD:ATTR>
+<XPD:REF name="Specializations[0]">jScvqiffCkWS63+XW17yvQAA</XPD:REF>
+<XPD:REF name="Specializations[1]">kMS+BSoX8kiIzvTJ0cLsDwAA</XPD:REF>
+<XPD:REF name="Specializations[2]">4aX/GFTn8EyXxIVomfyQ3gAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">3</XPD:ATTR>
+<XPD:REF name="Associations[0]">Xgr+aMUepEO0epjo0yp2PAAA</XPD:REF>
+<XPD:REF name="Associations[1]">zQnxl/F/akaOYTyJZmmaWAAA</XPD:REF>
+<XPD:REF name="Associations[2]">sOc2bvULS0WTKJUYaZpUqwAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">3</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="J7aOwaRGRkaVjfJcyXP3ZQAA">
+<XPD:ATTR name="Name" type="string">dbid</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">long</XPD:ATTR>
+<XPD:REF name="Owner">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="2MTbkr8DtEmqwwVH3GT2sAAA">
+<XPD:ATTR name="Name" type="string">dbversion</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">int</XPD:ATTR>
+<XPD:REF name="Owner">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="bSnqE8TcbUqrnys25KAPHgAA">
+<XPD:ATTR name="Name" type="string">notes</XPD:ATTR>
+<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
+<XPD:REF name="Owner">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[14]" type="UMLAssociation" guid="U/BzaqoFGkCyqin1PJ+DPAAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="Xgr+aMUepEO0epjo0yp2PAAA">
+<XPD:REF name="Association">U/BzaqoFGkCyqin1PJ+DPAAA</XPD:REF>
+<XPD:REF name="Participant">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="1bmS+k2w5kWl+OFezOi1LQAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">U/BzaqoFGkCyqin1PJ+DPAAA</XPD:REF>
+<XPD:REF name="Participant">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[15]" type="UMLAssociation" guid="nt47VeFLgE2DKmj6jnBJsgAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">olV5jVIJkUCkNM5V1aRuxgAA</XPD:REF>
+<XPD:REF name="Views[1]">78HwQ5VAf0mKUjDAZlSv+gAA</XPD:REF>
+<XPD:REF name="Views[2]">0XvbOz1WIECUEovZiFMyBQAA</XPD:REF>
+<XPD:REF name="Views[3]">Pdrud5iH90ir4+RUn+5zyAAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="bRIeqXEQUEq6yYT2Bh73fgAA">
+<XPD:ATTR name="Name" type="string">properties</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">nt47VeFLgE2DKmj6jnBJsgAA</XPD:REF>
+<XPD:REF name="Participant">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">ohf1xcO4+0SBEj6xa2yk0wAA</XPD:REF>
+<XPD:REF name="Views[1]">WW+cbl/U6kOcqOl7y3BhawAA</XPD:REF>
+<XPD:REF name="Views[2]">pFRi4mBs60iDLHyD1592FgAA</XPD:REF>
+<XPD:REF name="Views[3]">pliCSpFyREq7LYrItI84jgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="zQnxl/F/akaOYTyJZmmaWAAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">nt47VeFLgE2DKmj6jnBJsgAA</XPD:REF>
+<XPD:REF name="Participant">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">ZV9bIgO/cEa2T1i3gP2RgwAA</XPD:REF>
+<XPD:REF name="Views[1]">sb2xeiKxfkqoQZAupd/eRQAA</XPD:REF>
+<XPD:REF name="Views[2]">3ECDAGInrUCw2A3lQ5/G2QAA</XPD:REF>
+<XPD:REF name="Views[3]">bLQI36E5I0euChpmnVMjpQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[16]" type="UMLGeneralization" guid="jScvqiffCkWS63+XW17yvQAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:REF name="Child">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+<XPD:REF name="Parent">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">k91NXSq4rUCcYGXuCoL52wAA</XPD:REF>
+<XPD:REF name="Views[1]">6Rjd5wogjkikgsTLr+hQowAA</XPD:REF>
+<XPD:REF name="Views[2]">sG+MI8BsDEGYnxXsbuQkXQAA</XPD:REF>
+<XPD:REF name="Views[3]">st5jQWrG2E+BZpdDJIWZ5QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[17]" type="UMLGeneralization" guid="kMS+BSoX8kiIzvTJ0cLsDwAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:REF name="Child">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+<XPD:REF name="Parent">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">HfXQ5YktLkyuJ9C4svEcgwAA</XPD:REF>
+<XPD:REF name="Views[1]">CtFgC3GAeEewRNRMUcaF7wAA</XPD:REF>
+<XPD:REF name="Views[2]">sF+4M0BWg0OcvQBFaCqW8QAA</XPD:REF>
+<XPD:REF name="Views[3]">rfKGy1SYXk+nsTfVm2e2rQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[18]" type="UMLGeneralization" guid="4aX/GFTn8EyXxIVomfyQ3gAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:REF name="Child">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+<XPD:REF name="Parent">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">hpD9m8hdjkuXekiShHOpBgAA</XPD:REF>
+<XPD:REF name="Views[1]">Y/u2vRvanUevrfAKoOHLfgAA</XPD:REF>
+<XPD:REF name="Views[2]">USeRZdDEYUiAZ6LSZLvBPAAA</XPD:REF>
+<XPD:REF name="Views[3]">MMp8gtSwq0aiLyQ8bDXzHwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[19]" type="UMLGeneralization" guid="O4ofQXJOAUSeIC6hqoTTJwAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:REF name="Child">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+<XPD:REF name="Parent">Ynz++EPVBEO+oLLjSnR28wAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[20]" type="UMLClass" guid="FACTDREeV0mbJsmh5kHXYgAA">
+<XPD:ATTR name="Name" type="string">Permission</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">CZ89By4EIUyI3CRYe6yjJwAA</XPD:REF>
+<XPD:REF name="Views[1]">x17Xjk6SX0eNlHGvJpmxbwAA</XPD:REF>
+<XPD:REF name="Views[2]">vjfwcEizSkumg6DsL8VLLAAA</XPD:REF>
+<XPD:REF name="Views[3]">crMBoRxUaUO5o3pewfhz6QAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Associations[0]">NI3mXjy5GE6jWXrj7AJUDgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[21]" type="UMLAssociation" guid="Gql7ZxA7NUOTF94WRCKJ2QAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">3T+jKUvfOUetJbB3ng7nXgAA</XPD:REF>
+<XPD:REF name="Views[1]">PjCe4HcL60u9kK5Ry++MVwAA</XPD:REF>
+<XPD:REF name="Views[2]">FJxt5nQ6NUqVrDXkcGYaUwAA</XPD:REF>
+<XPD:REF name="Views[3]">z+AExyvbLkCBPVfFbjMyDgAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="NI3mXjy5GE6jWXrj7AJUDgAA">
+<XPD:ATTR name="Name" type="string">permissions</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">Gql7ZxA7NUOTF94WRCKJ2QAA</XPD:REF>
+<XPD:REF name="Participant">FACTDREeV0mbJsmh5kHXYgAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">f7kZt9Z9C0WOS8o/d+JisgAA</XPD:REF>
+<XPD:REF name="Views[1]">bR1JwusL+EqHkWICU4Lw/AAA</XPD:REF>
+<XPD:REF name="Views[2]">3pbTtoUVkkGY33OU53SpjQAA</XPD:REF>
+<XPD:REF name="Views[3]">/2fLJ4PTRkK+aBZPGbXfxAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="sOc2bvULS0WTKJUYaZpUqwAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">Gql7ZxA7NUOTF94WRCKJ2QAA</XPD:REF>
+<XPD:REF name="Participant">aMse2dPTW0e1cPWgT5yomQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">GDJ3MHW7u0KIGKrMBc3CEwAA</XPD:REF>
+<XPD:REF name="Views[1]">c4Z6Mva2AUCX6csUAbpI1AAA</XPD:REF>
+<XPD:REF name="Views[2]">4PpTtWgYxkKWRa+N6gupIAAA</XPD:REF>
+<XPD:REF name="Views[3]">wBkIgbbNEEqWXxxK+MMG4QAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[22]" type="UMLAssociation" guid="BV50PoLPGk6ILDiJJDDtIAAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">3eBOJwYoDECDEdMphMhvzQAA</XPD:REF>
+<XPD:REF name="Views[1]">KUNywwz+v06zFvdrRhw6nQAA</XPD:REF>
+<XPD:REF name="Views[2]">S+wS9Htrj0S6r5f1cSXkpQAA</XPD:REF>
+<XPD:REF name="Views[3]">Ogcf4OjenU+o7fQDHeAaXAAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="5FT2YpPYNUCBElvb9K8eygAA">
+<XPD:ATTR name="Name" type="string">preferences</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">BV50PoLPGk6ILDiJJDDtIAAA</XPD:REF>
+<XPD:REF name="Participant">bvcCRaiVmk+m3reKH7sc/wAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">9wxzZtYrFUyBHvFZTvxa4QAA</XPD:REF>
+<XPD:REF name="Views[1]">/FcZb+MCjkmv0Tq7Q69WVgAA</XPD:REF>
+<XPD:REF name="Views[2]">Si1+loMA0kWcFI8sI++KDQAA</XPD:REF>
+<XPD:REF name="Views[3]">VfIos/OQtU+xI6hNP/05fwAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="daXt33JgCkCECD/gf4IpvgAA">
+<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR>
+<XPD:REF name="Association">BV50PoLPGk6ILDiJJDDtIAAA</XPD:REF>
+<XPD:REF name="Participant">CgxQ3apT6EW3ma9tmpb6BQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">sxXKO8gzekeyW3jQBcb8ngAA</XPD:REF>
+<XPD:REF name="Views[1]">g5Npiue9oEyxcM2aJl0xlwAA</XPD:REF>
+<XPD:REF name="Views[2]">1lKxOkupSU+kTCLuelpzFgAA</XPD:REF>
+<XPD:REF name="Views[3]">6zTN9eorWU6V0SH1If1vnwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[23]" type="UMLAssociation" guid="LoaGoSPyIkCr07RS19RJwgAA">
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">ZeoFoac3WE6KXIpyCIgIhQAA</XPD:REF>
+<XPD:REF name="Views[1]">jNzzmMOAGkiUIz1nRXhQdAAA</XPD:REF>
+<XPD:REF name="Views[2]">ZCBHEMsIYkmNXGHsASeT0QAA</XPD:REF>
+<XPD:REF name="Views[3]">eq6ZJ28G7Uejf3JBIWV85wAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="xqS9idj2IkCHkImTf1WWBQAA">
+<XPD:ATTR name="Name" type="string">parent</XPD:ATTR>
+<XPD:REF name="Association">LoaGoSPyIkCr07RS19RJwgAA</XPD:REF>
+<XPD:REF name="Participant">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">zPkxUjcRHEu5WvRCyuU0OwAA</XPD:REF>
+<XPD:REF name="Views[1]">VKXIv3oY2EaY2Qz5aovRIwAA</XPD:REF>
+<XPD:REF name="Views[2]">SLYQ0SXbD0ampnxwK0rn3gAA</XPD:REF>
+<XPD:REF name="Views[3]">uVZPpknS7kSuTy4o+T8G/QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="iuAemlPRREaMAXICRLp2RwAA">
+<XPD:ATTR name="Name" type="string">children</XPD:ATTR>
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">LoaGoSPyIkCr07RS19RJwgAA</XPD:REF>
+<XPD:REF name="Participant">XgXvqt8MvEWJpcTpmlr/gwAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">aQTlPaHwekmHeJLj1gADdQAA</XPD:REF>
+<XPD:REF name="Views[1]">j56a+gafU0S04zqYZOJl2wAA</XPD:REF>
+<XPD:REF name="Views[2]">0aaDYyD3K0ahuToSb/bt7gAA</XPD:REF>
+<XPD:REF name="Views[3]">HSoheQFynUGZ8ggqtgJXYAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[24]" type="UMLClass" guid="E1+uDXXaAkCLQt2z/TrtdQAA">
+<XPD:ATTR name="Name" type="string">USER</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">table</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">soP9ko6CbUGyz/cZ4Mx6cgAA</XPD:REF>
+<XPD:REF name="Views[1]">mtvq3WRJJ0isWgu9fHAT4wAA</XPD:REF>
+<XPD:REF name="Views[2]">JNzmUNX1IkqVkYfApY3v8AAA</XPD:REF>
+<XPD:REF name="Views[3]">E3Q08iGMCEaNKzPT3uM1jQAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Associations[0]">adEtdnQRk0qRVSxgPlaFGgAA</XPD:REF>
+<XPD:REF name="Associations[1]">UeIa4CNrnU+26vK9Pk289wAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">7</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="KsQ2ghKeUk20ra/IC1GunAAA">
+<XPD:ATTR name="Name" type="string">DBID_</XPD:ATTR>
+<XPD:REF name="Owner">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="gCoIMHHPykWPFERw04UeJAAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">PK</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">True</XPD:ATTR>
+<XPD:REF name="TaggedModel">KsQ2ghKeUk20ra/IC1GunAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="6fd91UJOqUudPeM/dr61xgAA">
+<XPD:ATTR name="Name" type="string">DBVERSION_</XPD:ATTR>
+<XPD:REF name="Owner">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="Y2bcIvU2sUG6ZzoN3E2tJgAA">
+<XPD:ATTR name="Name" type="string">ID_</XPD:ATTR>
+<XPD:REF name="Owner">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="7to8YXjFjU+dg+5OW090xAAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">IE</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">False</XPD:ATTR>
+<XPD:REF name="TaggedModel">Y2bcIvU2sUG6ZzoN3E2tJgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="TaggedValues[1]" type="TaggedValue" guid="SyDlIifMN0yb7FQ0xnhAegAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NOT NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">Y2bcIvU2sUG6ZzoN3E2tJgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[3]" type="UMLAttribute" guid="iazoZtyQkkW/muorxJEIDAAA">
+<XPD:ATTR name="Name" type="string">NAME_</XPD:ATTR>
+<XPD:REF name="Owner">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="e6lJdBXHSEirx/3aML0dBQAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">iazoZtyQkkW/muorxJEIDAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[4]" type="UMLAttribute" guid="hkIPXfC5DUGJByxoObiu1AAA">
+<XPD:ATTR name="Name" type="string">EMAIL_</XPD:ATTR>
+<XPD:REF name="Owner">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="xx1c4tFcO0GU3fTG64g03QAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">hkIPXfC5DUGJByxoObiu1AAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[5]" type="UMLAttribute" guid="bflZA44jrEe8ib+3dReNKAAA">
+<XPD:ATTR name="Name" type="string">ADDRESS_</XPD:ATTR>
+<XPD:REF name="Owner">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="SNsnJUHQi0CsDF16lDDF7QAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">bflZA44jrEe8ib+3dReNKAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[6]" type="UMLAttribute" guid="WMNVN6Hf8UmNMKOBEpx5JwAA">
+<XPD:ATTR name="Name" type="string">NOTES_</XPD:ATTR>
+<XPD:REF name="Owner">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="TCdrzrt1hEui1ENFrJD6wgAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">WMNVN6Hf8UmNMKOBEpx5JwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[25]" type="UMLClass" guid="LqtsSgler0ytdGl628lqCAAA">
+<XPD:ATTR name="Name" type="string">GROUP</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">table</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">V3lPgW2pFU2SCAI9JpzYnwAA</XPD:REF>
+<XPD:REF name="Views[1]">BAgobnrLT0WRDViCG3kMnQAA</XPD:REF>
+<XPD:REF name="Views[2]">Smp2gAII5kGIXwz8aiAb3QAA</XPD:REF>
+<XPD:REF name="Views[3]">/qhOVS1csEmJ5fk4ExsGTwAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">3</XPD:ATTR>
+<XPD:REF name="Associations[0]">8ZDIPHZODUmk7i7JT0pT4gAA</XPD:REF>
+<XPD:REF name="Associations[1]">a7CbXwF1J0KxuDpsToiORwAA</XPD:REF>
+<XPD:REF name="Associations[2]">QR7i8Rd8RUSbJe5lydEm5QAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">6</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="vFv8VMORhUu86EudJQn7nwAA">
+<XPD:ATTR name="Name" type="string">DBID_</XPD:ATTR>
+<XPD:REF name="Owner">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="2UFxwJelhky2z7haUpAr1wAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">PK</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">True</XPD:ATTR>
+<XPD:REF name="TaggedModel">vFv8VMORhUu86EudJQn7nwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="SMoXXGVbDE6b6D56K93VZgAA">
+<XPD:ATTR name="Name" type="string">PARENT_</XPD:ATTR>
+<XPD:REF name="Owner">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="n9kCNE9SJkywNRh9U08fEwAA">
+<XPD:ATTR name="Name" type="string">ID_</XPD:ATTR>
+<XPD:REF name="Owner">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="2k0bAc9lT0usaUDXJpKq8AAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">n9kCNE9SJkywNRh9U08fEwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[3]" type="UMLAttribute" guid="1OzZ1YXoTUuP5RVjdoa4FQAA">
+<XPD:ATTR name="Name" type="string">NAME_</XPD:ATTR>
+<XPD:REF name="Owner">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="jmpusCC9PUyGifmmhneDHAAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">1OzZ1YXoTUuP5RVjdoa4FQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[4]" type="UMLAttribute" guid="BEasoSOGyk+GK6uRwBKGlQAA">
+<XPD:ATTR name="Name" type="string">NOTES_</XPD:ATTR>
+<XPD:REF name="Owner">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="Kd1rOyNdG0CG3Hy/tXXrYgAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">BEasoSOGyk+GK6uRwBKGlQAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[5]" type="UMLAttribute" guid="Drc+M33qpE6+e+i8+9/8NgAA">
+<XPD:ATTR name="Name" type="string">TYPE_</XPD:ATTR>
+<XPD:REF name="Owner">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="JqxAQATsNEeiMgaMKf+sJQAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">Drc+M33qpE6+e+i8+9/8NgAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[26]" type="UMLClass" guid="KatzBbwK80WLqpTFygv5nwAA">
+<XPD:ATTR name="Name" type="string">PERMISSION</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">table</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">sbd2Gz/ktEOnP43bY99rBwAA</XPD:REF>
+<XPD:REF name="Views[1]">AL+A2Rhri0uEUuTAtEvw0QAA</XPD:REF>
+<XPD:REF name="Views[2]">hCpXAlnj6UWg66moBPvUZQAA</XPD:REF>
+<XPD:REF name="Views[3]">onvlzSRsM0uUXoPyWsQUiQAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR>
+<XPD:REF name="Associations[0]">sJZ9jie8O0OHFWF4t8Do9QAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[27]" type="UMLClass" guid="3yr+H4DhT0qXFxiWd2vfZAAA">
+<XPD:ATTR name="Name" type="string">MEMBERSHIP</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">table</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">1/33Y0gMMUW31b/FxQ+QjwAA</XPD:REF>
+<XPD:REF name="Views[1]">C+WgmpajZ06aflKQkVhGWQAA</XPD:REF>
+<XPD:REF name="Views[2]">Z822K8KJIUe4S3rRJjMRTAAA</XPD:REF>
+<XPD:REF name="Views[3]">rlmlfa9DU0WEaaLd7jXZ5AAA</XPD:REF>
+<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR>
+<XPD:REF name="Associations[0]">hEakj/zN50ehZ6WP7E05wAAA</XPD:REF>
+<XPD:REF name="Associations[1]">ExNGgTikIkanuowy7Sn8QwAA</XPD:REF>
+<XPD:ATTR name="#Attributes" type="integer">5</XPD:ATTR>
+<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="98k3q6qHa0+tgh4sR6P32AAA">
+<XPD:ATTR name="Name" type="string">DBID_</XPD:ATTR>
+<XPD:REF name="Owner">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="kJbJ5TjD6UiAemINPznyEAAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">PK</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">True</XPD:ATTR>
+<XPD:REF name="TaggedModel">98k3q6qHa0+tgh4sR6P32AAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="Gy8x1/xbI0uoq3oRdT3PegAA">
+<XPD:ATTR name="Name" type="string">DBVERSION_</XPD:ATTR>
+<XPD:REF name="Owner">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="xDhjeu+ur0aQN8UJISqgkwAA">
+<XPD:ATTR name="Name" type="string">USER_</XPD:ATTR>
+<XPD:REF name="Owner">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="3e1ELBEGOkOe8VC7BCqL3gAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">FK</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">True</XPD:ATTR>
+<XPD:REF name="TaggedModel">xDhjeu+ur0aQN8UJISqgkwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[3]" type="UMLAttribute" guid="MUuhRnP9sUyQjQOsDltE8wAA">
+<XPD:ATTR name="Name" type="string">GROUP_</XPD:ATTR>
+<XPD:REF name="Owner">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="9/e3c4FePUW7fwMfciLRtgAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">FK</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">True</XPD:ATTR>
+<XPD:REF name="TaggedModel">MUuhRnP9sUyQjQOsDltE8wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="Attributes[4]" type="UMLAttribute" guid="EJIZLQHUQkmsZM+sE4EbPAAA">
+<XPD:ATTR name="Name" type="string">ROLE_</XPD:ATTR>
+<XPD:REF name="Owner">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+<XPD:ATTR name="#TaggedValues" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="TaggedValues[0]" type="TaggedValue" guid="6R5DHK/i70CIhS206bkUYAAA">
+<XPD:ATTR name="ProfileName" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="TagDefinitionSetName" type="string">column</XPD:ATTR>
+<XPD:ATTR name="Name" type="string">NullOption</XPD:ATTR>
+<XPD:ATTR name="DataValue" type="string">NULL</XPD:ATTR>
+<XPD:REF name="TaggedModel">EJIZLQHUQkmsZM+sE4EbPAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[28]" type="UMLAssociation" guid="WHScUyOIrkiop7/BOTSpKAAA">
+<XPD:ATTR name="StereotypeProfile" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">identifying</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">5POJ1oGvBUSRa1kSdgvWeQAA</XPD:REF>
+<XPD:REF name="Views[1]">BaarGZxnuEmtyuwcHr2KUQAA</XPD:REF>
+<XPD:REF name="Views[2]">ljR3hJYzr0yWwyORY9twvQAA</XPD:REF>
+<XPD:REF name="Views[3]">81X7p2yA6UKseafg1CGWUgAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="hEakj/zN50ehZ6WP7E05wAAA">
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">WHScUyOIrkiop7/BOTSpKAAA</XPD:REF>
+<XPD:REF name="Participant">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">EFRVWqUYsUS9IZZM1swL0gAA</XPD:REF>
+<XPD:REF name="Views[1]">+tjncZmPCEeDCsyPO6eTSQAA</XPD:REF>
+<XPD:REF name="Views[2]">PpBsMs0fEEuLzojoB5MP0gAA</XPD:REF>
+<XPD:REF name="Views[3]">sX2BZkX39UOSC9mdI9eGhAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="adEtdnQRk0qRVSxgPlaFGgAA">
+<XPD:REF name="Association">WHScUyOIrkiop7/BOTSpKAAA</XPD:REF>
+<XPD:REF name="Participant">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">ev3aqh/430C1gbObY5BlegAA</XPD:REF>
+<XPD:REF name="Views[1]">4xa0aNdBW0m3hihbrq9cYAAA</XPD:REF>
+<XPD:REF name="Views[2]">MeeG2NSHI0CKtijqgxE9HAAA</XPD:REF>
+<XPD:REF name="Views[3]">5ki3yYgd9kSg4EeW1mHv2gAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[29]" type="UMLAssociation" guid="PKSQKd/tEUaocno9PCBHywAA">
+<XPD:ATTR name="StereotypeProfile" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">identifying</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="UeIa4CNrnU+26vK9Pk289wAA">
+<XPD:REF name="Association">PKSQKd/tEUaocno9PCBHywAA</XPD:REF>
+<XPD:REF name="Participant">E1+uDXXaAkCLQt2z/TrtdQAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="8ZDIPHZODUmk7i7JT0pT4gAA">
+<XPD:REF name="Association">PKSQKd/tEUaocno9PCBHywAA</XPD:REF>
+<XPD:REF name="Participant">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[30]" type="UMLAssociation" guid="+g0lnLNTmUqUK2qZZssiuAAA">
+<XPD:ATTR name="StereotypeProfile" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">non-identifying</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="a7CbXwF1J0KxuDpsToiORwAA">
+<XPD:REF name="Association">+g0lnLNTmUqUK2qZZssiuAAA</XPD:REF>
+<XPD:REF name="Participant">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="sJZ9jie8O0OHFWF4t8Do9QAA">
+<XPD:REF name="Association">+g0lnLNTmUqUK2qZZssiuAAA</XPD:REF>
+<XPD:REF name="Participant">KatzBbwK80WLqpTFygv5nwAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[31]" type="UMLClass" guid="fchUG9V6p0e3vWPnCiWIigAA">
+<XPD:ATTR name="Name" type="string">PROPERTY</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">table</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">ymgsmpJUxEWXvPUiSRqLtgAA</XPD:REF>
+<XPD:REF name="Views[1]">TLu4PDlkEkynKOHIBPbzdQAA</XPD:REF>
+<XPD:REF name="Views[2]">9Wxy/v8YOESColEkIKBLewAA</XPD:REF>
+<XPD:REF name="Views[3]">nBY4pl+qqkquTnf+sUpAcAAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[32]" type="UMLAssociation" guid="mhyaE4CKr0SEwmrnEpuK7wAA">
+<XPD:ATTR name="StereotypeProfile" type="string">ERD</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">identifying</XPD:ATTR>
+<XPD:REF name="Namespace">2VWhDnmwo0ix2f/qWIJoQQAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">twffHrKJYkaFxkbR2Ti9MAAA</XPD:REF>
+<XPD:REF name="Views[1]">ROAP9xLxeEu7TRCO9FaD9wAA</XPD:REF>
+<XPD:REF name="Views[2]">g+KVCakhNE6rgZzQROd6NQAA</XPD:REF>
+<XPD:REF name="Views[3]">zrU+z7IxY0ywNsHNj4P8DwAA</XPD:REF>
+<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
+<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="ExNGgTikIkanuowy7Sn8QwAA">
+<XPD:ATTR name="Multiplicity" type="string">*</XPD:ATTR>
+<XPD:REF name="Association">mhyaE4CKr0SEwmrnEpuK7wAA</XPD:REF>
+<XPD:REF name="Participant">3yr+H4DhT0qXFxiWd2vfZAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">9uVEk7fkQkycyXqWPyQ7DQAA</XPD:REF>
+<XPD:REF name="Views[1]">6lKyiYepIUqBy87nV2YwMgAA</XPD:REF>
+<XPD:REF name="Views[2]">maLd7KFPlk+qDCsTX3neQwAA</XPD:REF>
+<XPD:REF name="Views[3]">8BzwGEjEB021SVZm6vYZHgAA</XPD:REF>
+</XPD:OBJ>
+<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="QR7i8Rd8RUSbJe5lydEm5QAA">
+<XPD:REF name="Association">mhyaE4CKr0SEwmrnEpuK7wAA</XPD:REF>
+<XPD:REF name="Participant">LqtsSgler0ytdGl628lqCAAA</XPD:REF>
+<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
+<XPD:REF name="Views[0]">jEFsKPFcPUqxdxgWV9ogKgAA</XPD:REF>
+<XPD:REF name="Views[1]">u7jZnfO/g0i8X2SumjkgOwAA</XPD:REF>
+<XPD:REF name="Views[2]">WqtwUmMvFUi2KLwrOZwJFgAA</XPD:REF>
+<XPD:REF name="Views[3]">vXHlD+ikrEuub6qQYlQhSAAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[3]" type="UMLModel" guid="G2koFuRIO0m4DEl9mngHsgAA">
+<XPD:ATTR name="Name" type="string">Implementation Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">implementationModel</XPD:ATTR>
+<XPD:REF name="Namespace">SFKy0gfzeUOt9WIuFpuPJwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLComponentDiagram" guid="+ZQSaBUWCkGCm41Bi6uo2wAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">G2koFuRIO0m4DEl9mngHsgAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLComponentDiagramView" guid="xYImRG3vn0mMmhaZGkoqlAAA">
+<XPD:REF name="Diagram">+ZQSaBUWCkGCm41Bi6uo2wAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+<XPD:OBJ name="OwnedElements[4]" type="UMLModel" guid="9Q5ZuEj8X0CFUT3Hh8g14QAA">
+<XPD:ATTR name="Name" type="string">Deployment Model</XPD:ATTR>
+<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
+<XPD:ATTR name="StereotypeName" type="string">deploymentModel</XPD:ATTR>
+<XPD:REF name="Namespace">SFKy0gfzeUOt9WIuFpuPJwAA</XPD:REF>
+<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
+<XPD:OBJ name="OwnedDiagrams[0]" type="UMLDeploymentDiagram" guid="8UWrsJ0viEuWiAAK3AJdagAA">
+<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
+<XPD:REF name="DiagramOwner">9Q5ZuEj8X0CFUT3Hh8g14QAA</XPD:REF>
+<XPD:OBJ name="DiagramView" type="UMLDeploymentDiagramView" guid="SbtWKlDSX0OvJTZnoue0VQAA">
+<XPD:REF name="Diagram">8UWrsJ0viEuWiAAK3AJdagAA</XPD:REF>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:OBJ>
+</XPD:BODY>
+</XPD:PROJECT>
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.hbm.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.hbm.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.hbm.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping auto-import="false" package="org.jbpm.id.impl" default-access="field">
+
+ <!-- ### USER ########################################################### -->
+ <class name="UserImpl" table="JBPM_USER" discriminator-value="U">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <discriminator type="char" column="CLASS_"/>
+ <version name="dbversion" column="DBVERSION_"/>
+
+ <property name="id" column="ID_" unique="true" not-null="true" />
+ <property name="name" column="NAME_" />
+ <property name="email" column="EMAIL_" />
+ <property name="phone" column="PHONE_" />
+ <property name="address" column="ADDRESS_" />
+ <property name="notes" column="NOTES_" />
+ <property name="password" column="PASSWORD_" />
+
+ <set name="memberships">
+ <key column="USER_" foreign-key="FK_MEMSHIP_USR" />
+ <one-to-many class="MembershipImpl" />
+ </set>
+
+ <many-to-one name="properties"
+ class="org.jbpm.pvm.impl.WireProperties"
+ column="PROPS_"
+ foreign-key="FK_USER_PROPS"
+ lazy="false"
+ cascade="all" />
+
+ <many-to-one name="permissions"
+ column="PERMISSIONS_"
+ class="Permissions"
+ lazy="false"
+ cascade="all" />
+
+ </class>
+
+ <!-- ### GROUP ########################################################## -->
+ <class name="GroupImpl" table="JBPM_GROUP" discriminator-value="G">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <discriminator type="char" column="CLASS_"/>
+ <version name="dbversion" column="DBVERSION_"/>
+
+ <property name="id" column="ID_" unique="true" not-null="true" />
+ <property name="name" column="NAME_" />
+ <property name="type" column="TYPE_" />
+
+ <many-to-one name="parent"
+ column="PARENT_"
+ foreign-key="FK_GROUP_PARENT"/>
+
+ <set name="children">
+ <key column="PARENT_" />
+ <one-to-many class="GroupImpl" />
+ </set>
+
+ <set name="memberships">
+ <key column="GROUP_" foreign-key="FK_MEMSHIP_GRP" />
+ <one-to-many class="MembershipImpl" />
+ </set>
+
+ <many-to-one name="properties"
+ class="org.jbpm.pvm.impl.WireProperties"
+ column="PROPS_"
+ foreign-key="FK_GROUP_PROPS"
+ lazy="false"
+ cascade="all" />
+
+ <many-to-one name="permissions"
+ column="PERMISSIONS_"
+ class="Permissions"
+ lazy="false"
+ cascade="all" />
+
+ </class>
+
+ <!-- ### MEMBERSHIP ##################################################### -->
+ <class name="MembershipImpl" table="JBPM_MEMBERSHIP" discriminator-value="M">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <discriminator type="char" column="CLASS_"/>
+ <version name="dbversion" column="DBVERSION_"/>
+
+ <property name="role" column="ROLE__" />
+
+ <many-to-one name="user"
+ column="USER__"
+ class="UserImpl" />
+
+ <many-to-one name="group"
+ column="GROUP_"
+ class="GroupImpl" />
+
+ <many-to-one name="permissions"
+ column="PERMISSIONS_"
+ class="Permissions"
+ lazy="false"
+ cascade="all" />
+ </class>
+
+ <!-- ### PERMISSIONS #################################################### -->
+ <class name="Permissions">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <version name="dbversion" column="DBVERSION_"/>
+ <set name="permissions" cascade="all" lazy="false" table="JBPM_PERMISSION">
+ <key column="USER_" foreign-key="none" not-null="false" />
+ <element type="org.jbpm.id.hibernate.PermissionUserType">
+ <column name="CLASS_"/>
+ <column name="NAME_"/>
+ <column name="ACTION_"/>
+ </element>
+ </set>
+ </class>
+
+</hibernate-mapping>
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.hbm.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.queries.hbm.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.queries.hbm.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.queries.hbm.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping>
+
+ <query name="findUserById">
+ <![CDATA[
+ select user
+ from org.jbpm.id.User as user
+ where user.id = :userId
+ ]]>
+ </query>
+
+ <query name="findUserByDbId">
+ <![CDATA[
+ select user
+ from org.jbpm.id.User as user
+ where user.dbid = :dbid
+ ]]>
+ </query>
+
+ <query name="findUsers">
+ <![CDATA[
+ select user
+ from org.jbpm.id.User as user
+ order by user.id asc
+ ]]>
+ </query>
+
+ <query name="findGroupById">
+ <![CDATA[
+ select group
+ from org.jbpm.id.Group as group
+ where group.id = :groupId
+ ]]>
+ </query>
+
+ <query name="findGroupByDbId">
+ <![CDATA[
+ select group
+ from org.jbpm.id.Group as group
+ where group.dbid = :dbid
+ ]]>
+ </query>
+
+ <query name="findGroups">
+ <![CDATA[
+ select group
+ from org.jbpm.id.Group as group
+ order by group.id asc
+ ]]>
+ </query>
+
+ <query name="findMembershipsByGroupAndRole">
+ <![CDATA[
+ select membership
+ from org.jbpm.id.Membership as membership
+ where membership.group.id = :groupId
+ and membership.role = :role
+ ]]>
+ </query>
+
+ <query name="findMembershipsForUser">
+ <![CDATA[
+ select membership
+ from org.jbpm.id.Membership as membership
+ where membership.user.id = :id
+ ]]>
+ </query>
+
+ <query name="findMembershipsForGroup">
+ <![CDATA[
+ select membership
+ from org.jbpm.id.Membership as membership
+ where membership.group.id = :id
+ ]]>
+ </query>
+
+</hibernate-mapping>
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/hibernate.identity.queries.hbm.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Group.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Group.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Group.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,60 @@
+/*
+ * 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.id;
+
+/** any sort of group of users.
+ *
+ * <h3 id="grouptypes">Group types<h3>
+ *
+ * <p>Groups can be partitioned in group types. For example
+ * one group type could represent all hierarchical company units like
+ * departments and teams. Another group type could be the j2ee
+ * security roles.
+ * </p>
+ *
+ * <h3 id="grouphierarchy">Group hierarchy<h3>
+ *
+ * <p>Groups can be organised hierarchically.
+ * </p>
+ *
+ * @author Tom Baeyens
+ */
+public interface Group extends Identity {
+
+ /** unique identifier that cannot be null. */
+ String getId();
+
+ /** update the non-null, unique identifier. */
+ void setId(String userId);
+
+ /** the display name; can be null. */
+ String getName();
+
+ /** sets display name; null is allowed. */
+ void setName(String name);
+
+ /** <a href="#grouptypes">group type</a>; can be null. */
+ String getType();
+
+ /** sets <a href="#grouptypes">group type</a>; null is allowed. */
+ void setType(String type);
+}
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Group.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Identity.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Identity.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Identity.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,61 @@
+/*
+ * 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.id;
+
+import java.security.Permission;
+import java.util.Set;
+
+/** base class for {@link User}, {@link Group} and {@link Membership}.
+ *
+ * @author Tom Baeyens
+ */
+public interface Identity {
+
+ /** the database primary key. */
+ long getDbid();
+
+ /** the permissions. The returned value will never be null.
+ * If this identity has no permissions, an empty set will
+ * be returned. */
+ Set<Permission> getPermissions();
+
+ /** add a permission.
+ * @throws IdentityException if permission is null. */
+ void addPermission(Permission permission);
+
+ /** remove a permission.
+ * @throws IdentityException if permission is null. */
+ void removePermission(Permission permission);
+
+ /** all the properties.
+ * Never returns null. In case there are no properties,
+ * this will return an empty Set. */
+ Set<String> getPropertyKeys();
+
+ /** the requested property value or null if that
+ * property is not specified. */
+ String getProperty(String key);
+
+ /** sets the property value.
+ * @throws IdentityException if key or value is null. */
+ void setProperty(String key, String value);
+}
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Identity.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityException.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityException.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityException.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,43 @@
+/*
+ * 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.id;
+
+/**
+ * @author Tom Baeyens
+ */
+public class IdentityException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ public IdentityException() {
+ super();
+ }
+ public IdentityException(String message, Throwable cause) {
+ super(message, cause);
+ }
+ public IdentityException(String message) {
+ super(message);
+ }
+ public IdentityException(Throwable cause) {
+ super(cause);
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityException.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityService.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityService.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityService.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,240 @@
+/*
+ * 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 ied 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.id;
+
+import java.util.List;
+
+/**
+ * session facade for identity operations.
+ *
+ * @author Tom Baeyens
+ */
+public interface IdentityService {
+
+ /**
+ * save a new user. This doesn't cascade to memberships.
+ *
+ * @throws IdentityException
+ * when user is null
+ */
+ void saveUser(User user);
+
+ /**
+ * get user details.
+ *
+ * @throws IdentityException
+ * when userId is null
+ */
+ User getUser(String userId);
+
+ /**
+ * get user details.
+ *
+ * @throws IdentityException
+ * when db is null
+ */
+ User getUser(long dbid);
+
+ /** a page of users, firstResult starts at 0. */
+ List<User> getUsers(int firstResult, int maxResults);
+
+ /**
+ * update an existing user. This doesn't cascade to memberships.
+ *
+ * @throws IdentityException
+ * when user is null
+ */
+ void updateUser(User user);
+
+ /**
+ * delete a user. This doesn't cascade to memberships.
+ *
+ * @throws IdentityException
+ * when userId is null
+ */
+ void deleteUser(String userId);
+
+ /**
+ * update the password.
+ *
+ * @throws IdentityException
+ * if userId is null, password is null or if the referenced user
+ * doesn't exist.
+ */
+ void updatePassword(String userId, String password);
+
+ /**
+ * throws an AuthenticationException if userId and password don't match,
+ * otherwise returns normally.
+ */
+ void verifyPassword(String userId, String password);
+
+ /**
+ * save a new group. This doesn't cascade to memberships, parent groups nor
+ * child groups.
+ *
+ * @throws IdentityException
+ * when group is null
+ */
+ void saveGroup(Group group);
+
+ /**
+ * get group details.
+ *
+ * @throws IdentityException
+ * when groupId is null
+ */
+ Group getGroup(String groupId);
+
+ /**
+ * get group details.
+ *
+ * @throws IdentityException
+ * when dbid is null
+ */
+ Group getGroup(long dbId);
+
+ /** a page of all groups */
+ public List<Group> getGroups();
+
+ /** a page of groups, firstResult starts at 0 */
+ List<Group> getGroups(int firstResult, int maxResults);
+
+ /**
+ * update an existing group. This doesn't cascade to memberships, parent
+ * groups nor child groups.
+ *
+ * @throws IdentityException
+ * when group is null
+ */
+ void updateGroup(Group group);
+
+ /**
+ * delete a group. This doesn't cascade to memberships, parent groups nor
+ * child groups.
+ *
+ * @throws IdentityException
+ * if this group still has child groups.
+ * @throws IdentityException
+ * when groupId is null
+ */
+ void deleteGroup(String groupId);
+
+ /**
+ * create a parent child relation between two groups. If the child already has
+ * another parent, that hierarchical relation will be replaced with the new
+ * one. Be carefull, you move the whole child tree this way. If a the parent
+ * and child are already parent and child, there is no effect and no exception
+ * is thrown.
+ *
+ * @throws IdentityException
+ * when parentGroupId or childGroupId is null
+ */
+ void setGroupHierarchy(String parentGroupId, String childGroupId);
+
+ /**
+ * removes a parent-child relation between two groups.
+ *
+ * @throws IdentityException
+ * when parentGroupId or childGroupId is null
+ */
+ void removeGroupHierarchy(String parentGroupId, String childGroupId);
+
+ /**
+ * create a membership.
+ *
+ * @throws IdentityException
+ * when userId or groupId is null
+ */
+ Membership createMembership(String userId, String groupId);
+
+ /**
+ * create a membership with a specified role.
+ *
+ * @throws IdentityException
+ * when userId, groupId or role is null
+ */
+ Membership createMembership(String userId, String groupId, String role);
+
+ /**
+ * update membership details.
+ *
+ * @throws IdentityException
+ * when membership is null
+ */
+ void updateMembership(Membership membership);
+
+ /** delete a membership */
+ void deleteMembership(long membershipDbid);
+
+ /**
+ * a full list of all memberships (and groups) for a given user. The groups of
+ * the memberships will be eager loaded.
+ */
+ List<Membership> getMembershipsForUser(String userId);
+
+ /**
+ * a page of memberships (and groups) for a given user. The groups of the
+ * memberships will be eager loaded.
+ */
+ List<Membership> getMembershipsForUser(String userId, int firstResult,
+ int maxResults);
+
+ /**
+ * a page of memberships (and groups) for a user for which the groups is of
+ * the given type. The groups of the memberships will be eager loaded.
+ *
+ * @throws IdentityException
+ * when userId or groupType is null
+ */
+ List<Membership> getMembershipsForGroupType(String userId, String groupType,
+ int firstResult, int maxResults);
+
+ /**
+ * a page of memberships (and users) for a group. The memberships users will
+ * be eager loaded.
+ *
+ * @throws IdentityException
+ * when groupId is null
+ */
+ List<Membership> getMembershipsForGroup(String groupId, int firstResult,
+ int maxResults);
+
+ /**
+ * a full list of all memberships (and users) for a group. The memberships
+ * users will be eager loaded.
+ *
+ * @throws IdentityException
+ * when groupId is null
+ */
+ List<Membership> getMembershipsForGroup(String groupId);
+
+ /**
+ * the memberships (and users) for a given role in a group. The memberships
+ * users will be eager loaded.
+ *
+ * @throws IdentityException
+ * when groupId or role is null
+ */
+ List<Membership> getMembershipsForRole(String groupId, String role,
+ int firstResult, int maxResults);
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/IdentityService.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Membership.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Membership.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Membership.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,42 @@
+/*
+ * 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.id;
+
+
+/** a membership between a user and a group.
+ *
+ * @author Tom Baeyens
+ */
+public interface Membership extends Identity {
+
+ /** the user */
+ User getUser();
+
+ /** the group */
+ Group getGroup();
+
+ /** the role that is fullfilled by the user for the group. */
+ String getRole();
+
+ /** update the role for this membership */
+ void setRole(String string);
+}
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/Membership.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/User.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/User.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/User.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,67 @@
+/*
+ * 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.id;
+
+
+/** a user.
+ * @author Tom Baeyens
+ */
+public interface User extends Identity {
+
+ /** unique identifier that cannot be null. */
+ String getId();
+
+ /** update the non-null, unique identifier. */
+ void setId(String userId);
+
+ /** the display name; can be null.
+ * If a separation between first name and last name is needed,
+ * use the properties. */
+ String getName();
+
+ /** sets display name; null is allowed. */
+ void setName(String name);
+
+ /** the email address; can be null. */
+ String getEmail();
+
+ /** sets the email address; null is allowed. */
+ void setEmail(String email);
+
+ /** the main phone number; can be null. */
+ String getPhone();
+
+ /** sets the main phone number; null is allowed. */
+ void setPhone(String phone);
+
+ /** the postal address; can be null. */
+ String getAddress();
+
+ /** sets the postal address; null is allowed. */
+ void setAddress(String address);
+
+ /** the free text notes; can be null. */
+ String getNotes();
+
+ /** sets the free text notes; null is allowed. */
+ void setNotes(String notes);
+}
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/User.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityLoginModule.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityLoginModule.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityLoginModule.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,312 @@
+/*
+ * 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.id.auth;
+
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Logger;
+
+import javax.security.auth.Destroyable;
+import javax.security.auth.Subject;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.login.FailedLoginException;
+import javax.security.auth.login.LoginException;
+import javax.security.auth.spi.LoginModule;
+
+import org.jbpm.id.session.AuthenticationSession;
+import org.jbpm.pvm.env.EnvironmentFactory;
+import org.jbpm.pvm.env.Environment;
+
+/**
+ * @author "Pierre Vigneras"
+ * @date Dec 3, 2007
+ */
+public class IdentityLoginModule implements LoginModule {
+
+ private static final Logger log = Logger.getLogger(IdentityLoginModule.class.getName());
+
+ private static final String ENVIRONMENT_RESOURCE_OPTION_NAME = "environment.resource";
+ private static final String DEFAULT_ENVIRONMENT_RESOURCE = "identity.cfg.xml";
+ private static EnvironmentFactory environmentFactory = null;
+ private final Object environmentIntializationLock = new Object();
+
+ private static final String NAME_PROMPT = "Name: ";
+ private static final String PASSWORD_PROMPT = "Password: ";
+ private static final String JAVAX_SECURITY_AUTH_LOGIN_PASSWORD = "javax.security.auth.login.password";
+ private static final String JAVAX_SECURITY_AUTH_LOGIN_NAME = "javax.security.auth.login.name";
+
+ /**
+ * Property key used to define the authentication service to use. Defined to
+ * be "service.impl". Property Value should be the full name of a class that
+ * implements the {@link IdentityServiceOp} interface.
+ */
+ public static final String AUTH_SERVICE_URL = "service.impl";
+
+ /**
+ * Property key used to define service instanciation parameters. Defined to be
+ * "service.parameters". Property Value can be any String.
+ */
+ public static final String SERVICE_PARAMS_OPTION_NAME = "service.parameters";
+
+ /**
+ * Property key for the debug flag. Defined to be "debug".
+ *
+ * Property Value. If set, should be either "true" or "false". Default is
+ * "false".
+ */
+ public static final String DEBUG_OPTION_NAME = "debug";
+
+ private Subject subject = null;
+ private CallbackHandler callbackHandler = null;
+ private Map<String, Object> sharedState;
+ private Map<String, Object> options = null;
+ private boolean debug = false;
+
+ private String id;
+
+ /**
+ * Initialize this LoginModule. This method is called by the LoginContext
+ * after this LoginModule has been instantiated. The purpose of this method is
+ * to initialize this LoginModule with the relevant information. If this
+ * LoginModule does not understand any of the data stored in sharedState or
+ * options parameters, they can be ignored.
+ *
+ * @param subject
+ * the Subject to be authenticated.
+ * @param callbackHandler
+ * a CallbackHandler for communicating with the end user (prompting
+ * for usernames and passwords, for example).
+ * @param sharedState
+ * state shared with other configured LoginModules.
+ * @param options
+ * options specified in the login Configuration for this particular
+ * LoginModule.
+ */
+ public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ? > sharedState, Map<String, ? > options) {
+
+ this.subject = subject;
+ this.callbackHandler = callbackHandler;
+ this.sharedState = (Map<String, Object>) sharedState;
+ this.options = (Map<String, Object>) options;
+ final String debugFlag = (String) options.get(DEBUG_OPTION_NAME);
+ if (debugFlag != null) {
+ debug = Boolean.valueOf(debugFlag);
+ }
+ }
+
+ /**
+ * Method to authenticate a Subject (phase 1). The implementation of this
+ * method authenticates a Subject. For example, it may prompt for Subject
+ * information such as a username and password and then attempt to verify the
+ * password. This method saves the result of the authentication attempt as
+ * private state within the LoginModule.
+ *
+ * @return true if the authentication succeeded, or false if this LoginModule
+ * should be ignored.
+ * @throws LoginException
+ * if the authentication fails
+ */
+ public boolean login() throws LoginException {
+ if (debug)
+ log.finest("login() - preparing - step 1");
+
+ EnvironmentFactory environmentFactory = getEnvironmentFactory();
+ Environment environment = environmentFactory.openEnvironment();
+ try {
+ AuthenticationSession authenticationSession = environment.get(AuthenticationSession.class);
+
+ String name = (String) sharedState.get(JAVAX_SECURITY_AUTH_LOGIN_NAME);
+ String password = (String) sharedState.get(JAVAX_SECURITY_AUTH_LOGIN_PASSWORD);
+ final List<Callback> callbacks = new ArrayList<Callback>();
+ final NameCallback nameCallback = new NameCallback(NAME_PROMPT);
+ final PasswordCallback passwordCallback = new PasswordCallback(PASSWORD_PROMPT, false);
+ if (name == null)
+ callbacks.add(nameCallback);
+ if (password == null)
+ callbacks.add(passwordCallback);
+ if (!callbacks.isEmpty()) {
+ if (debug)
+ log.finest("login() - callback - step 2");
+ callbackHandler.handle(callbacks.toArray(new Callback[0]));
+ if (name == null)
+ name = nameCallback.getName();
+ if (password == null) {
+ password = new String(passwordCallback.getPassword());
+ passwordCallback.clearPassword();
+ }
+ }
+
+ if (debug)
+ log.finest("login() - authenticating - step 3");
+
+ this.id = authenticationSession.authenticate(name, password);
+ // TODO: what is Step 4 then?!
+ if (debug)
+ log.finest("login() - storing data - step 5");
+ sharedState.put(JAVAX_SECURITY_AUTH_LOGIN_NAME, name);
+ sharedState.put(JAVAX_SECURITY_AUTH_LOGIN_PASSWORD, password);
+ if (debug)
+ log.finest("login() - returning - step 6");
+ if (id == null)
+ throw new FailedLoginException("User unknown or wrong password!");
+ return true;
+
+ } catch (Exception e) {
+ final LoginException le = new LoginException();
+ le.initCause(e);
+ throw le;
+ } finally {
+ environment.close();
+ }
+ }
+
+ private EnvironmentFactory getEnvironmentFactory() {
+ synchronized (environmentIntializationLock) {
+ if (environmentFactory==null) {
+ String resource = (String) options.get(ENVIRONMENT_RESOURCE_OPTION_NAME);
+ if (resource==null) {
+ resource = DEFAULT_ENVIRONMENT_RESOURCE;
+ }
+
+ throw new RuntimeException("Fixme: getEnvironmentFactory()");
+ /*environmentFactory = (EnvironmentFactory) EnvironmentFactory
+ .getParser()
+ .createParse()
+ .setResource(resource)
+ .execute()
+ .checkProblems("environment configuration for identity login module")
+ .getDocumentObject();*/
+ }
+ }
+ return environmentFactory;
+ }
+
+ /**
+ * Method to commit the authentication process (phase 2). This method is
+ * called if the LoginContext's overall authentication succeeded (the relevant
+ * REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules succeeded). If
+ * this LoginModule's own authentication attempt succeeded (checked by
+ * retrieving the private state saved by the login method), then this method
+ * associates relevant Principals and Credentials with the Subject located in
+ * the LoginModule. If this LoginModule's own authentication attempted failed,
+ * then this method removes/destroys any state that was originally saved.
+ *
+ * @return true if this method succeeded, or false if this LoginModule should
+ * be ignored.
+ * @throws LoginException
+ * if the commit fails
+ */
+ public boolean commit() throws LoginException {
+ final String name = (String) sharedState.get(JAVAX_SECURITY_AUTH_LOGIN_NAME);
+ if (id == null)
+ throw new FailedLoginException("User unknown or wrong password!");
+ final Set<Principal> principals = subject.getPrincipals();
+ principals.add(new IdentityPrincipal(id));
+ return true;
+ }
+
+ /**
+ * Method to abort the authentication process (phase 2). This method is called
+ * if the LoginContext's overall authentication failed. (the relevant
+ * REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules did not succeed).
+ * If this LoginModule's own authentication attempt succeeded (checked by
+ * retrieving the private state saved by the login method), then this method
+ * cleans up any state that was originally saved.
+ *
+ * @return true if this method succeeded, or false if this LoginModule should
+ * be ignored.
+ * @throws LoginException
+ * if the abort fails
+ */
+ public boolean abort() throws LoginException {
+ if (debug)
+ log.finest("abort()");
+ if (id == null)
+ return false;
+ subject = null;
+ id = null;
+ return true;
+ }
+
+ /**
+ * Method which logs out a Subject. An implementation of this method might
+ * remove/destroy a Subject's Principals and Credentials.
+ *
+ * @return true if this method succeeded, or false if this LoginModule should
+ * be ignored.
+ * @throws LoginException
+ * if the logout fails
+ */
+ public boolean logout() throws LoginException {
+ if (id != null) {
+ if (debug)
+ log.finest("logout() - removing principals");
+ // Remove only principals added by our commit method
+ final Set<Principal> principals = subject.getPrincipals();
+ for (Principal p : principals) {
+ if (p instanceof IdentityPrincipal) {
+ if (debug)
+ log.finest("logout() - removing principal: " + p);
+ principals.remove(p);
+ }
+ }
+ if (debug)
+ log.finest("logout() - destroying/removing credentials");
+ // Remove/destroy only credentials added by our commit method
+ final Set<Object> credentials = subject.getPublicCredentials();
+ for (Object o : credentials) {
+ if (o instanceof Destroyable) {
+ if (debug)
+ log.finest("logout() - destroying credential: " + o);
+ // Bug: only from this module !!
+ // ((Destroyable) o).destroy();
+ }
+ if (!subject.isReadOnly()) {
+ if (debug)
+ log.finest("logout() - removing credential: " + o);
+ credentials.remove(o);
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * @author "Pierre Vigneras"
+ * @date Dec 3, 2007
+ */
+ public class MissingOptionException extends LoginException {
+
+ /**
+ * @param msg
+ */
+ public MissingOptionException(String msg) {
+ super("Missing options: " + msg);
+ }
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityLoginModule.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityPrincipal.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityPrincipal.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityPrincipal.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,45 @@
+/*
+ * 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.id.auth;
+
+import java.security.Principal;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class IdentityPrincipal implements Principal {
+
+ String id;
+
+ public IdentityPrincipal(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getName() {
+ return id;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/IdentityPrincipal.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/package.html
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/package.html (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/auth/package.html 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,5 @@
+<body>
+a login module implementation based on the
+{@link org.jbpm.session.AuthenticationSession} which is to be
+configured in a pvm environment.
+</body>
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/CreateMembership.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/CreateMembership.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/CreateMembership.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,68 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.impl.GroupImpl;
+import org.jbpm.id.impl.MembershipImpl;
+import org.jbpm.id.impl.UserImpl;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class CreateMembership implements Command
+{
+
+ private static final long serialVersionUID = 1L;
+
+ String userId;
+ String groupId;
+ String role;
+
+ public CreateMembership(String userId, String groupId) {
+ this.userId = userId;
+ this.groupId = groupId;
+ }
+
+ public CreateMembership(String userId, String groupId, String role) {
+ this.userId = userId;
+ this.groupId = groupId;
+ this.role = role;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ GroupImpl group = identityDbSession.findGroupById(groupId);
+ UserImpl user = identityDbSession.findUserById(userId);
+ MembershipImpl membershipImpl = MembershipImpl.createMembership(user, group);
+ if (role != null) {
+ membershipImpl.setRole(role);
+ }
+ identityDbSession.save(membershipImpl);
+ return membershipImpl;
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/CreateMembership.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteGroup.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteGroup.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteGroup.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,49 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.Group;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class DeleteGroup implements Command {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String groupId;
+
+ public DeleteGroup(String groupId) {
+ this.groupId = groupId;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ Group groupImpl = identityDbSession.findGroupById(groupId);
+ identityDbSession.getSession().delete(groupImpl);
+ return null;
+ }
+}
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteGroup.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteMembership.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteMembership.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteMembership.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,50 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.impl.MembershipImpl;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class DeleteMembership implements Command<Long> {
+
+ private static final long serialVersionUID = 1L;
+
+ protected long membershipDbid;
+
+ public DeleteMembership(long membershipDbid) {
+ this.membershipDbid = membershipDbid;
+ }
+
+ public Long execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ MembershipImpl membership = (MembershipImpl) identityDbSession.getSession()
+ .get(MembershipImpl.class, this.membershipDbid);
+ identityDbSession.getSession().delete(membership);
+ return membershipDbid;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteMembership.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteUser.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteUser.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteUser.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,49 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.User;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class DeleteUser implements Command {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String userId;
+
+ public DeleteUser(String userId) {
+ this.userId = userId;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ User userImpl = identityDbSession.findUserById(userId);
+ identityDbSession.getSession().delete(userImpl);
+ return null;
+ }
+}
\ No newline at end of file
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/DeleteUser.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroup.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroup.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroup.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,61 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.Group;
+import org.jbpm.id.impl.GroupImpl;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class GetGroup implements Command<Group> {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String groupId;
+
+ protected Long dbid;
+
+ public GetGroup(String groupId) {
+ this.groupId = groupId;
+ }
+
+ public GetGroup(Long dbid) {
+ this.dbid = dbid;
+ }
+
+ public Group execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment.get(IdentityDbSession.class);
+ GroupImpl group= null;
+ if(groupId != null) {
+ group = identityDbSession.findGroupById(groupId);
+ }
+ if(dbid != null) {
+ long dbid = this.dbid.longValue();
+ group = identityDbSession.findGroupByDbId(dbid);
+ }
+ return group;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroup.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroups.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroups.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroups.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,58 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class GetGroups implements Command {
+
+ private static final long serialVersionUID = 1L;
+
+ protected int firstResult;
+ protected int maxResults;
+
+ public GetGroups(int firstResult, int maxResults) {
+ this.firstResult = firstResult;
+ this.maxResults = maxResults;
+ }
+
+ public GetGroups() {
+ this.firstResult = -1;
+ this.maxResults = -1;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ if (this.firstResult != -1 && this.maxResults != -1) {
+ return identityDbSession.getSession().getNamedQuery("findGroups")
+ .setFirstResult(firstResult).setMaxResults(maxResults).list();
+ } else {
+ return identityDbSession.getSession().getNamedQuery("findGroups").list();
+ }
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetGroups.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMemberships.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMemberships.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMemberships.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,59 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.id.session.IdentityDbSession;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+
+/**
+ * @author Fady Matar
+ */
+public class GetMemberships implements Command
+{
+
+ private static final long serialVersionUID = 1L;
+
+ protected int firstResult;
+ protected int maxResults;
+
+ public GetMemberships(int firstResult, int maxResults) {
+ this.firstResult = firstResult;
+ this.maxResults = maxResults;
+ }
+
+ public GetMemberships() {
+ this.firstResult = -1;
+ this.maxResults = -1;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ if (this.firstResult != -1 && this.maxResults != -1) {
+ return identityDbSession.getSession().getNamedQuery("findMemberships")
+ .setFirstResult(firstResult).setMaxResults(maxResults).list();
+ } else {
+ return identityDbSession.getSession().getNamedQuery("findMemberships").list();
+ }
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMemberships.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForGroup.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForGroup.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForGroup.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,64 @@
+/*
+ * 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.id.cmd;
+
+import org.hibernate.Query;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class GetMembershipsForGroup implements Command {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String groupId;
+
+ protected Integer firstResult;
+
+ protected Integer maxResults;
+
+ public GetMembershipsForGroup(String groupId) {
+ this.groupId = groupId;
+ }
+
+ public GetMembershipsForGroup(String groupId, Integer firstResult,
+ Integer maxResults) {
+ this.groupId = groupId;
+ this.firstResult = firstResult;
+ this.maxResults = maxResults;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ Query query = identityDbSession.getSession().getNamedQuery(
+ "findMembershipsForGroup").setParameter("id", groupId);
+ if((this.firstResult != null) && (this.maxResults != null)) {
+ query.setFirstResult(this.firstResult);
+ query.setMaxResults(this.maxResults);
+ }
+ return query.list();
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForGroup.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForRole.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForRole.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForRole.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,47 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class GetMembershipsForRole implements Command {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String role;
+
+ public GetMembershipsForRole(String role) {
+ this.role = role;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ return identityDbSession.getSession().getNamedQuery(
+ "findMembershipsForRole").setParameter("role", role).list();
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForRole.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForUser.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForUser.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForUser.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,67 @@
+/*
+ * 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.id.cmd;
+
+import java.util.List;
+
+import org.hibernate.Query;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.Membership;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class GetMembershipsForUser implements Command<List<Membership>> {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String userId;
+
+ protected Integer firstResult = null;
+
+ protected Integer maxResults = null;
+
+ public GetMembershipsForUser(String userId) {
+ this.userId = userId;
+ }
+
+ public GetMembershipsForUser(String userId, Integer firstResult,
+ Integer maxResults) {
+ this.userId = userId;
+ this.firstResult = firstResult;
+ this.maxResults = maxResults;
+ }
+
+ public List<Membership> execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ Query query = identityDbSession.getSession().getNamedQuery(
+ "findMembershipsForUser").setParameter("id", userId);
+ if ((this.firstResult != null) && (this.maxResults != null)) {
+ query.setFirstResult(this.firstResult);
+ query.setMaxResults(this.maxResults);
+ }
+ return query.list();
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetMembershipsForUser.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUser.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUser.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUser.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,61 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.User;
+import org.jbpm.id.impl.UserImpl;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Tom Baeyens
+ */
+public class GetUser implements Command<User> {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String userId;
+
+ protected Long dbid;
+
+ public GetUser(String userId) {
+ this.userId = userId;
+ }
+
+ public GetUser(Long dbid) {
+ this.dbid = dbid;
+ }
+
+ public User execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment.get(IdentityDbSession.class);
+ UserImpl user = null;
+ if(userId != null) {
+ user = identityDbSession.findUserById(userId);
+ }
+ if(dbid != null) {
+ long dbid = this.dbid.longValue();
+ user = identityDbSession.findUserByDbId(dbid);
+ }
+ return user;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUser.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUsers.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUsers.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUsers.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,54 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.id.session.IdentityDbSession;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+
+/**
+ * @author Fady Matar
+ */
+public class GetUsers implements Command
+{
+
+ private static final long serialVersionUID = 1L;
+
+ protected int firstResult;
+ protected int maxResults;
+
+ public GetUsers(int firstResult, int maxResults) {
+ this.firstResult = firstResult;
+ this.maxResults = maxResults;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ if (this.firstResult != -1 && this.maxResults != -1) {
+ return identityDbSession.getSession().getNamedQuery("findUsers")
+ .setFirstResult(firstResult).setMaxResults(maxResults).list();
+ } else {
+ return identityDbSession.getSession().getNamedQuery("findUsers").list();
+ }
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/GetUsers.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveGroup.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveGroup.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveGroup.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,49 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.id.Group;
+import org.jbpm.id.session.IdentityDbSession;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.pvm.internal.cmd.Command;
+
+/**
+ * @author Fady Matar
+ */
+public class SaveGroup implements Command
+{
+
+ private static final long serialVersionUID = 1L;
+
+ private Group groupImpl;
+
+ public SaveGroup(Group groupImpl) {
+ this.groupImpl = groupImpl;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment.get(IdentityDbSession.class);
+ identityDbSession.save(groupImpl);
+ return groupImpl;
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveGroup.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveUser.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveUser.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveUser.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,57 @@
+/*
+ * 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.id.cmd;
+
+import org.hibernate.PropertyValueException;
+import org.jbpm.id.IdentityException;
+import org.jbpm.id.User;
+import org.jbpm.id.session.IdentityDbSession;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+
+/**
+ * @author Tom Baeyens
+ */
+public class SaveUser implements Command
+{
+
+ private static final long serialVersionUID = 1L;
+
+ User userImpl;
+
+ public SaveUser(User userImpl) {
+ this.userImpl = userImpl;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ try {
+ IdentityDbSession identityDbSession = environment.get(IdentityDbSession.class);
+ identityDbSession.save(userImpl);
+ return userImpl;
+ } catch (PropertyValueException e) {
+ if ("not-null property references a null or transient value: org.jbpm.id.impl.UserImpl.id".equals(e.getMessage())) {
+ throw new IdentityException("user doesn't have an id");
+ }
+ throw e;
+ }
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/SaveUser.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateGroup.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateGroup.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateGroup.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,49 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.Group;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class UpdateGroup implements Command {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Group groupImpl;
+
+ public UpdateGroup(Group groupImpl) {
+ this.groupImpl = groupImpl;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ identityDbSession.getSession().update(groupImpl);
+ return groupImpl;
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateGroup.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateMembership.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateMembership.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateMembership.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,48 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.Membership;
+import org.jbpm.id.session.IdentityDbSession;
+
+/**
+ * @author Fady Matar
+ */
+public class UpdateMembership implements Command {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Membership membershipImpl;
+
+ public UpdateMembership(Membership membershipImpl) {
+ this.membershipImpl = membershipImpl;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment
+ .get(IdentityDbSession.class);
+ identityDbSession.getSession().update(membershipImpl);
+ return membershipImpl;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateMembership.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateUser.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateUser.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateUser.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,49 @@
+/*
+ * 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.id.cmd;
+
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.id.User;
+import org.jbpm.id.session.IdentityDbSession;
+
+
+/**
+ * @author Fady Matar
+ */
+public class UpdateUser implements Command {
+
+ private static final long serialVersionUID = 1L;
+
+ protected User userImpl;
+
+ public UpdateUser(User userImpl) {
+ this.userImpl = userImpl;
+ }
+
+ public Object execute(Environment environment) throws Exception {
+ IdentityDbSession identityDbSession = environment.get(IdentityDbSession.class);
+ identityDbSession.getSession().update(userImpl);
+ return userImpl;
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/UpdateUser.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/package.html
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/package.html (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/cmd/package.html 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,3 @@
+<body>
+commands that implement the {@link org.jbpm.id.IdentityService session facade} methods.
+</body>
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/PermissionUserType.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/PermissionUserType.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/PermissionUserType.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,124 @@
+/*
+ * 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.id.hibernate;
+
+import java.io.Serializable;
+import java.lang.reflect.Constructor;
+import java.security.Permission;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.hibernate.Hibernate;
+import org.hibernate.HibernateException;
+import org.hibernate.engine.SessionImplementor;
+import org.hibernate.type.Type;
+import org.hibernate.usertype.CompositeUserType;
+
+/** a custom hibernate type that can store any java.security.Permission. */
+public class PermissionUserType implements CompositeUserType {
+
+ private static final String[] PROPERTY_NAMES = new String[]{"class", "name", "actions"};
+ public String[] getPropertyNames() {
+ return PROPERTY_NAMES;
+ }
+
+ private static final Type[] PROPERTY_TYPES = new Type[]{Hibernate.STRING, Hibernate.STRING, Hibernate.STRING};
+ public Type[] getPropertyTypes() {
+ return PROPERTY_TYPES;
+ }
+
+ public Object getPropertyValue(Object component, int property) throws HibernateException {
+ Permission permission = (Permission) component;
+ if (property==0) {
+ return permission.getClass().getName();
+ } else if (property==1) {
+ return permission.getName();
+ } else if (property==2) {
+ return permission.getActions();
+ } else {
+ throw new IllegalArgumentException("illegal permission property '"+property+"'");
+ }
+ }
+
+ public void setPropertyValue(Object arg0, int arg1, Object arg2) throws HibernateException {
+ throw new UnsupportedOperationException("setting properties on a permission is not allowed");
+ }
+
+ public Class returnedClass() {
+ return Permission.class;
+ }
+
+ public boolean equals(Object left, Object right) throws HibernateException {
+ return left.equals(right);
+ }
+
+ public int hashCode(Object permission) throws HibernateException {
+ return permission.hashCode();
+ }
+
+ private static final Class[] NAME_ACTIONS_CONSTRUCTOR_PARAMETER_TYPES = new Class[]{String.class, String.class};
+ public Object nullSafeGet(ResultSet resultSet, String[] names, SessionImplementor session, Object owner) throws HibernateException, SQLException {
+ Object permission = null;
+ String className = resultSet.getString(names[0]);
+ String name = resultSet.getString(names[1]);
+ String actions = resultSet.getString(names[2]);
+
+ try {
+ // TODO optimize performance by caching the constructors
+ Class permissionClass = PermissionUserType.class.getClassLoader().loadClass(className);
+ Constructor constructor = permissionClass.getDeclaredConstructor(NAME_ACTIONS_CONSTRUCTOR_PARAMETER_TYPES);
+ permission = constructor.newInstance(new Object[]{name, actions});
+ } catch (Exception e) {
+ throw new HibernateException("couldn't create permission from database record ["+className+"|"+name+"|"+actions+"]. Does the permission class have a (String name,String actions) constructor ?", e);
+ }
+
+ return permission;
+ }
+
+ public void nullSafeSet(PreparedStatement preparedStatement, Object value, int index, SessionImplementor session) throws HibernateException, SQLException {
+ Permission permission = (Permission) value;
+ preparedStatement.setString(index, permission.getClass().getName());
+ preparedStatement.setString(index+1, permission.getName());
+ preparedStatement.setString(index+2, permission.getActions());
+ }
+
+ public Object deepCopy(Object permission) throws HibernateException {
+ return permission;
+ }
+
+ public boolean isMutable() {
+ return false;
+ }
+
+ public Serializable disassemble(Object value, SessionImplementor session) throws HibernateException {
+ return (Serializable) value;
+ }
+
+ public Object assemble(Serializable cached, SessionImplementor session, Object owner) throws HibernateException {
+ return cached;
+ }
+
+ public Object replace(Object original, Object target, SessionImplementor session, Object owner) throws HibernateException {
+ return original;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/PermissionUserType.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/package.html
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/package.html (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/hibernate/package.html 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,3 @@
+<body>
+hibernate {@link org.jbpm.id.hibernate.PermissionUserType .
+</body>
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/identity-db.png
===================================================================
(Binary files differ)
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/identity-db.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/identity-java.png
===================================================================
(Binary files differ)
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/identity-java.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/GroupImpl.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/GroupImpl.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/GroupImpl.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,108 @@
+/*
+ * 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.id.impl;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jbpm.id.Group;
+import org.jbpm.pvm.internal.util.EqualsUtil;
+
+/**
+ * Defines a group in the system. A group contains a set of common properties
+ * and some additional properties such as a parent group and children groups.
+ *
+ * @author Tom Baeyens
+ */
+public class GroupImpl extends IdentityImpl implements Serializable, Group {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String id;
+ protected String name;
+ protected String type;
+ protected GroupImpl parent;
+ protected Set<GroupImpl> children;
+ protected Set<MembershipImpl> memberships;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public GroupImpl getParent() {
+ return parent;
+ }
+
+ public Set<GroupImpl> getChildren() {
+ return children;
+ }
+
+ /** sets both ends of the relation */
+ public static void createParentChildRelation(GroupImpl parent, GroupImpl child) {
+ if (child.parent!=null) {
+ removeParentChildRelation(child.parent, child);
+ }
+ if (parent.children==null) {
+ parent.children = new HashSet<GroupImpl>();
+ }
+ parent.children.add(child);
+ child.parent = parent;
+ }
+
+ /** sets both ends of the relation */
+ public static void removeParentChildRelation(GroupImpl parent, GroupImpl child) {
+ if ( (parent.children!=null)
+ && (parent.children.remove(child))
+ ) {
+ child.parent = null;
+ }
+ }
+
+ public Set<MembershipImpl> getMemberships() {
+ return memberships;
+ }
+
+ public boolean equals(Object o) {
+ return EqualsUtil.equals(this, o);
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/GroupImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityImpl.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityImpl.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityImpl.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,130 @@
+/*
+ * 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.
+ */
+
+/**
+ * @author Fady Matar
+ */
+package org.jbpm.id.impl;
+
+import java.io.Serializable;
+import java.security.Permission;
+import java.util.Collections;
+import java.util.Set;
+
+import org.jbpm.id.Identity;
+import org.jbpm.id.IdentityException;
+import org.jbpm.pvm.internal.model.WireProperties;
+import org.jbpm.pvm.internal.wire.descriptor.StringDescriptor;
+
+public class IdentityImpl implements Serializable, Identity {
+
+ private static final long serialVersionUID = 1L;
+
+ protected long dbid;
+ protected int dbversion;
+ protected String id;
+ protected String name;
+
+ protected WireProperties properties;
+ protected Permissions permissions;
+
+ public long getDbid() {
+ return dbid;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ if (id==null) {
+ throw new IdentityException("id is null");
+ }
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setProperty(String key, String value) {
+ if (key==null) {
+ throw new IdentityException("key is null");
+ }
+ if (value==null) {
+ throw new IdentityException("value is null");
+ }
+ if (properties == null) {
+ properties = new WireProperties();
+ }
+
+ StringDescriptor stringDescriptor = new StringDescriptor();
+ stringDescriptor.setName(key);
+ stringDescriptor.setValue(value);
+
+ properties.add(stringDescriptor);
+ }
+
+ public String getProperty(String key) {
+ if (key==null) {
+ throw new IdentityException("key is null");
+ }
+ if (properties == null) {
+ return null;
+ }
+ return (String) properties.get(key);
+ }
+
+ public Set<String> getPropertyKeys() {
+ if (properties==null) {
+ return Collections.EMPTY_SET;
+ }
+ return properties.keys();
+ }
+
+ public void addPermission(Permission permission) {
+ if (permissions==null) {
+ permissions = new Permissions();
+ }
+ permissions.addPermission(permission);
+ }
+
+ public void removePermission(Permission permission) {
+ if (permissions!=null) {
+ permissions.removePermission(permission);
+ if (permissions.isEmpty()) {
+ permissions = null;
+ }
+ }
+ }
+
+ public Set<Permission> getPermissions() {
+ if (permissions!=null) {
+ return permissions.getPermissions();
+ }
+ return Collections.EMPTY_SET;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityServiceImpl.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityServiceImpl.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityServiceImpl.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,191 @@
+/*
+ * 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.id.impl;
+
+import java.util.List;
+
+import org.jbpm.id.Group;
+import org.jbpm.id.IdentityService;
+import org.jbpm.id.Membership;
+import org.jbpm.id.User;
+import org.jbpm.id.cmd.CreateMembership;
+import org.jbpm.id.cmd.DeleteGroup;
+import org.jbpm.id.cmd.DeleteUser;
+import org.jbpm.id.cmd.GetGroup;
+import org.jbpm.id.cmd.GetGroups;
+import org.jbpm.id.cmd.GetMemberships;
+import org.jbpm.id.cmd.GetMembershipsForGroup;
+import org.jbpm.id.cmd.GetMembershipsForRole;
+import org.jbpm.id.cmd.GetMembershipsForUser;
+import org.jbpm.id.cmd.GetUser;
+import org.jbpm.id.cmd.GetUsers;
+import org.jbpm.id.cmd.DeleteMembership;
+import org.jbpm.id.cmd.SaveGroup;
+import org.jbpm.id.cmd.SaveUser;
+import org.jbpm.id.cmd.UpdateGroup;
+import org.jbpm.id.cmd.UpdateMembership;
+import org.jbpm.id.cmd.UpdateUser;
+import org.jbpm.pvm.internal.cmd.CommandService;
+
+/**
+ * @author Tom Baeyens
+ */
+public class IdentityServiceImpl implements IdentityService {
+
+ protected CommandService commandService;
+
+ public IdentityServiceImpl(CommandService commandService) {
+ this.commandService = commandService;
+ }
+
+ public void saveUser(User userImpl) {
+ commandService.execute(new SaveUser(userImpl));
+ }
+
+ public User getUser(String userId) {
+ return (User) commandService.execute(new GetUser(userId));
+ }
+
+ public User getUser(long dbid) {
+ return (User) commandService.execute(new GetUser(dbid));
+ }
+
+ public void updateUser(User userImpl) {
+ commandService.execute(new UpdateUser(userImpl));
+ }
+
+ public MembershipImpl createMembership(String userId, String groupId) {
+ return (MembershipImpl) commandService.execute(new CreateMembership(userId,
+ groupId));
+ }
+
+ public Membership createMembership(String userId, String groupId, String role) {
+ return (Membership) commandService.execute(new CreateMembership(userId,
+ groupId, role));
+ }
+
+ public void deleteGroup(String groupId) {
+ commandService.execute(new DeleteGroup(groupId));
+ }
+
+ public void deleteUser(String userId) {
+ commandService.execute(new DeleteUser(userId));
+ }
+
+ public Group getGroup(String groupId) {
+ return (Group) commandService.execute(new GetGroup(groupId));
+ }
+
+ public Group getGroup(long dbId) {
+ return (Group) commandService.execute(new GetGroup(dbId));
+ }
+
+ public List<Group> getGroups() {
+ return (List) commandService.execute(new GetGroups());
+ }
+
+ public List<Group> getGroups(int firstResult, int maxResults) {
+ return (List) commandService
+ .execute(new GetGroups(firstResult, maxResults));
+ }
+
+ public List<Membership> getMemberships(User userImpl, int firstResult,
+ int maxResults) {
+ return (List) commandService.execute(new GetMemberships(firstResult,
+ maxResults));
+ }
+
+ public List<Membership> getMemberships(Group groupImpl, int firstResult,
+ int maxResults) {
+ return (List) commandService.execute(new GetMemberships(firstResult,
+ maxResults));
+ }
+
+ public List<User> getUsers(int firstResult, int maxResults) {
+ return (List) commandService.execute(new GetUsers(firstResult, maxResults));
+ }
+
+ public void saveGroup(Group groupImpl) {
+ commandService.execute(new SaveGroup(groupImpl));
+ }
+
+ public void updateMembership(Membership membershipImpl) {
+ commandService.execute(new UpdateMembership(membershipImpl));
+ }
+
+ public void updateGroup(Group groupImpl) {
+ commandService.execute(new UpdateGroup(groupImpl));
+ }
+
+ public List<MembershipImpl> getMembershipsForRole(String role) {
+ return (List<MembershipImpl>) commandService
+ .execute(new GetMembershipsForRole(role));
+ }
+
+ public List<Membership> getMembershipsForUser(String userId) {
+ return (List<Membership>) commandService.execute(new GetMembershipsForUser(
+ userId));
+ }
+
+ public List<Membership> getMembershipsForGroup(String groupId) {
+ return (List<Membership>) commandService
+ .execute(new GetMembershipsForGroup(groupId));
+ }
+
+ public void deleteMembership(long membershipDbid) {
+ commandService.execute(new DeleteMembership(membershipDbid));
+ }
+
+ public List<Membership> getMembershipsForGroup(String groupId,
+ int firstResult, int maxResults) {
+ return ((List<Membership>) commandService
+ .execute(new GetMembershipsForGroup(groupId, firstResult, maxResults)));
+ }
+
+ public List<Membership> getMembershipsForGroupType(String userId,
+ String groupType, int firstResult, int maxResults) {
+ return null;
+ }
+
+ public List<Membership> getMembershipsForRole(String groupId, String role,
+ int firstResult, int maxResults) {
+ return null;
+ }
+
+ public List<Membership> getMembershipsForUser(String userId, int firstResult,
+ int maxResults) {
+ return null;
+ }
+
+ public void removeGroupHierarchy(String parentGroupId, String childGroupId) {
+ }
+
+ public void setGroupHierarchy(String parentGroupId, String childGroupId) {
+ }
+
+ public void updatePassword(String userId, String password) {
+ }
+
+ public void verifyPassword(String userId, String password) {
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/IdentityServiceImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/MembershipImpl.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/MembershipImpl.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/MembershipImpl.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,114 @@
+/*
+ * 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.id.impl;
+
+import java.io.Serializable;
+import java.util.HashSet;
+
+import org.jbpm.id.IdentityException;
+import org.jbpm.id.Membership;
+import org.jbpm.pvm.internal.util.EqualsUtil;
+
+/**
+ * @author Tom Baeyens
+ */
+public class MembershipImpl extends IdentityImpl implements Serializable, Membership {
+
+ private static final long serialVersionUID = 1L;
+
+ protected UserImpl user;
+ protected GroupImpl group;
+
+ protected String role;
+
+ protected MembershipImpl() {
+ }
+
+ /** sets both ends of the relationship */
+ public static MembershipImpl createMembership(UserImpl user, GroupImpl group) {
+ return createMembership(user, group, null);
+ }
+
+ /** sets both ends of the relationship */
+ public static MembershipImpl createMembership(UserImpl user, GroupImpl group, String role) {
+ if (user==null) {
+ throw new IdentityException("user is null");
+ }
+ if (group==null) {
+ throw new IdentityException("group is null");
+ }
+ MembershipImpl membership = new MembershipImpl();
+ if (user.getMemberships()==null) {
+ user.memberships = new HashSet<MembershipImpl>();
+ }
+ user.getMemberships().add(membership);
+ membership.user = user;
+
+ if (group.getMemberships()==null) {
+ group.memberships = new HashSet<MembershipImpl>();
+ }
+ group.memberships.add(membership);
+ membership.group = group;
+
+ membership.setRole(role);
+
+ return membership;
+ }
+
+ public static void removeMembership(MembershipImpl membership) {
+ if (membership==null) {
+ throw new IdentityException("membership is null");
+ }
+ UserImpl user = membership.getUser();
+ if ( (user.memberships!=null)
+ && (user.memberships.remove(membership))
+ ) {
+ membership.user = null;
+ }
+ GroupImpl group = membership.getGroup();
+ if ( (group.memberships!=null)
+ && (group.memberships.remove(membership))
+ ) {
+ membership.group = null;
+ }
+ }
+
+ public UserImpl getUser() {
+ return user;
+ }
+
+ public GroupImpl getGroup() {
+ return group;
+ }
+
+ public String getRole() {
+ return role;
+ }
+
+ public void setRole(String role) {
+ this.role = role;
+ }
+
+ public boolean equals(Object o) {
+ return EqualsUtil.equals(this, o);
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/MembershipImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/Permissions.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/Permissions.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/Permissions.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,73 @@
+/*
+ * 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.id.impl;
+
+import java.io.Serializable;
+import java.security.Permission;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jbpm.id.IdentityException;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class Permissions implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ protected long dbid;
+ protected int dbversion;
+ protected Set<Permission> permissions;
+
+ public void addPermission(Permission permission) {
+ if (permission==null) {
+ throw new IdentityException("permission is null");
+ }
+ if (permissions==null) {
+ permissions = new HashSet<Permission>();
+ }
+ permissions.add(permission);
+ }
+
+ public void removePermission(Permission permission) {
+ if (permission==null) {
+ throw new IdentityException("permission is null");
+ }
+ if (permissions!=null) {
+ permissions.remove(permission);
+ }
+ }
+
+ public Set<Permission> getPermissions() {
+ if (permissions==null) {
+ return Collections.EMPTY_SET;
+ }
+ return permissions;
+ }
+
+ public boolean isEmpty() {
+ return ( (permissions==null) || (permissions.isEmpty()));
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/Permissions.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/UserImpl.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/UserImpl.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/UserImpl.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,94 @@
+/*
+ * 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.id.impl;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import org.jbpm.id.User;
+import org.jbpm.pvm.internal.util.EqualsUtil;
+
+/**
+ * @author Tom Baeyens
+ */
+public class UserImpl extends IdentityImpl implements Serializable, User {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String email;
+ protected String phone;
+ protected String address;
+ protected String notes;
+ protected String password;
+
+ protected Set<MembershipImpl> memberships;
+
+ // getters and setters //////////////////////////////////////////////////////
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getNotes() {
+ return notes;
+ }
+
+ public void setNotes(String notes) {
+ this.notes = notes;
+ }
+
+ public Set<MembershipImpl> getMemberships() {
+ return memberships;
+ }
+
+ public boolean equals(Object o) {
+ return EqualsUtil.equals(this, o);
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/UserImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/package.html
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/package.html (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/impl/package.html 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,3 @@
+<body>
+hibernatable entity implementations.
+</body>
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/package.html
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/package.html (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/package.html 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,20 @@
+<body>
+the main model interface classes and IdentityService as the session facade.
+
+<h1>Java model</h1>
+<p><img src="identity-java.png"/></p>
+
+<h1>Database model</h1>
+<p><img src="identity-db.png"/></p>
+
+<h1>Exceptions</h1>
+
+<p>This component itself throws {@link IdentityException}s,
+which is a runtime exception. All the checked exceptions that
+come out of methods used by this identity component are turned into
+Identity exceptions and the cause is attached. All runtime exceptions
+that come out of methods used by identity component will be
+passed on to the client as is.
+</p>
+
+</body>
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/AuthenticationSession.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/AuthenticationSession.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/AuthenticationSession.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,44 @@
+/*
+ * 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.id.session;
+
+import org.hibernate.SQLQuery;
+import org.hibernate.Session;
+
+/**
+ * @author Tom Baeyens
+ */
+public class AuthenticationSession {
+
+ private static final String DEFAULT_QUERY_TEXT = "SELECT U.ID_ FROM ID_USER U WHERE U.ID_ = :username AND U.PWD_ = :password";
+
+ Session session;
+ String queryText = DEFAULT_QUERY_TEXT;
+
+ public String authenticate(String username, String password) {
+ SQLQuery query = session.createSQLQuery(queryText);
+ query.setString("username", username);
+ query.setString("password", password);
+ return (String) query.uniqueResult();
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/AuthenticationSession.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/IdentityDbSession.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/IdentityDbSession.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/IdentityDbSession.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,88 @@
+/*
+ * 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.id.session;
+
+import java.util.List;
+
+import org.hibernate.Query;
+import org.jbpm.id.impl.GroupImpl;
+import org.jbpm.id.impl.MembershipImpl;
+import org.jbpm.id.impl.UserImpl;
+import org.jbpm.pvm.session.DbSession;
+import org.jbpm.pvm.internal.hibernate.HibernateDbSession;
+
+/**
+ * @author Tom Baeyens
+ * @author Fady Matar
+ */
+public class IdentityDbSession extends HibernateDbSession implements DbSession
+{
+
+ public UserImpl findUserById(String userId) {
+ Query query = session.getNamedQuery("findUserById");
+ query.setString("userId", userId);
+ UserImpl user = (UserImpl) query.uniqueResult();
+ return user;
+ }
+
+ public UserImpl findUserByDbId(long dbid) {
+ Query query = session.getNamedQuery("findUserByDbId");
+ query.setLong("dbid", dbid);
+ UserImpl user = (UserImpl) query.uniqueResult();
+ return user;
+ }
+
+ public List<UserImpl> findUsers(int firstResult, int maxResults) {
+ Query query = session.getNamedQuery("findUsers");
+ query.setFirstResult(firstResult);
+ query.setMaxResults(maxResults);
+ return query.list();
+ }
+
+ public GroupImpl findGroupById(String groupId) {
+ Query query = session.getNamedQuery("findGroupById");
+ query.setString("groupId", groupId);
+ GroupImpl group = (GroupImpl) query.uniqueResult();
+ return group;
+ }
+
+ public GroupImpl findGroupByDbId(long dbid) {
+ Query query = session.getNamedQuery("findGroupByDbId");
+ query.setLong("dbid", dbid);
+ GroupImpl group = (GroupImpl) query.uniqueResult();
+ return group;
+ }
+
+ public List<GroupImpl> findGroups(int firstResult, int maxResults) {
+ Query query = session.getNamedQuery("findGroups");
+ query.setFirstResult(firstResult);
+ query.setMaxResults(maxResults);
+ return query.list();
+ }
+
+ public List<MembershipImpl> findMembershipsByGroupAndRole(String groupId, String role) {
+ Query query = session.getNamedQuery("findMembershipsByGroupAndRole");
+ query.setString("groupId", groupId);
+ query.setString("role", role);
+ return query.list();
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/IdentityDbSession.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/QueryOptions.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/QueryOptions.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/QueryOptions.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,56 @@
+/*
+ * 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.id.session;
+
+import org.hibernate.Query;
+
+/**
+ * @author Tom Baeyens
+ */
+public class QueryOptions {
+
+ Integer firstResult;
+ Integer maxResults;
+ Integer fetchSize;
+
+ public void apply(Query query) {
+ if (firstResult!=null) {
+ query.setFirstResult(firstResult);
+ }
+ if (maxResults!=null) {
+ query.setMaxResults(maxResults);
+ }
+ if (fetchSize!=null) {
+ query.setFetchSize(fetchSize);
+ }
+ }
+
+ public void setFirstResult(Integer firstResult) {
+ this.firstResult = firstResult;
+ }
+ public void setMaxResults(Integer maxResults) {
+ this.maxResults = maxResults;
+ }
+ public void setFetchSize(Integer fetchSize) {
+ this.fetchSize = fetchSize;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/QueryOptions.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/package.html
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/package.html (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/session/package.html 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,3 @@
+<body>
+wrappers around hibernate session that add query based methods.
+</body>
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionBinding.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionBinding.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionBinding.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,50 @@
+/*
+ * 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.id.xml;
+
+import org.jbpm.pvm.internal.xml.Parser;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.jbpm.pvm.internal.xml.Binding;
+import org.w3c.dom.Element;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class IdentityDbSessionBinding implements Binding
+{
+
+ public String getCategory()
+ {
+ throw new RuntimeException("NYI");
+ }
+
+ public boolean matches(Element element)
+ {
+ throw new RuntimeException("NYI");
+ }
+
+ public Object parse(Element element, Parse parse, Parser parser) {
+ return new IdentityDbSessionDescriptor();
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionBinding.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionDescriptor.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionDescriptor.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionDescriptor.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,52 @@
+/*
+ * 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.id.xml;
+
+import org.hibernate.Session;
+import org.jbpm.id.session.IdentityDbSession;
+import org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor;
+import org.jbpm.pvm.internal.wire.WireContext;
+import org.jbpm.pvm.internal.wire.WireDefinition;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class IdentityDbSessionDescriptor extends AbstractDescriptor
+{
+
+ private static final long serialVersionUID = 1L;
+
+ public Object construct(WireContext wireContext) {
+ return new IdentityDbSession();
+ }
+
+ public void initialize(Object object, WireContext wireContext) {
+ IdentityDbSession identityDbSession = (IdentityDbSession) object;
+ Session session = wireContext.get(Session.class);
+ identityDbSession.setSession(session);
+ }
+
+ public Class< ? > getType(WireDefinition wireDefinition) {
+ return IdentityDbSession.class;
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityDbSessionDescriptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceBinding.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceBinding.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceBinding.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,49 @@
+/*
+ * 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.id.xml;
+
+import org.jbpm.pvm.internal.xml.Binding;
+import org.jbpm.pvm.internal.xml.Parser;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.w3c.dom.Element;
+
+/**
+ * @author Tom Baeyens
+ */
+public class IdentityServiceBinding implements Binding
+{
+
+ public String getCategory()
+ {
+ throw new RuntimeException("Not implemented");
+ }
+
+ public boolean matches(Element element)
+ {
+ throw new RuntimeException("Not implemented");
+ }
+
+ public Object parse(Element element, Parse parse, Parser parser) {
+ return new IdentityServiceDescriptor();
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceBinding.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceDescriptor.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceDescriptor.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceDescriptor.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,52 @@
+/*
+ * 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.id.xml;
+
+import org.jbpm.id.IdentityService;
+import org.jbpm.id.impl.IdentityServiceImpl;
+import org.jbpm.pvm.internal.wire.WireContext;
+import org.jbpm.pvm.internal.wire.WireDefinition;
+import org.jbpm.pvm.internal.wire.WireException;
+import org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor;
+import org.jbpm.pvm.internal.cmd.CommandService;
+
+/**
+ * @author Tom Baeyens
+ */
+public class IdentityServiceDescriptor extends AbstractDescriptor
+{
+
+ private static final long serialVersionUID = 1L;
+
+ public Object construct(WireContext wireContext) {
+ CommandService commandService = wireContext.get(CommandService.class);
+ if (commandService==null) {
+ throw new WireException("no command-service available");
+ }
+ return new IdentityServiceImpl(commandService);
+ }
+
+ public Class< ? > getType(WireDefinition wireDefinition) {
+ return IdentityService.class;
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/IdentityServiceDescriptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/package.html
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/package.html (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/id/xml/package.html 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,4 @@
+<body>
+bindings for <code>identity-db-session</code> and <code>identity-service</code>
+that are automatically added to wire parser.
+</body>
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.hibernate.mappings.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.hibernate.mappings.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.hibernate.mappings.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,4 @@
+<mappings>
+ <mapping resource="org/jbpm/hibernate.identity.hbm.xml" />
+ <mapping resource="org/jbpm/hibernate.identity.queries.hbm.xml" />
+</mappings>
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.hibernate.mappings.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.wire.bindings.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.wire.bindings.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.wire.bindings.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,6 @@
+<wire-bindings>
+
+ <binding tag="identity-db-session" class="org.jbpm.id.xml.IdentityDbSessionBinding" category="descriptor" />
+ <binding tag="identity-service" class="org.jbpm.id.xml.IdentityServiceBinding" category="descriptor" />
+
+</wire-bindings>
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/java/org/jbpm/pvm.wire.bindings.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.hbm.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.hbm.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.hbm.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<hibernate-mapping auto-import="false" package="org.jbpm.id.impl" default-access="field">
+
+ <!-- ### USER ########################################################### -->
+ <class name="UserImpl" table="JBPM_USER" discriminator-value="U">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <discriminator type="char" column="CLASS_"/>
+ <version name="dbversion" column="DBVERSION_"/>
+
+ <property name="id" column="ID_" unique="true" not-null="true" />
+ <property name="name" column="NAME_" />
+ <property name="email" column="EMAIL_" />
+ <property name="phone" column="PHONE_" />
+ <property name="address" column="ADDRESS_" />
+ <property name="notes" column="NOTES_" />
+ <property name="password" column="PASSWORD_" />
+
+ <set name="memberships">
+ <key column="USER_" foreign-key="FK_MEMSHIP_USR" />
+ <one-to-many class="MembershipImpl" />
+ </set>
+
+ <many-to-one name="properties"
+ class="org.jbpm.pvm.impl.WireProperties"
+ column="PROPS_"
+ foreign-key="FK_USER_PROPS"
+ lazy="false"
+ cascade="all" />
+
+ <many-to-one name="permissions"
+ column="PERMISSIONS_"
+ class="Permissions"
+ lazy="false"
+ cascade="all" />
+
+ </class>
+
+ <!-- ### GROUP ########################################################## -->
+ <class name="GroupImpl" table="JBPM_GROUP" discriminator-value="G">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <discriminator type="char" column="CLASS_"/>
+ <version name="dbversion" column="DBVERSION_"/>
+
+ <property name="id" column="ID_" unique="true" not-null="true" />
+ <property name="name" column="NAME_" />
+ <property name="type" column="TYPE_" />
+
+ <many-to-one name="parent"
+ column="PARENT_"
+ foreign-key="FK_GROUP_PARENT"/>
+
+ <set name="children">
+ <key column="PARENT_" />
+ <one-to-many class="GroupImpl" />
+ </set>
+
+ <set name="memberships">
+ <key column="GROUP_" foreign-key="FK_MEMSHIP_GRP" />
+ <one-to-many class="MembershipImpl" />
+ </set>
+
+ <many-to-one name="properties"
+ class="org.jbpm.pvm.impl.WireProperties"
+ column="PROPS_"
+ foreign-key="FK_GROUP_PROPS"
+ lazy="false"
+ cascade="all" />
+
+ <many-to-one name="permissions"
+ column="PERMISSIONS_"
+ class="Permissions"
+ lazy="false"
+ cascade="all" />
+
+ </class>
+
+ <!-- ### MEMBERSHIP ##################################################### -->
+ <class name="MembershipImpl" table="JBPM_MEMBERSHIP" discriminator-value="M">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <discriminator type="char" column="CLASS_"/>
+ <version name="dbversion" column="DBVERSION_"/>
+
+ <property name="role" column="ROLE__" />
+
+ <many-to-one name="user"
+ column="USER__"
+ class="UserImpl" />
+
+ <many-to-one name="group"
+ column="GROUP_"
+ class="GroupImpl" />
+
+ <many-to-one name="permissions"
+ column="PERMISSIONS_"
+ class="Permissions"
+ lazy="false"
+ cascade="all" />
+ </class>
+
+ <!-- ### PERMISSIONS #################################################### -->
+ <class name="Permissions">
+ <id name="dbid" column="DBID_">
+ <generator class="native" />
+ </id>
+ <version name="dbversion" column="DBVERSION_"/>
+ <set name="permissions" cascade="all" lazy="false" table="JBPM_PERMISSION">
+ <key column="USER_" foreign-key="none" not-null="false" />
+ <element type="org.jbpm.id.hibernate.PermissionUserType">
+ <column name="CLASS_"/>
+ <column name="NAME_"/>
+ <column name="ACTION_"/>
+ </element>
+ </set>
+ </class>
+
+</hibernate-mapping>
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.hbm.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.queries.hbm.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.queries.hbm.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.queries.hbm.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping>
+
+ <query name="findUserById">
+ <![CDATA[
+ select user
+ from org.jbpm.id.User as user
+ where user.id = :userId
+ ]]>
+ </query>
+
+ <query name="findUserByDbId">
+ <![CDATA[
+ select user
+ from org.jbpm.id.User as user
+ where user.dbid = :dbid
+ ]]>
+ </query>
+
+ <query name="findUsers">
+ <![CDATA[
+ select user
+ from org.jbpm.id.User as user
+ order by user.id asc
+ ]]>
+ </query>
+
+ <query name="findGroupById">
+ <![CDATA[
+ select group
+ from org.jbpm.id.Group as group
+ where group.id = :groupId
+ ]]>
+ </query>
+
+ <query name="findGroupByDbId">
+ <![CDATA[
+ select group
+ from org.jbpm.id.Group as group
+ where group.dbid = :dbid
+ ]]>
+ </query>
+
+ <query name="findGroups">
+ <![CDATA[
+ select group
+ from org.jbpm.id.Group as group
+ order by group.id asc
+ ]]>
+ </query>
+
+ <query name="findMembershipsByGroupAndRole">
+ <![CDATA[
+ select membership
+ from org.jbpm.id.Membership as membership
+ where membership.group.id = :groupId
+ and membership.role = :role
+ ]]>
+ </query>
+
+ <query name="findMembershipsForUser">
+ <![CDATA[
+ select membership
+ from org.jbpm.id.Membership as membership
+ where membership.user.id = :id
+ ]]>
+ </query>
+
+ <query name="findMembershipsForGroup">
+ <![CDATA[
+ select membership
+ from org.jbpm.id.Membership as membership
+ where membership.group.id = :id
+ ]]>
+ </query>
+
+</hibernate-mapping>
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/hibernate.identity.queries.hbm.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/id/environment.cfg.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/id/environment.cfg.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/id/environment.cfg.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,24 @@
+<contexts>
+
+ <environment-factory>
+
+ <hibernate-configuration>
+ <properties resource="hibernate.properties" />
+ <mappings resource="org/jbpm/pvm/pvm.hibernate.mappings.xml" />
+ <cache-configuration resource="org/jbpm/pvm/pvm.cache.xml" usage="nonstrict-read-write" />
+ </hibernate-configuration>
+
+ <hibernate-session-factory />
+ <variable-types resource="org/jbpm/pvm/pvm.types.xml" />
+
+ </environment-factory>
+
+ <environment>
+
+ <transaction />
+ <hibernate-session />
+ <pvm-db-session />
+
+ </environment>
+
+</contexts>
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/id/environment.cfg.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.hibernate.mappings.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.hibernate.mappings.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.hibernate.mappings.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,4 @@
+<mappings>
+ <mapping resource="org/jbpm/hibernate.identity.hbm.xml" />
+ <mapping resource="org/jbpm/hibernate.identity.queries.hbm.xml" />
+</mappings>
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.hibernate.mappings.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.wire.bindings.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.wire.bindings.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.wire.bindings.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,6 @@
+<wire-bindings>
+
+ <binding tag="identity-db-session" class="org.jbpm.id.xml.IdentityDbSessionBinding" category="descriptor" />
+ <binding tag="identity-service" class="org.jbpm.id.xml.IdentityServiceBinding" category="descriptor" />
+
+</wire-bindings>
Property changes on: jbpm4/indentity/trunk/modules/core/src/main/resources/org/jbpm/pvm.wire.bindings.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/main/resources/release.notes.html
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/main/resources/release.notes.html (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/main/resources/release.notes.html 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,31 @@
+<html>
+ <head>
+ <title>Process Virtual Machine: Release Notes</title>
+ </head>
+<body>
+
+<h1>The Process Virtual Machine</h1>
+
+<p>This software is released under the <a href="lgpl.txt">LGPL</a> license.</p>
+
+<h3>First alpha version</h3>
+
+<p><b>Warning:</b> Nothing in this release can be considered as stable.</p>
+
+<p>The main purpose of this release is to publish the structure of the process
+definitions, the execution and the way that activities implement the
+runtime behaviour of the nodes and event listeners.
+</p>
+
+<p>There is also an initial iteration of a session facade: org.jbpm.PvmService
+</p>
+
+<p>To get started, see the <a href="javadoc/index.html">javadocs</a> and the
+<a href="manual/html_single/index.html">manual</a></p>
+
+<p>Feedback is appreciated on <a href="http://www.jboss.org/index.html?module=bb&op=viewforum&f=253">the
+PVM Forum</a>.
+</p>
+
+</body>
+</html>
\ No newline at end of file
Added: jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/AllTests.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/AllTests.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/AllTests.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,37 @@
+/*
+ * 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.id;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTests {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite("org.jbpm.id");
+ //$JUnit-BEGIN$
+ suite.addTestSuite(IdentityServiceTest.class);
+ //$JUnit-END$
+ return suite;
+ }
+
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/AllTests.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/IdentityServiceTest.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/IdentityServiceTest.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/IdentityServiceTest.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,573 @@
+/*
+ * 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.id;
+
+import java.io.FilePermission;
+import java.net.SocketPermission;
+import java.security.Permission;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.jbpm.id.impl.GroupImpl;
+import org.jbpm.id.impl.MembershipImpl;
+import org.jbpm.id.impl.UserImpl;
+import org.jbpm.pvm.test.base.ServiceTestCase;
+
+/**
+ * @author Tom Baeyens
+ */
+public class IdentityServiceTest extends ServiceTestCase
+{
+
+ public void testUserNew() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+ assertNotNull(
+ "identity service probably not correctly configured. for an example, see how it's done in the pvm service test",
+ identityService);
+
+ User user = new UserImpl();
+ user.setId("tombaeyens");
+ user.setName("Tom Baeyens");
+ user.setEmail("tom.baeyens(a)jboss.com");
+ identityService.saveUser(user);
+
+ user = identityService.getUser("tombaeyens");
+ assertNotNull(user);
+ assertEquals("Tom Baeyens", user.getName());
+ assertEquals("tom.baeyens(a)jboss.com", user.getEmail());
+ }
+
+ public void testUserUpdate() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fady.matar(a)jboss.com");
+ identityService.saveUser(user);
+
+ user = identityService.getUser("fmatar");
+
+ user.setName("Fady Matar");
+ user.setEmail("fmatar(a)redhat.com");
+ user.setAddress("the world");
+ user.setPhone("93845739485");
+ user.setNotes("a great guy");
+
+ identityService.updateUser(user);
+ user = identityService.getUser("fmatar");
+
+ assertEquals("fmatar", user.getId());
+ assertEquals("Fady Matar", user.getName());
+ assertEquals("fmatar(a)redhat.com", user.getEmail());
+ assertEquals("the world", user.getAddress());
+ assertEquals("93845739485", user.getPhone());
+ assertEquals("a great guy", user.getNotes());
+ }
+
+ public void testUserDelete() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fady.matar(a)jboss.com");
+
+ identityService.saveUser(user);
+
+ identityService.deleteUser("fmatar");
+
+ assertNull(identityService.getUser("fmatar"));
+ }
+
+ public void testUserProperties() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setProperty("first.name", "Fady");
+ user.setProperty("last.name", "Matar");
+ identityService.saveUser(user);
+
+ user = identityService.getUser("fmatar");
+
+ assertEquals("Fady", user.getProperty("first.name"));
+ assertEquals("Matar", user.getProperty("last.name"));
+ }
+
+ public void testUserPermissions() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.addPermission(new FilePermission("c:", "read"));
+ user.addPermission(new SocketPermission("localhost:1024-",
+ "accept,connect,listen"));
+
+ identityService.saveUser(user);
+
+ user = identityService.getUser("fmatar");
+
+ Set<Permission> permissions = user.getPermissions();
+ assertTrue(permissions.contains(new FilePermission("c:", "read")));
+ assertTrue(permissions.contains(new SocketPermission("localhost:1024-",
+ "accept,connect,listen")));
+ }
+
+ public void testUserWithoutId() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ try {
+ identityService.saveUser(new UserImpl());
+ fail("expected exception");
+ } catch (IdentityException e) {
+ // OK
+ assertTextPresent("user doesn't have an id", e.getMessage());
+ }
+ }
+
+ public void testNewGroup() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ Group retrievedGroup = identityService.getGroup("admin");
+ assertNotNull(group);
+ assertEquals("Administrators", retrievedGroup.getName());
+ assertEquals("organization", retrievedGroup.getType());
+ }
+
+ public void testUpdateGroup() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+ identityService.saveGroup(group);
+ assertNotNull(group);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fady.matar(a)jboss.com");
+ identityService.saveUser(user);
+ assertNotNull(user);
+
+ identityService.createMembership(user.getId(), group.getId());
+ }
+
+ public void testDeleteGroup() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+ identityService.saveGroup(group);
+
+ Group retrievedGroup = identityService.getGroup("admin");
+ assertNotNull(retrievedGroup);
+
+ identityService.deleteGroup("admin");
+ retrievedGroup = identityService.getGroup("admin");
+ assertNull(retrievedGroup);
+ }
+
+ public void testNewMembership() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fmatar(a)redhat.com");
+
+ identityService.saveUser(user);
+
+ Membership membership = identityService.createMembership("fmatar", "admin");
+ assertEquals(user.getName(), membership.getUser().getName());
+ assertEquals(group.getName(), membership.getGroup().getName());
+
+ Membership membership2 = identityService.createMembership("fmatar",
+ "admin", "accountant");
+ assertEquals(user.getName(), membership2.getUser().getName());
+ assertEquals(group.getName(), membership2.getGroup().getName());
+ assertEquals("accountant", membership2.getRole());
+ }
+
+ public void testUpdateMembership() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fmatar(a)redhat.com");
+
+ identityService.saveUser(user);
+
+ Membership membership = identityService.createMembership("fmatar", "admin");
+ assertEquals(user.getName(), membership.getUser().getName());
+ assertEquals(group.getName(), membership.getGroup().getName());
+
+ Group usersGroup = new GroupImpl();
+ usersGroup.setName("users");
+ usersGroup.setType("security-role");
+ membership.setRole("operator");
+
+ identityService.updateMembership(membership);
+ assertEquals("operator", membership.getRole());
+ }
+
+ public void testRemoveMembership() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fmatar(a)redhat.com");
+
+ identityService.saveUser(user);
+
+ Membership membershipImpl = identityService.createMembership("fmatar",
+ "admin");
+ assertEquals(user.getName(), membershipImpl.getUser().getName());
+ assertEquals(group.getName(), membershipImpl.getGroup().getName());
+ }
+
+ public void testGetUsers() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fmatar(a)redhat.com");
+ identityService.saveUser(user);
+
+ user = new UserImpl();
+ user.setId("tbaeyens");
+ user.setName("Tom Baeyens");
+ user.setEmail("tbaeyens(a)redhat.com");
+ identityService.saveUser(user);
+
+ user = new UserImpl();
+ user.setId("kaers");
+ user.setName("Koen Aers");
+ user.setEmail("kaers(a)redhat.com");
+ identityService.saveUser(user);
+
+ List<User> usersList = identityService.getUsers(1, 2);
+ assertEquals(2, usersList.size());
+
+ usersList = identityService.getUsers(2, 1);
+ assertEquals(1, usersList.size());
+
+ usersList = identityService.getUsers(0, 10);
+ assertEquals(3, usersList.size());
+ assertEquals("fmatar", usersList.get(0).getId());
+ assertEquals("kaers", usersList.get(1).getId());
+ assertEquals("tbaeyens", usersList.get(2).getId());
+ }
+
+ public void testGetGroups() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("user");
+ group.setName("Users");
+ group.setType("organization");
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("contributor");
+ group.setName("Contributors");
+ group.setType("security-role");
+ identityService.saveGroup(group);
+
+ List<Group> groupsList = identityService.getGroups(1, 2);
+ assertEquals(2, groupsList.size());
+
+ groupsList = identityService.getGroups(2, 1);
+ assertEquals(1, groupsList.size());
+ }
+
+ public void testGetMemberships() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("users");
+ group.setName("Users");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("reviewers");
+ group.setName("Reviewers");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("moderators");
+ group.setName("Moderators ");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("contrib");
+ group.setName("Contributors ");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fmatar(a)redhat.com");
+ identityService.saveUser(user);
+
+ user = new UserImpl();
+ user.setId("tbaeyens");
+ user.setName("Tom Baeyens");
+ user.setEmail("tbaeyens(a)redhat.com");
+ identityService.saveUser(user);
+
+ user = new UserImpl();
+ user.setId("kaers");
+ user.setName("Koen Aers");
+ user.setEmail("kaers(a)redhat.com");
+ identityService.saveUser(user);
+
+ identityService.createMembership("fmatar", "admin");
+ identityService.createMembership("kaers", "admin", "administrator");
+ identityService.createMembership("tbaeyens", "admin", "administrator");
+ identityService.createMembership("fmatar", "admin", "administrator");
+ identityService.createMembership("fmatar", "admin", "moderator");
+
+ assertEquals(3, identityService.getMembershipsForUser("fmatar").size());
+ assertEquals(1, identityService.getMembershipsForUser("kaers").size());
+ assertEquals(1, identityService.getMembershipsForUser("tbaeyens").size());
+ }
+
+ public void testDeleteMembership() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fmatar(a)redhat.com");
+
+ identityService.saveUser(user);
+
+ identityService.createMembership("fmatar", "admin");
+
+ ArrayList<Membership> membershipsList = new ArrayList<Membership>(
+ identityService.getMembershipsForUser("fmatar"));
+ assertNotNull(membershipsList);
+ assertEquals(1, membershipsList.size());
+
+ MembershipImpl membership = (MembershipImpl) membershipsList.get(0);
+ identityService.deleteMembership(membership.getDbid());
+
+ membershipsList = new ArrayList<Membership>(identityService
+ .getMembershipsForUser("fmatar"));
+ assertNotNull(membershipsList);
+ assertEquals(0, membershipsList.size());
+ }
+
+ public void testGetMembershipsForGroup() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group group = new GroupImpl();
+ group.setId("admin");
+ group.setName("Administrators");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("users");
+ group.setName("Users");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("reviewers");
+ group.setName("Reviewers");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("moderators");
+ group.setName("Moderators ");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ group = new GroupImpl();
+ group.setId("contrib");
+ group.setName("Contributors ");
+ group.setType("organization");
+
+ identityService.saveGroup(group);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ user.setName("Fady Matar");
+ user.setEmail("fmatar(a)redhat.com");
+ identityService.saveUser(user);
+
+ user = new UserImpl();
+ user.setId("tbaeyens");
+ user.setName("Tom Baeyens");
+ user.setEmail("tbaeyens(a)redhat.com");
+ identityService.saveUser(user);
+
+ user = new UserImpl();
+ user.setId("kaers");
+ user.setName("Koen Aers");
+ user.setEmail("kaers(a)redhat.com");
+ identityService.saveUser(user);
+
+ identityService.createMembership("fmatar", "admin");
+ identityService.createMembership("kaers", "admin", "administrator");
+ identityService.createMembership("tbaeyens", "admin", "administrator");
+ identityService.createMembership("fmatar", "admin", "administrator");
+ identityService.createMembership("fmatar", "admin", "moderator");
+
+ assertEquals(5, identityService.getMembershipsForGroup("admin").size());
+ assertEquals(1, identityService.getMembershipsForGroup("admin", 4, 2)
+ .size());
+ }
+
+ public void testGroupCascadingDelete() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ GroupImpl rootGroup = new GroupImpl();
+ rootGroup.setId("root");
+ rootGroup.setName("Root Group");
+ identityService.saveGroup(rootGroup);
+
+ GroupImpl subGroup1 = new GroupImpl();
+ subGroup1.setId("subgroup1");
+ identityService.saveGroup(subGroup1);
+
+ GroupImpl subGroup2 = new GroupImpl();
+ subGroup2.setId("subgroup2");
+ identityService.saveGroup(subGroup2);
+
+ GroupImpl.createParentChildRelation(rootGroup, subGroup1);
+ assertEquals(3, identityService.getGroups().size());
+ identityService.deleteGroup(rootGroup.getId()); //child group is not deleted
+ assertEquals(2, identityService.getGroups().size());
+ }
+
+ public void testDuplicateMembership() {
+ IdentityService identityService = getEnvironmentFactory().get(
+ IdentityService.class);
+
+ Group rootGroup = new GroupImpl();
+ rootGroup.setId("root");
+ rootGroup.setName("Root Group");
+ identityService.saveGroup(rootGroup);
+
+ User user = new UserImpl();
+ user.setId("fmatar");
+ identityService.saveUser(user);
+
+ identityService.createMembership("fmatar", "root");
+ identityService.createMembership("fmatar", "root");
+ identityService.createMembership("fmatar", "root");
+ assertEquals(3, identityService.getMembershipsForUser("fmatar").size());
+
+ identityService.createMembership("fmatar", "root" , "admin");
+ identityService.createMembership("fmatar", "root" , "admin");
+ assertEquals(5, identityService.getMembershipsForUser("fmatar").size());
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/IdentityServiceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/ObjectEqualityDbTest.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/ObjectEqualityDbTest.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/ObjectEqualityDbTest.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,64 @@
+/*
+ * 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.id;
+
+import java.util.List;
+
+import org.hibernate.Hibernate;
+import org.hibernate.proxy.HibernateProxy;
+import org.jbpm.id.impl.GroupImpl;
+import org.jbpm.id.impl.MembershipImpl;
+import org.jbpm.id.impl.UserImpl;
+import org.jbpm.id.session.IdentityDbSession;
+import org.jbpm.pvm.test.base.DbTestCase;
+
+/**
+ * @author Fady Matar
+ */
+public class ObjectEqualityDbTest extends DbTestCase
+{
+
+ public void testEqualUser() {
+ UserImpl tom = new UserImpl();
+ tom.setId("tom");
+ getDbSession().save(tom);
+
+ GroupImpl theGoodGuys = new GroupImpl();
+ theGoodGuys.setId("theGoodGuys");
+ getDbSession().save(theGoodGuys);
+
+ MembershipImpl membership = MembershipImpl.createMembership(tom, theGoodGuys, "conscience");
+ getDbSession().save(membership);
+
+ newTransaction();
+
+ List<MembershipImpl> memberships = environment.get(IdentityDbSession.class).findMembershipsByGroupAndRole("theGoodGuys", "conscience");
+ membership = memberships.get(0);
+
+ UserImpl proxyUser = membership.getUser();
+ Hibernate.initialize(proxyUser);
+ UserImpl realUser = (UserImpl) ((HibernateProxy)proxyUser).getHibernateLazyInitializer().getImplementation();
+
+ assertNotSame(proxyUser, realUser);
+ assertEquals(proxyUser, realUser);
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/ObjectEqualityDbTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/UserTest.java
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/UserTest.java (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/UserTest.java 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,106 @@
+/*
+ * 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.id;
+
+import java.io.FilePermission;
+
+import org.jbpm.id.impl.GroupImpl;
+import org.jbpm.id.impl.MembershipImpl;
+import org.jbpm.id.impl.UserImpl;
+import org.jbpm.pvm.test.base.JbpmTestCase;
+
+/**
+ * @author Tom Baeyens
+ */
+public class UserTest extends JbpmTestCase
+{
+
+ public void testUser() {
+ User tom = new UserImpl();
+ tom.setId("tom");
+ tom.setName("Tom");
+ tom.setAddress("around the corner");
+ tom.setEmail("tom(a)world.com");
+ tom.setNotes("great guy");
+ tom.setPhone("+32xxxxxxxx");
+
+ assertEquals("tom", tom.getId());
+ assertEquals("Tom", tom.getName());
+ assertEquals("around the corner", tom.getAddress());
+ assertEquals("tom(a)world.com", tom.getEmail());
+ assertEquals("great guy", tom.getNotes());
+ assertEquals("+32xxxxxxxx", tom.getPhone());
+ }
+
+ public void testProperties() {
+ UserImpl user = new UserImpl();
+ user.setProperty("status", "divorced");
+ user.setProperty("employment-status", "unemployed");
+
+ assertEquals("divorced", user.getProperty("status"));
+ assertEquals("unemployed", user.getProperty("employment-status"));
+ }
+
+ public void testPermissions() {
+ UserImpl user = new UserImpl();
+ FilePermission fp1 = new FilePermission("/home/file/test",
+ "read, write, execute");
+ FilePermission fp2 = new FilePermission("/home/file/test2", "read, write");
+ user.addPermission(fp1);
+ user.addPermission(fp2);
+ assertFalse(user.getPermissions().isEmpty());
+ assertEquals(2, user.getPermissions().size());
+ assertTrue(user.getPermissions().contains(fp1));
+ assertTrue(user.getPermissions().contains(fp2));
+ }
+
+ public void testMemberships() {
+ UserImpl user = new UserImpl();
+ user.setId("fmatar");
+
+ GroupImpl group = new GroupImpl();
+ group.setId("users");
+
+ MembershipImpl membership = MembershipImpl.createMembership(user, group);
+ membership.setRole("contributor");
+
+ group = new GroupImpl();
+ group.setId("jbpm");
+
+ membership = MembershipImpl.createMembership(user, group);
+
+ group = new GroupImpl();
+ group.setId("jboss");
+
+ membership = MembershipImpl.createMembership(user, group);
+ membership.setRole("speaker");
+
+ group = new GroupImpl();
+ group.setId("redhat");
+
+ membership = MembershipImpl.createMembership(user, group);
+ membership.setRole("staff");
+
+ assertFalse(user.getMemberships().isEmpty());
+ assertEquals(4, user.getMemberships().size());
+ }
+}
Property changes on: jbpm4/indentity/trunk/modules/core/src/test/java/org/jbpm/id/UserTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/modules/core/src/test/resources/org.jbpm.id.cfg.xml
===================================================================
--- jbpm4/indentity/trunk/modules/core/src/test/resources/org.jbpm.id.cfg.xml (rev 0)
+++ jbpm4/indentity/trunk/modules/core/src/test/resources/org.jbpm.id.cfg.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,31 @@
+<environment>
+
+ <application>
+
+ <identity-service />
+
+ <standard-command-service>
+ <retry-interceptor />
+ <environment-interceptor />
+ <transaction-interceptor />
+ </standard-command-service>
+
+ <hibernate-configuration>
+ <properties resource="hibernate.properties" />
+ <mappings resources="org/jbpm/pvm.hibernate.mappings.xml" />
+ <cache-configuration resource="org/jbpm/pvm.definition.cache.xml" usage="nonstrict-read-write" />
+ </hibernate-configuration>
+
+ <hibernate-session-factory />
+
+ <variable-types resource="org/jbpm/pvm.variable.types.xml" />
+
+ </application>
+
+ <block>
+ <standard-transaction />
+ <hibernate-session />
+ <identity-db-session />
+ </block>
+
+</environment>
Property changes on: jbpm4/indentity/trunk/modules/core/src/test/resources/org.jbpm.id.cfg.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbpm4/indentity/trunk/pom.xml
===================================================================
--- jbpm4/indentity/trunk/pom.xml (rev 0)
+++ jbpm4/indentity/trunk/pom.xml 2008-07-14 13:57:16 UTC (rev 1619)
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ====================================================================== -->
+<!-- -->
+<!-- JBoss, the OpenSource J2EE webOS -->
+<!-- -->
+<!-- Distributable under LGPL license. -->
+<!-- See terms of license at http://www.gnu.org. -->
+<!-- -->
+<!-- ====================================================================== -->
+
+<!-- $Id$ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <name>JBoss jBPM 4 - Identity</name>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>identity</artifactId>
+ <packaging>pom</packaging>
+
+ <version>4.0.0-SNAPSHOT</version>
+
+ <!-- Parent -->
+ <parent>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm-parent</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <!-- Modules -->
+ <modules>
+ <module>modules/core</module>
+ </modules>
+
+ <!-- Properties -->
+ <properties>
+ <pvm.version>1.0.0-SNAPSHOT</pvm.version>
+ <jboss.jbpm.api.version>1.0.0-SNAPSHOT</jboss.jbpm.api.version>
+ <junit.version>3.8.2</junit.version>
+ <log4j.version>1.2.14</log4j.version>
+ </properties>
+
+ <!-- DependencyManagement -->
+ <dependencyManagement>
+ <dependencies>
+ <!-- jBPM Dependencies -->
+ <dependency>
+ <groupId>org.jboss.jbpm.pvm</groupId>
+ <artifactId>pvm-core</artifactId>
+ <version>${pvm.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.jbpm</groupId>
+ <artifactId>jbpm-api</artifactId>
+ <version>${jboss.jbpm.api.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j.version}</version>
+ </dependency>
+
+ <!-- Compile Dependencies -->
+ <!--dependency>
+ <groupId>bsh</groupId>
+ <artifactId>bsh</artifactId>
+ </dependency-->
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>${junit.version}</version>
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
+ <!-- Plugins -->
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+ <!-- DistributionManagement -->
+ <distributionManagement>
+ <site>
+ <id>jbws.dyndns.org</id>
+ <url>file:///home/tdiesler/workspace/jbpm-site</url>
+ </site>
+ </distributionManagement>
+
+ <!-- Profiles -->
+ <profiles>
+
+ <!--
+ Name: skiptests
+ Desc: Skips the tests
+ -->
+ <profile>
+ <id>skiptests</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skipTests>true</skipTests>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <quiet>true</quiet>
+ <source>1.5</source>
+ <verbose>false</verbose>
+ <excludePackageNames>*.internal:*.test</excludePackageNames>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <repositories>
+ <repository>
+ <id>maven2.java.net</id>
+ <name>Java.net Repository for Maven 2</name>
+ <url>http://download.java.net/maven/2/</url>
+ </repository>
+ <repository>
+ <id>java.net</id>
+ <url>http://download.java.net/maven/1/</url>
+ <layout>legacy</layout>
+ </repository>
+ <repository>
+ <id>repository.jboss.org</id>
+ <url>http://repository.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>snapshots.jboss.org</id>
+ <url>http://snapshots.jboss.org/maven2</url>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+</project>
Property changes on: jbpm4/indentity/trunk/pom.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
17 years, 9 months
JBoss JBPM SVN: r1618 - jbpm4.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-07-14 09:51:21 -0400 (Mon, 14 Jul 2008)
New Revision: 1618
Added:
jbpm4/indentity/
jbpm4/task/
Log:
Make identity and task projects on their own
17 years, 9 months
JBoss JBPM SVN: r1617 - jbpm4.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-07-14 09:48:52 -0400 (Mon, 14 Jul 2008)
New Revision: 1617
Removed:
jbpm4/branches/
Log:
Moved to jpdl/trunk
17 years, 9 months
JBoss JBPM SVN: r1616 - in jbpm4: jpdl and 1 other directory.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-07-14 09:46:32 -0400 (Mon, 14 Jul 2008)
New Revision: 1616
Added:
jbpm4/jpdl/trunk/
Removed:
jbpm4/trunk/
Log:
Project reorganization
Copied: jbpm4/jpdl/trunk (from rev 1615, jbpm4/trunk)
17 years, 9 months