public ProcessInstanceImpl(String actorId, ProcessDefinitionImpl processDefinition)
 {
     this._start = DateTime.Now;
     this._initiatorActorId = actorId;
     this._processDefinition = processDefinition;
     this._rootFlow = new FlowImpl(actorId, this);
 }
Exemple #2
0
 public ProcessDefinitionBuildContext(ProcessDefinitionImpl processDefinition, IDictionary <string, byte[]> entries, DbSession dbSession)
 {
     InitBlock();
     this._processDefinition = processDefinition;
     this._processBlock      = processDefinition;
     this._dbSession         = dbSession;
     this._entries           = entries;
 }
 public ExecutionContextImpl(String actorId, ProcessInstanceImpl processInstance, DbSession dbSession, IOrganisationService organisationComponent)
 {
     this._actorId = actorId;
     this._processInstance = processInstance;
     this._processDefinition = (ProcessDefinitionImpl) processInstance.ProcessDefinition;
     this._dbSession = dbSession;
     this._organisationComponent = organisationComponent;
     this._assignedFlows = new ArrayList();
 }
Exemple #4
0
        public IProcessDefinition GetProcessDefinition(Int64 processDefinitionId, Relations relations, DbSession dbSession)
        {
            ProcessDefinitionImpl processDefinition = null;

            processDefinition = (ProcessDefinitionImpl)dbSession.Load(typeof(ProcessDefinitionImpl), processDefinitionId);
            if (relations != null)
            {
                relations.Resolve(processDefinition);
            }
            return(processDefinition);
        }
Exemple #5
0
        public IProcessDefinition GetProcessDefinition(String processDefinitionName, Relations relations, DbSession dbSession)
        {
            ProcessDefinitionImpl processDefinition = null;

            processDefinition = (ProcessDefinitionImpl)dbSession.FindOne(queryFindProcessDefinitionByName, processDefinitionName, DbType.STRING);
            if (relations != null)
            {
                relations.Resolve(processDefinition);
            }
            return(processDefinition);
        }
Exemple #6
0
 public void Save(ProcessDefinitionImpl processDefinition, DbSession dbSession)
 {
     try
     {
         dbSession.SaveOrUpdate(processDefinition);
         dbSession.Flush();
     }
     catch (DbException e)
     {
         throw new NpdlException("couldn't deploy process archive due to a database exception : " + e.Message, e);
     }
 }
 public void Save(ProcessDefinitionImpl processDefinition,DbSession dbSession) 
 {
     try
     {
         dbSession.SaveOrUpdate(processDefinition);
         dbSession.Flush();
     }
     catch (DbException e)
     {
         throw new NpdlException("couldn't deploy process archive due to a database exception : " + e.Message, e);
     }
 }
        public void ReadProcessDataTest() 
        {
            XmlElement xmlElement = helloWorld1();
            ProcessDefinitionImpl processDefinition = new ProcessDefinitionImpl();
            ProcessDefinitionBuildContext processDefinitionBuilder = new ProcessDefinitionBuildContext(processDefinition, null,  null);
            processDefinition.ReadProcessData(xmlElement, processDefinitionBuilder);

            Assert.AreEqual("Hello world 1", processDefinition.Name);
            Assert.AreEqual("This is the simples process.", processDefinition.Description);
            Assert.IsNotNull(processDefinition.StartState);
            Assert.AreEqual("start",processDefinition.StartState.Name);
            Assert.IsNotNull(processDefinition.EndState);
            Assert.AreEqual("end",processDefinition.EndState.Name);
            //activity-state在Nodes裏面,以後再換掉
        }
 public void SetProcessDefinition(IProcessDefinition processDefinition)
 {
     this._processDefinition = (ProcessDefinitionImpl) processDefinition;
 }
		public ProcessDefinitionBuildContext(ProcessDefinitionImpl processDefinition, IDictionary<string,byte[]> entries, DbSession dbSession)
		{
			InitBlock();
			this._processDefinition = processDefinition;
			this._processBlock = processDefinition;
			this._dbSession = dbSession;
			this._entries = entries;
		}
Exemple #11
0
		private IAuthorizationHandler GetAuthorizationHandler(ProcessDefinitionImpl processDefinition)
		{
			IAuthorizationHandler authorizationHandler = null;
			DelegationImpl delegation = processDefinition.AuthorizationDelegation;
			if (delegation != null)
			{
				authorizationHandler = (IAuthorizationHandler) delegation.GetDelegate();
			}
			return authorizationHandler;
		}
        public void DeployProcessArchive(Stream processArchiveStream, DbSession dbSession)
        {
            log.Debug("reading process archive...");

            // construct an empty process definition
            ProcessDefinitionImpl processDefinition = new ProcessDefinitionImpl();

            // Then save the process definition
            // This is done so hibernate will assign an id to this object.
            dbSession.Save(processDefinition);

            IDictionary<string, byte[]> entries = null;
            entries = ZipUtility.ReadEntries(processArchiveStream);

            ProcessDefinitionBuildContext processDefinitionBuilder = new ProcessDefinitionBuildContext(processDefinition, entries, dbSession);
            try
            {
                if (!entries.ContainsKey("processdefinition.xml"))
                {
                    processDefinitionBuilder.AddError("entry '" + "processdefinition.xml" + "' found not found in the process archive");
                    throw new SystemException("entry '" + "processdefinition.xml" + "' found not found in the process archive");
                }
                // parse the  processdefinition.xml
                XmlElement xmlElement = getXmlElementFromBytes(entries["processdefinition.xml"]);
                // build the object model from the xml
                processDefinitionBuilder.PushScope("in processdefinition.xml");
                processDefinition.ReadProcessData(xmlElement, processDefinitionBuilder);
                processDefinition.Version = GetVersionNr(processDefinitionBuilder, processDefinition.Name);
                processDefinition.ClassFiles = GetAssemblyFiles(processDefinitionBuilder, processDefinition);
                processDefinitionBuilder.PopScope();
                // resolve all forward references
                processDefinitionBuilder.ResolveReferences();

                processDefinition.Validate(processDefinitionBuilder);

                if (processDefinitionBuilder.HasErrors())
                {
                    throw new NpdlException(processDefinitionBuilder.Errors);
                }
                // read the optional web-interface information
                if (entries.ContainsKey("web/webinterface.xml"))
                {
                    log.Debug("processing webinterface.xml...");
                    xmlElement = getXmlElementFromBytes(entries["web/webinterface.xml"]);
                    processDefinitionBuilder.PushScope("in webinterface.xml");
                    processDefinition.ReadWebData(xmlElement, processDefinitionBuilder);
                    processDefinitionBuilder.PopScope();
                }
                else
                {
                    log.Debug("no web/webinterface.xml was supplied");
                }

                processDefinitionRepository.Save(processDefinition, dbSession);
            }
            catch (SystemException e)
            {
                log.Error("xml parsing error :", e);
                processDefinitionBuilder.AddError(e.GetType().FullName + " : " + e.Message);
                processDefinitionBuilder.AddError("couldn't continue to parse the process archive");
                throw new NpdlException(processDefinitionBuilder.Errors);
            }
        }
Exemple #13
0
		public CreationContext(ProcessDefinitionImpl processDefinition, IDictionary entries, DbSession dbSession)
		{
			InitBlock();
			this._processDefinition = processDefinition;
			this._processBlock = processDefinition;
			this._dbSession = dbSession;
			this._entries = entries;
		}
		public void DeployProcessArchive(Stream processArchiveStream, DbSession dbSession)
		{
			log.Debug("reading process archive...");
			try
			{
				IDictionary entries = null;
				// construct an empty process definition
				ProcessDefinitionImpl processDefinition = new ProcessDefinitionImpl();
				try
				{
					entries = ReadEntries(processArchiveStream);
				}
				catch (IOException e)
				{
					throw new NpdlException("couldn't deploy process archive, the processArchiveBytes do not seem to be a valid jar-file : " + e.Message, e);
				}

				// Then save the process definition
				// This is done so hibernate will assign an id to this object.
				dbSession.Save(processDefinition);
				CreationContext creationContext = new CreationContext(processDefinition, entries, dbSession);
				try
				{
					// parse the  processdefinition.xml
					XmlElement xmlElement = GetXmlElementForEntry("processdefinition.xml", entries, creationContext);
					// build the object model from the xml
					creationContext.PushScope("in processdefinition.xml");
					processDefinition.ReadProcessData(xmlElement, creationContext);
					creationContext.PopScope();
					// resolve all forward references
					creationContext.ResolveReferences();

					processDefinition.Validate(creationContext);

					if (creationContext.HasErrors())
					{
						throw new NpdlException(creationContext.Errors);
					}
					// read the optional web-interface information
					if (entries.Contains("web/webinterface.xml"))
					{
						log.Debug("processing webinterface.xml...");
						xmlElement = GetXmlElementForEntry("web/webinterface.xml", entries, creationContext);
						creationContext.PushScope("in webinterface.xml");
						processDefinition.ReadWebData(xmlElement, creationContext);
						creationContext.PopScope();
					}
					else
					{
						log.Debug("no web/webinterface.xml was supplied");
					}

				}
				catch (SystemException e)
				{
					log.Error("xml parsing error :", e);
					creationContext.AddError(e.GetType().FullName + " : " + e.Message);
					creationContext.AddError("couldn't continue to parse the process archive");
					throw new NpdlException(creationContext.Errors);
				}

				// flush the changes to the database
				dbSession.SaveOrUpdate(processDefinition);
				dbSession.Flush();
			}
			catch (DbException e)
			{
				throw new NpdlException("couldn't deploy process archive due to a database exception : " + e.Message, e);
			}
		}
		public ExecutionContextImpl(String actorId, FlowImpl flow, DbSession dbSession, IOrganisationSessionLocal organisationComponent)
		{
			this._actorId = actorId;
			this._flow = flow;
			this._processInstance = (ProcessInstanceImpl) flow.ProcessInstance;
			this._processDefinition = (ProcessDefinitionImpl) _processInstance.ProcessDefinition;
			this._dbSession = dbSession;
			this._organisationComponent = organisationComponent;
			this._assignedFlows = new ArrayList();
		}
		public static ProcessDefinitionImpl CreateProcessDefinition()
		{
			ProcessDefinitionImpl processDefinition = new ProcessDefinitionImpl();
			processDefinition.ProcessDefinition = processDefinition;
			processDefinition.Nodes = new ListSet();
			processDefinition.Attributes = new ListSet();
			processDefinition.ChildBlocks = new ListSet();
			processDefinition.Actions = new ArrayList();
			return processDefinition;
		}