public void Activate() { if (_envContext == null) throw new Exception("Environment not set"); if (_instanceId == null) throw new Exception("Instance Id not set"); if (_definitionId == null) throw new Exception("Definition not set"); log = LogManager.GetCurrentClassLogger(); _definition = _envContext.DefinitionRepository.GetProcessDefinition(_definitionId); }
public override void Visit(ProcessDefinition def) { foreach (Variable var in def.Variables) { if (!((Set)def.Process.Tag).Contains(var) && var.Name != Variable.NotUsedName) { _warnings.Add(new Warning(var.LexicalInfo, "The initial value of " + var.Name + " which is passed to " + def.Name + " is never read in the process")); var.IsUsed = false; } } }
public void GetFieldReturnsRootTableField() { // Arrange. var rootTable = new TableDefinition("TestTable"); var field = rootTable.AddField("TestField", ColumnTypes.String); var processDefinition = new ProcessDefinition(); processDefinition.TableList.Add(rootTable); // Act. Assert.AreSame(field, processDefinition.GetField("TestField")); }
public void GetFieldReturnsIdField() { // Arrange. var processDefinition = new ProcessDefinition(); var rootTable = new TableDefinition("TestTable"); processDefinition.TableList.Add(rootTable); // Act. var field = processDefinition.GetField(Constants.IdColumnName); // Assert. Assert.IsNotNull(field); Assert.AreEqual(Constants.IdColumnName, field.SystemName); Assert.AreEqual(ColumnTypes.Integer, field.ColumnType); Assert.AreSame("TestTable", field.GetTableName()); }
public override void Visit(ProcessDefinition node) { List<string> children = PopChildren(); Return("\n\t\t<td><b>"+node.Name + children[0] + "</b></td><td>=</td><td>" + children[1]+"</td>"); }
static void TestProcessLoad() { string pdName = "TestProcess2.xml"; ProcessDefinition pd = new ProcessDefinition(); log.Info("Loading process definition: {0}", pdName); pd.LoadFile(pdName); log.Info("Process definition loaded: {0}.{1}", pd.Name, pd.Version); string schema = pd.GetProcessInputXmlSchema(); log.Info("Process input data schema: {0}", schema); }
public IProcessScript GetProcessScript(ProcessDefinition pd) { throw new NotImplementedException(); }
/// <summary> /// Activate is called after process instance is deserialized, but before any operations /// are performed on it. /// Before Activation: /// * Environment should be set /// * Process state should be restored /// </summary> public void Activate() { if (_activated) throw new Exception("Process instance already activated"); if (Environment == null) throw new Exception("Environment not initialized. Please set the 'Environment' property"); log = LogManager.GetLogger(string.Format("ProcessInstance.{0}", InstanceId)); _definition = Environment.PackageRepository.GetProcess(ProcessDefinitionId); foreach (TaskShell at in _activeTransitions.Values) { at.SetProcessInstance(this); at.ParentCallback = this; at.EnvironmentContext = this.Environment; at.Activate(); } _activated = true; }
private IEnumerable <ParameterDefinitionWithValue> GetPersistedProcessParameters(Guid processId, ProcessDefinition processDefinition) { var persistenceParameters = processDefinition.PersistenceParameters.ToList(); var parameters = new List <ParameterDefinitionWithValue>(persistenceParameters.Count()); List <WorkflowProcessInstancePersistence> persistedParameters; using (MySqlConnection connection = new MySqlConnection(ConnectionString)) { persistedParameters = WorkflowProcessInstancePersistence.SelectByProcessId(connection, processId) .Where(WorkflowProcessInstancep => persistenceParameters.Select(pp => pp.Name).Contains(WorkflowProcessInstancep.ParameterName)).ToList(); } foreach (var persistedParameter in persistedParameters) { var parameterDefinition = persistenceParameters.Single(p => p.Name == persistedParameter.ParameterName); parameters.Add(ParameterDefinition.Create(parameterDefinition, _runtime.DeserializeParameter(persistedParameter.Value, parameterDefinition.Type))); } return(parameters); }
private IEnumerable <ParameterDefinitionWithValue> GetPersistedProcessParameters(Guid processId, ProcessDefinition processDefinition) { var persistenceParameters = processDefinition.PersistenceParameters.ToList(); var parameters = new List <ParameterDefinitionWithValue>(persistenceParameters.Count); List <WorkflowProcessInstancePersistence> persistedParameters; using (OracleConnection connection = new OracleConnection(ConnectionString)) { persistedParameters = WorkflowProcessInstancePersistence.SelectByProcessId(connection, processId).ToList(); } foreach (var persistedParameter in persistedParameters) { var parameterDefinition = persistenceParameters.FirstOrDefault(p => p.Name == persistedParameter.ParameterName) ?? ParameterDefinition.Create(persistedParameter.ParameterName, "System.String", ParameterPurpose.Persistence.ToString(), null); parameters.Add(ParameterDefinition.Create(parameterDefinition, _runtime.DeserializeParameter(persistedParameter.Value, parameterDefinition.Type))); } return(parameters); }
public virtual void Visit(ProcessDefinition node) { }
public virtual MigrationPlanAssert hasSourceProcessDefinition(ProcessDefinition sourceProcessDefinition) { return(hasSourceProcessDefinitionId(sourceProcessDefinition.Id)); }
public override void Visit(ProcessDefinition node) { List<string> children = PopChildren(); Return(node.Name + children[0] + " = " + children[1]); }
private void GenerateTaskCode(ProcessDefinition pd, Task tsk, TextWriter output) { }
private void GenerateProcessScripts(ProcessDefinition pd) { }
public void ProcessDefinitionUpdated(ProcessDefinition pd) { log.Info("Process definition updated: {0}", pd.DefinitionId); }
public ITaskScript GetTaskScript(ProcessDefinition pd, string taskId) { throw new NotImplementedException(); }
void ProcessDefinition(out ProcessDefinition procdef, bool entryProc) { Process proc; string name; List<Variable> vars = new List<Variable>(); Expect(1); name = t.val; Token startTok = t; if (la.kind == 10) { Get(); Expect(3); vars.Add(new Variable(t.val)); SetPos(vars[vars.Count-1], t); while (la.kind == 11) { Get(); Expect(3); vars.Add(new Variable(t.val)); SetPos(vars[vars.Count-1], t); } Expect(12); } Token endTok = t; Expect(13); Token startProc = la; Process(out proc); procdef = new ProcessDefinition(proc, name, entryProc); SetPos(procdef, startTok, endTok); foreach (Variable v in vars) { procdef.Variables.Add(v); } SetPos(proc, startProc, t); }
protected internal virtual void checkAuthorization(CommandContext commandContext, ProcessDefinition processDefinition) { commandContext.AuthorizationManager.checkAuthorization(Permissions.READ_HISTORY, Resources.PROCESS_DEFINITION, processDefinition.Key); }
public virtual MigrationPlanAssert hasTargetProcessDefinition(ProcessDefinition targetProcessDefinition) { return(hasTargetProcessDefinitionId(targetProcessDefinition.Id)); }
public List <TimerToRegister> GetTimersToRegister(ProcessDefinition processDefinition, string activityName) { return(GetTimerToRegisters(processDefinition, activityName)); }
public override void RegisterFinal(ProcessDefinition pd, List <WorkflowBlock> blocks) { //transitions var commands = this["Commands"] as List <SimpleCommand>; if (commands != null) { var restrictions = new List <RestrictionDefinition>(); if (this["_actorRestrictions"] is ActorDefinition) { restrictions.Add(RestrictionDefinition.Create(RestrictionType.Allow, (ActorDefinition)this["_actorRestrictions"])); } foreach (var c in commands) { var pdCommand = pd.Commands.Where(pdc => pdc.Name == c.Name).FirstOrDefault(); if (pdCommand == null) { pdCommand = CommandDefinition.Create(c.Name); pd.Commands.Add(pdCommand); } if (c.Classifier == TransitionClassifier.Direct) { //CA pd.Transitions.Add(new TransitionDefinition() { Name = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, c.Name), Classifier = c.Classifier, From = (ActivityDefinition)this["_currentActivity"], To = (ActivityDefinition)this["_currentActivity"], Trigger = new TriggerDefinition(TriggerType.Command) { Command = pdCommand }, Conditions = new List <ConditionDefinition>() { ConditionDefinition.Always }, Restrictions = restrictions }); //AC pd.Transitions.Add(new TransitionDefinition() { Name = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, "Auto"), Classifier = c.Classifier, From = (ActivityDefinition)this["_currentActivity"], To = (ActivityDefinition)c.ToBlock["_currentActivity"], Trigger = new TriggerDefinition(TriggerType.Auto), Conditions = new List <ConditionDefinition>() { ConditionDefinition.Create("Action", ActionDefinitionReference.Create("BudgetItemIsLegalEntitySignsComplete", "0", Name), "false", "true") } }); } else { pd.Transitions.Add(new TransitionDefinition() { Name = string.Format("{0}_{1}_{2}", Name, c.ToBlock.Name, c.Name), Classifier = c.Classifier, From = (ActivityDefinition)this["_currentActivity"], To = (ActivityDefinition)c.ToBlock["_currentActivity"], Trigger = new TriggerDefinition(TriggerType.Command) { Command = pdCommand }, Conditions = new List <ConditionDefinition>() { ConditionDefinition.Always }, Restrictions = restrictions }); } } } }
private IEnumerable <ParameterDefinitionWithValue> GetProcessParameters(Guid processId, ProcessDefinition processDefinition) { var parameters = new List <ParameterDefinitionWithValue>(processDefinition.Parameters.Count()); parameters.AddRange(GetPersistedProcessParameters(processId, processDefinition)); parameters.AddRange(GetSystemProcessParameters(processId, processDefinition)); return(parameters); }
public void Holiday() { using (var fake = new AutoFake()) { var provider = fake.Resolve <IServiceLocator>(); var actionRepository = new InMemoryRepository <ActionDef>(new List <ActionDef>()); A.CallTo(() => provider.GetInstance <IRepository <ActionDef> >()).Returns(actionRepository); ServiceLocator.SetLocatorProvider(() => provider); ProcessDefinition processDefinition = ProcessDefinitionFactory.getHoliday(); var delegationHelper = fake.Resolve <IDelegationHelper>(); Transition transition = processDefinition.Nodes.Single(s => s is Decision).LeavingTransitions.Single(l => l.To is Fork); A.CallTo(delegationHelper).WithReturnType <Transition>().Returns(transition); A.CallTo(() => provider.GetInstance <IDelegationHelper>()).Returns(delegationHelper); ExecutionContext executionContext = new ExecutionContext(new User("ae"), processDefinition); IDictionary <string, object> attributeValues = new Dictionary <string, object>(); attributeValues.Add("requester", "hugo"); attributeValues.Add("start date", DateTime.Today); attributeValues.Add("end dat", DateTime.Today); //進入evaluating ProcessInstance processInstance = executionContext.StartProcess(); Assert.AreEqual(7, executionContext.Flow.AttributeInstances.Count); //有個地方要從Node取到ProcessBlock var processBlockRepository = new InMemoryRepository <ProcessBlock>(new List <ProcessBlock>() { processDefinition.ChildBlocks.First() }); A.CallTo(() => provider.GetInstance <IRepository <ProcessBlock> >()).Returns(processBlockRepository); //進入evaluation,分成兩個分支 attributeValues.Clear(); attributeValues.Add("evaluation result", "approve"); executionContext.PerformActivity(attributeValues); Assert.AreEqual(2, executionContext.ForkedFlows.Count); Assert.AreEqual(2, processInstance.RootFlow.Children.Count); var childProcessBlock = processDefinition.ChildBlocks.First(); Assert.AreEqual(childProcessBlock.Nodes.Single(s => s.Name == "HR notification"), processInstance.RootFlow.Children.First().Node); Assert.AreEqual(childProcessBlock.Nodes.Single(s => s.Name == "approval notification"), processInstance.RootFlow.Children.Last().Node); //有個地方要取得還未完成的ChildFlow var childFlow1 = processInstance.RootFlow.Children.First(); var childFlow2 = processInstance.RootFlow.Children.Last(); var flowRepository = new InMemoryRepository <Flow>(new List <Flow>() { childFlow1, childFlow2 }); A.CallTo(() => provider.GetInstance <IRepository <Flow> >()).Returns(flowRepository); //HR notification -> Join ExecutionContext childExecutionContext1 = new ExecutionContext(new User("ae"), processDefinition, processInstance, childFlow1); childExecutionContext1.PerformActivity(); //approval notification -> Join ExecutionContext childExecutionContext2 = new ExecutionContext(new User("ae"), processDefinition, processInstance, childFlow2); childExecutionContext2.PerformActivity(); var endState = processDefinition.Nodes.Single(q => q is EndState); Assert.AreEqual(endState, childExecutionContext2.ProcessInstance.RootFlow.Node); } }
void PackageStore_ProcessReload(ProcessDefinition pd) { if (ScriptManager != null) { ScriptManager.ProcessDefinitionUpdated(pd); } }
public override void Visit(ProcessDefinition node) { List <string> children = PopChildren(); Return(node.Name + children[0] + " = " + children[1]); }
public ProcessScript(ScriptNetProcessScriptManager mgr, ProcessDefinition pd) { _pd = pd; _mgr = mgr; log = LogManager.GetCurrentClassLogger(); }
public override void Visit(ProcessDefinition def) { def.Tag = new Set(def.Variables); }
public void AddReferencesFiltered_ShouldUpdateIsFilterableProperty() { #region Arrange var visibleFields = new string[0]; var queryGenerator = new SearchQueryGeneratorTest(); queryGenerator.SetNonFilteredColumns(new [] { CrField2Name, McrField2Name, RcrField2Name }); var processdefinition = new ProcessDefinition(); var tableDefinition = new TableDefinition("TestProcess"); processdefinition.TableList.Insert(0, tableDefinition); processdefinition.SingleCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.Reference, SystemName = CrField1Name, IsFilterable = true }); processdefinition.SingleCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.Reference, SystemName = CrField2Name, IsFilterable = true }); processdefinition.SingleCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.Reference, SystemName = CrField3Name, IsFilterable = false }); processdefinition.MultiCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.MultiReference, SystemName = McrField1Name, IsFilterable = true }); processdefinition.MultiCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.MultiReference, SystemName = McrField2Name, IsFilterable = true }); processdefinition.MultiCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.MultiReference, SystemName = McrField3Name, IsFilterable = false }); processdefinition.ReverseCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.ReverseReference, SystemName = RcrField1Name, IsFilterable = true }); processdefinition.ReverseCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.ReverseReference, SystemName = RcrField2Name, IsFilterable = true }); processdefinition.ReverseCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.ReverseReference, SystemName = RcrField3Name, IsFilterable = false }); #endregion Arrange // Act queryGenerator.AddReferences(processdefinition); // Assert Assert.IsTrue(queryGenerator.SingleCrossReferenceIsFilterable(CrField1Name)); Assert.IsFalse(queryGenerator.SingleCrossReferenceIsFilterable(CrField2Name)); Assert.IsFalse(queryGenerator.SingleCrossReferenceIsFilterable(CrField3Name)); Assert.IsTrue(queryGenerator.MultiCrossReferenceIsFilterable(McrField1Name)); Assert.IsFalse(queryGenerator.MultiCrossReferenceIsFilterable(McrField2Name)); Assert.IsFalse(queryGenerator.MultiCrossReferenceIsFilterable(McrField3Name)); Assert.IsTrue(queryGenerator.ReverseCrossReferenceIsFilterable(RcrField1Name)); Assert.IsFalse(queryGenerator.ReverseCrossReferenceIsFilterable(RcrField2Name)); Assert.IsFalse(queryGenerator.ReverseCrossReferenceIsFilterable(RcrField3Name)); }
public void initialize(TasklistWindow tasklist, ProcessDefinition ProcessDefinition) { this.Tasklist = tasklist; this.ProcessDefinition = ProcessDefinition; }
protected internal virtual void assertMigratedTo(HistoricActivityInstance activityInstance, ProcessDefinition processDefinition, string activityId) { Assert.assertEquals(processDefinition.Id, activityInstance.ProcessDefinitionId); Assert.assertEquals(processDefinition.Key, activityInstance.ProcessDefinitionKey); Assert.assertEquals(activityId, activityInstance.ActivityId); }
protected internal virtual void writeUserOperationLog(CommandContext commandContext, ProcessDefinition processDefinition, int numInstances, bool async) { IList <PropertyChange> propertyChanges = new List <PropertyChange>(); propertyChanges.Add(new PropertyChange("nrOfInstances", null, numInstances)); propertyChanges.Add(new PropertyChange("async", null, async)); commandContext.OperationLogManager.logProcessInstanceOperation(org.camunda.bpm.engine.history.UserOperationLogEntry_Fields.OPERATION_TYPE_RESTART_PROCESS_INSTANCE, null, processDefinition.Id, processDefinition.Key, propertyChanges); }
private IEnumerable <ParameterDefinitionWithValue> GetPersistedProcessParameters(Guid processId, ProcessDefinition processDefinition) { var persistenceParameters = processDefinition.PersistenceParameters.ToList(); var parameters = new List <ParameterDefinitionWithValue>(persistenceParameters.Count()); List <WorkflowProcessInstancePersistence> persistedParameters; var dbcoll = Store.GetCollection <WorkflowProcessInstance>(MongoDBConstants.WorkflowProcessInstanceCollectionName); var process = dbcoll.FindOneById(processId); if (process != null && process.Persistence != null) { persistedParameters = process.Persistence.ToList(); } else { return(parameters); //persistedParameters = new List<WorkflowProcessInstancePersistence>(); } foreach (var persistedParameter in persistedParameters) { var parameterDefinition = persistenceParameters.FirstOrDefault(p => p.Name == persistedParameter.ParameterName); if (parameterDefinition == null) { parameterDefinition = ParameterDefinition.Create(persistedParameter.ParameterName, "System.String", ParameterPurpose.Persistence.ToString(), null); } parameters.Add(ParameterDefinition.Create(parameterDefinition, _runtime.DeserializeParameter(persistedParameter.Value, parameterDefinition.Type))); } return(parameters); }
public virtual async Task <ProcessInstance> BuildAsync() { var deploymentManager = this.context.DeploymentManager; if (this.processDefinition == null) { if (this.processDefinitionId != null) { this.processDefinition = await deploymentManager.FindProcessDefinitionByIdAsync(this.processDefinitionId.Value); } else if (this.processDefinitionKey != null) { this.processDefinition = await deploymentManager.FindProcessDefinitionByKeyAsync(this.processDefinitionKey); } if (this.processDefinition == null) { throw new ArgumentNullException(nameof(processDefinition)); } } if (this.processDefinition.State != ProcessDefinitionState.Active) { throw new RuntimeException("The specified process-defintion is not active."); } //Load bpmn-model. var deploymentId = this.processDefinition.DeploymentId; var processDefinitionKey = this.processDefinition.Key; var dm = context.DeploymentManager; var model = dm.GetBpmnModel(deploymentId); var process = model.GetProcess(processDefinitionKey); var initialNode = process.InitialNode; if (initialNode == null) { throw new RuntimeException($"The process '{processDefinitionKey}' does not contains any start nodes."); } var date = Clock.Now; //init process-instance. var pi = new ProcessInstance(); pi.ProcessDefinition = this.processDefinition; pi.Super = this.super; if (pi.Super != null) { pi.Caller = super.ActivityInstance; } pi.Name = processDefinition.Name; if (string.IsNullOrEmpty(pi.Name)) { pi.Name = processDefinition.Key; } pi.Key = this.key; pi.Created = date; pi.Modified = date; pi.State = ExecutionState.Ready; pi.LastStateTime = date; pi.Initiator = this.initiator; pi.Description = StringHelper.Get(processDefinition.Description, 255); if (!string.IsNullOrEmpty(this.name)) { pi.Name = this.name; } if (!string.IsNullOrEmpty(this.description)) { pi.Description = this.description; } pi.Variables = new List <Variable>(); pi.IdentityLinks = new List <IdentityLink>(); var dataObjects = model.GetProcessDataObjects(processDefinitionKey); //initialize process-context. this.InitializeProcessContext(pi, dataObjects); var session = this.context.DbSession; //commit changes. await session.SaveAsync(pi); await session.FlushAsync(); //Init root-token. var rootToken = new Token(pi); rootToken.Node = initialNode; pi.Token = rootToken; //commit changes. await session.SaveAsync(rootToken); await session.FlushAsync(); return(pi); }
private IEnumerable <ParameterDefinitionWithValue> GetPersistedProcessParameters(Guid processId, ProcessDefinition processDefinition) { var persistenceParameters = processDefinition.PersistenceParameters.ToList(); var parameters = new List <ParameterDefinitionWithValue>(persistenceParameters.Count()); List <WorkflowProcessInstancePersistence> persistedParameters; using (SqlConnection connection = new SqlConnection(ConnectionString)) { persistedParameters = WorkflowProcessInstancePersistence.SelectByProcessId(connection, processId).ToList(); } foreach (var persistedParameter in persistedParameters) { var parameterDefinition = persistenceParameters.FirstOrDefault(p => p.Name == persistedParameter.ParameterName); if (parameterDefinition == null) { parameterDefinition = ParameterDefinition.Create(persistedParameter.ParameterName, typeof(UnknownParameterType), ParameterPurpose.Persistence); parameters.Add(ParameterDefinition.Create(parameterDefinition, persistedParameter.Value)); } else { parameters.Add(ParameterDefinition.Create(parameterDefinition, ParametersSerializer.Deserialize(persistedParameter.Value, parameterDefinition.Type))); } } return(parameters); }
private IEnumerable <ParameterDefinitionWithValue> GetPersistedProcessParameters(Guid processId, ProcessDefinition processDefinition) { var persistenceParameters = processDefinition.PersistenceParameters.ToList(); var parameters = new List <ParameterDefinitionWithValue>(persistenceParameters.Count()); List <WorkflowProcessInstancePersistence> persistedParameters; using (var session = Store.OpenSession()) { var process = session.Load <WorkflowProcessInstance>(processId); if (process != null && process.Persistence != null) { persistedParameters = process.Persistence; } else { return(parameters); //persistedParameters = new List<WorkflowProcessInstancePersistence>(); } } foreach (var persistedParameter in persistedParameters) { var parameterDefinition = persistenceParameters.FirstOrDefault(p => p.Name == persistedParameter.ParameterName); if (parameterDefinition == null) { parameterDefinition = ParameterDefinition.Create(persistedParameter.ParameterName, typeof(UnknownParameterType), ParameterPurpose.Persistence); parameters.Add(ParameterDefinition.Create(parameterDefinition, persistedParameter.Value)); } else { parameters.Add(ParameterDefinition.Create(parameterDefinition, ParametersSerializer.Deserialize(persistedParameter.Value, parameterDefinition.Type))); } } return(parameters); }
protected internal virtual void applyProperties(ProcessInstantiationBuilderImpl instantiationBuilder, ProcessDefinition processDefinition, HistoricProcessInstance processInstance) { string tenantId = processInstance.TenantId; if (string.ReferenceEquals(processDefinition.TenantId, null) && !string.ReferenceEquals(tenantId, null)) { instantiationBuilder.tenantId(tenantId); } if (!builder.WithoutBusinessKey) { instantiationBuilder.businessKey(processInstance.BusinessKey); } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Before public void deployProcesses() public virtual void deployProcesses() { sharedDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS); tenant1Definition = testHelper.deployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.ONE_TASK_PROCESS); tenant2Definition = testHelper.deployForTenantAndGetDefinition(TENANT_TWO, ProcessModels.ONE_TASK_PROCESS); }
private IEnumerable <ParameterDefinitionWithValue> GetPersistedProcessParameters(Guid processId, ProcessDefinition processDefinition) { var persistenceParameters = processDefinition.PersistenceParameters.ToList(); var parameters = new List <ParameterDefinitionWithValue>(persistenceParameters.Count()); List <WorkflowProcessInstancePersistence> persistedParameters; using (var session = Store.OpenSession()) { var process = session.Load <WorkflowProcessInstance>(processId); if (process != null && process.Persistence != null) { persistedParameters = process.Persistence.Where(WorkflowProcessInstancep => persistenceParameters.Select(pp => pp.Name).Contains(WorkflowProcessInstancep.ParameterName)).ToList(); } else { persistedParameters = new List <WorkflowProcessInstancePersistence>(); } } foreach (var persistedParameter in persistedParameters) { var parameterDefinition = persistenceParameters.Single(p => p.Name == persistedParameter.ParameterName); parameters.Add(ParameterDefinition.Create(parameterDefinition, _runtime.DeserializeParameter(persistedParameter.Value, parameterDefinition.Type))); } return(parameters); }
public void TestContinueTaskWithLinkAnVariables() { var factory = new ProcessBuilderFactory(); var builder = factory.CreateProcess(id: "com.klaudwerk.workflow.renewal", name: "Renewal", description: "Policy Renewal"); IReadOnlyList <ProcessValidationResult> result; builder .Variables().Name("v_1").Type(VariableTypeEnum.String).Done() .Variables().Name("v_2").Type(VariableTypeEnum.String).Done() .Start("s_1").Handler().HumanTask().Done().SetName("Start") .Vars().Name("v_1").Done() .Vars().Name("v_2").Done() .Done() .Step("s_2").Handler().HumanTask().Done() .Done() .Step("s_3").Handler().HumanTask().Done() .Vars().Name("v_1").OnExit().Done() .Vars().Name("v_2").OnExit().Done() .Done() .End("e_1").SetName("End Process").Done() .Link().From("s_1").To("s_2").Name("s_1_s_2").Done() .Link().From("s_1").To("s_3").Name("s_1_s_3").Done() .Link().From("s_2").To("e_1").Name("s2_end").Done() .Link().From("s_3").To("e_1").Name("s3_end").Done() .TryValidate(out result); ProcessDefinition processDefinition = builder.Build(); IProcessDefinitionPersisnenceService service = GetProcessDefinitionPersistenceService(); service.Create(processDefinition, ProcessDefStatusEnum.Active, 1); // retrieve process definition var flows = service.ActivetWorkflows(); Assert.IsNotNull(flows); Assert.AreEqual(1, flows.Count); ProcessDefinition loadedPd; ProcessDefStatusEnum status; Assert.IsTrue(service.TryFind(flows[0].Id, flows[0].Version, out loadedPd, out status, out accounts)); IProcessRuntimeService pservice = GetProcessRuntime(); PropertySetCollection collection = new PropertySetCollection(new PropertySchemaSet(new PropertySchemaFactory())); Mock <IProcessRuntimeEnvironment> mEnv = new Mock <IProcessRuntimeEnvironment>(); mEnv.SetupGet(m => m.PropertySet).Returns(collection).Verifiable(); mEnv.Setup(m => m.TaskServiceAsync()) .Returns(() => Task.FromResult(new ExecutionResult(StepExecutionStatusEnum.Suspend))) .Verifiable(); mEnv.SetupGet(m => m.Transition).Returns("s_1_s_3"); IProcessRuntime runtime = pservice.Create(loadedPd, collection); string[] errors; runtime.TryCompile(out errors); Tuple <ExecutionResult, StepRuntime> execute = runtime.Execute(runtime.StartSteps[0], mEnv.Object); Assert.IsNotNull(execute); Assert.AreEqual(StepExecutionStatusEnum.Suspend, execute.Item1.Status, "The Workflow should be in Suspended state"); Assert.AreEqual(execute.Item2.StepId, "s_1"); collection.Set("v_1", "v_1"); collection.Set("v_2", "v_2"); execute = runtime.Continue(mEnv.Object); Assert.IsNotNull(execute); Assert.AreEqual(StepExecutionStatusEnum.Ready, execute.Item1.Status, "The Workflow should be in Suspended state"); Assert.AreEqual(execute.Item2.StepId, "s_3"); Assert.IsNotNull(execute.Item2.StepDefinition.VariablesMap); Assert.AreEqual(2, execute.Item2.StepDefinition.VariablesMap.Length); Assert.AreEqual(VarRequiredEnum.OnExit, execute.Item2.StepDefinition.VariablesMap[0].Required); Assert.AreEqual(VarRequiredEnum.OnExit, execute.Item2.StepDefinition.VariablesMap[1].Required); }
protected internal virtual void startProcessInstance(string processDefinitionKey) { ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processDefinitionKey).latestVersion().singleResult(); runtimeService.startProcessInstanceById(processDefinition.Id); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Before public void deployProcess() public virtual void deployProcess() { processDefinition = testRule.deployAndGetDefinition(ProcessModels.TWO_TASKS_PROCESS); }
private IEnumerable <ParameterDefinitionWithValue> GetPersistedProcessParameters(Guid processId, ProcessDefinition processDefinition) { var persistenceParameters = processDefinition.PersistenceParameters.ToList(); var parameters = new List <ParameterDefinitionWithValue>(persistenceParameters.Count()); List <WorkflowProcessInstancePersistence> persistedParameters; var dbcoll = Store.GetCollection <WorkflowProcessInstance>(MongoDBConstants.WorkflowProcessInstanceCollectionName); var process = dbcoll.Find(x => x.Id == processId).FirstOrDefault(); if (process != null && process.Persistence != null) { persistedParameters = process.Persistence.ToList(); } else { return(parameters); //persistedParameters = new List<WorkflowProcessInstancePersistence>(); } foreach (var persistedParameter in persistedParameters) { var parameterDefinition = persistenceParameters.FirstOrDefault(p => p.Name == persistedParameter.ParameterName); if (parameterDefinition == null) { parameterDefinition = ParameterDefinition.Create(persistedParameter.ParameterName, typeof(UnknownParameterType), ParameterPurpose.Persistence); parameters.Add(ParameterDefinition.Create(parameterDefinition, persistedParameter.Value)); } else { parameters.Add(ParameterDefinition.Create(parameterDefinition, ParametersSerializer.Deserialize(persistedParameter.Value, parameterDefinition.Type))); } } return(parameters); }
private void createProcessDefinitionMock() { ProcessDefinition mockDefinition = MockProvider.createMockDefinition(); when(mockRepoService.getProcessDefinition(eq(MockProvider.EXAMPLE_PROCESS_DEFINITION_ID))).thenReturn(mockDefinition); }
private IEnumerable <ParameterDefinitionWithValue> GetSystemProcessParameters(Guid processId, ProcessDefinition processDefinition) { var processInstance = GetProcessInstance(processId); var systemParameters = processDefinition.Parameters.Where(p => p.Purpose == ParameterPurpose.System).ToList(); List <ParameterDefinitionWithValue> parameters; parameters = new List <ParameterDefinitionWithValue>(systemParameters.Count()) { ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterProcessId.Name), processId), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterPreviousState.Name), (object)processInstance.PreviousState), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterCurrentState.Name), (object)processInstance.StateName), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterPreviousStateForDirect.Name), (object)processInstance.PreviousStateForDirect), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterPreviousStateForReverse.Name), (object)processInstance.PreviousStateForReverse), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterPreviousActivity.Name), (object)processInstance.PreviousActivity), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterCurrentActivity.Name), (object)processInstance.ActivityName), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterPreviousActivityForDirect.Name), (object)processInstance.PreviousActivityForDirect), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterPreviousActivityForReverse.Name), (object)processInstance.PreviousActivityForReverse), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterSchemeCode.Name), (object)processDefinition.Name), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterSchemeId.Name), (object)processInstance.SchemeId), ParameterDefinition.Create( systemParameters.Single(sp => sp.Name == DefaultDefinitions.ParameterIsPreExecution.Name), false) }; return(parameters); }
private IEnumerable <ParameterDefinitionWithValue> GetPersistedProcessParameters(Guid processId, ProcessDefinition processDefinition) { var persistenceParameters = processDefinition.PersistenceParameters.ToList(); var parameters = new List <ParameterDefinitionWithValue>(persistenceParameters.Count()); List <WorkflowProcessInstancePersistence> persistedParameters; using (PredefinedTransactionScopes.ReadUncommittedSupressedScope) { using (var context = CreateContext()) { persistedParameters = context.WorkflowProcessInstancePersistences.Where( wpip => wpip.ProcessId == processId && persistenceParameters.Select(pp => pp.Name).Contains(wpip.ParameterName)).ToList(); } } foreach (var persistedParameter in persistedParameters) { var parameterDefinition = persistenceParameters.Single(p => p.Name == persistedParameter.ParameterName); parameters.Add(ParameterDefinition.Create(parameterDefinition, _runtime.DeserializeParameter(persistedParameter.Value, parameterDefinition.Type))); } return(parameters); }
/// <summary> /// Passivate is called before persisting the process instance data /// </summary> public void Passivate() { log.Info("Passivating"); _tokensInPlaces = null; _definition = null; _environment = null; _activated = false; }
/// <summary> /// Adds the base table joins. /// </summary> /// <param name="sql">The SQL.</param> /// <param name="process">The process.</param> /// <param name="lastProcess">The last process.</param> /// <param name="aliasCollection">The alias collection.</param> private static void AddBaseTableJoins( StringBuilder sql, ProcessDefinition process, ProcessDefinition lastProcess, TableAliasCollection aliasCollection) { if (process == lastProcess || process.BaseProcess == null) return; sql.AppendLine() .Append("\t") .AppendFormat( @"INNER JOIN ""{0}"" {1} ON {1}.""{2}"" = {3}.""{4}""", OracleNamesTranslator.Translate(process.BaseProcess.SystemName), aliasCollection.GetTableAlias(process.BaseProcess), OracleNamesTranslator.Translate(Constants.IdColumnName), aliasCollection.GetTableAlias(process), OracleNamesTranslator.Translate(Constants.BaseIdColumnName)); AddBaseTableJoins(sql, process.BaseProcess, lastProcess, aliasCollection); }
public override void Visit(ProcessDefinition node) { List<string> children = PopChildren(); Return(" \\mathrm{"+node.Name + children[0] + "} \\defeq & \\mathrm{" + children[1]+ "}"); }
public virtual void RegisterFinal(ProcessDefinition pd, List <WorkflowBlock> blocks) { }
/// <summary> /// Passivate is called before persisting the process instance data /// </summary> public void Passivate() { log.Info("Passivating"); foreach (TaskShell ts in _activeTransitions.Values) { ts.Passivate(); } _definition = null; _environment = null; _activated = false; }
public void GetFieldReturnsSingleCrossReferenceField() { // Arrange. var rootTable = new TableDefinition("TestTable"); var processDefinition = new ProcessDefinition(); processDefinition.TableList.Add(rootTable); var field = new ReferenceFieldDefinition { SystemName = "TestField" }; processDefinition.SingleCrossReferenceFields.Add(field); // Act / Assert. Assert.AreSame(field, processDefinition.GetField("TestField")); }
private void startProcessInstances(ProcessEngine processEngine, string processDefinitionKey, int?version) { ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl)processEngine.ProcessEngineConfiguration; ProcessDefinitionQuery processDefinitionQuery = processEngine.RepositoryService.createProcessDefinitionQuery().processDefinitionKey(processDefinitionKey); if (version != null) { processDefinitionQuery.processDefinitionVersion(version); } else { processDefinitionQuery.latestVersion(); } ProcessDefinition processDefinition = processDefinitionQuery.singleResult(); Stream invoiceInputStream = typeof(InvoiceProcessApplication).ClassLoader.getResourceAsStream("invoice.pdf"); long numberOfRunningProcessInstances = processEngine.RuntimeService.createProcessInstanceQuery().processDefinitionId(processDefinition.Id).count(); if (numberOfRunningProcessInstances == 0) { // start three process instances LOGGER.info("Start 3 instances of " + processDefinition.Name + ", version " + processDefinition.Version); // process instance 1 processEngine.RuntimeService.startProcessInstanceById(processDefinition.Id, createVariables().putValue("creditor", "Great Pizza for Everyone Inc.").putValue("amount", 30.00d).putValue("invoiceCategory", "Travel Expenses").putValue("invoiceNumber", "GPFE-23232323").putValue("invoiceDocument", fileValue("invoice.pdf").file(invoiceInputStream).mimeType("application/pdf").create())); IoUtil.closeSilently(invoiceInputStream); invoiceInputStream = typeof(InvoiceProcessApplication).ClassLoader.getResourceAsStream("invoice.pdf"); processEngineConfiguration.DbMetricsReporter.reportNow(); // process instance 2 try { DateTime calendar = new DateTime(); calendar.AddDays(-14); ClockUtil.CurrentTime = calendar; ProcessInstance pi = processEngine.RuntimeService.startProcessInstanceById(processDefinition.Id, createVariables().putValue("creditor", "Bobby's Office Supplies").putValue("amount", 900.00d).putValue("invoiceCategory", "Misc").putValue("invoiceNumber", "BOS-43934").putValue("invoiceDocument", fileValue("invoice.pdf").file(invoiceInputStream).mimeType("application/pdf").create())); processEngineConfiguration.DbMetricsReporter.reportNow(); calendar.AddDays(14); ClockUtil.CurrentTime = calendar; processEngine.IdentityService.setAuthentication("demo", Arrays.asList(org.camunda.bpm.engine.authorization.Groups_Fields.CAMUNDA_ADMIN)); Task task = processEngine.TaskService.createTaskQuery().processInstanceId(pi.Id).singleResult(); processEngine.TaskService.claim(task.Id, "demo"); processEngine.TaskService.complete(task.Id, createVariables().putValue("approved", true)); } finally { processEngineConfiguration.DbMetricsReporter.reportNow(); ClockUtil.reset(); processEngine.IdentityService.clearAuthentication(); } IoUtil.closeSilently(invoiceInputStream); invoiceInputStream = typeof(InvoiceProcessApplication).ClassLoader.getResourceAsStream("invoice.pdf"); // process instance 3 try { DateTime calendar = new DateTime(); calendar.AddDays(-5); ClockUtil.CurrentTime = calendar; ProcessInstance pi = processEngine.RuntimeService.startProcessInstanceById(processDefinition.Id, createVariables().putValue("creditor", "Papa Steve's all you can eat").putValue("amount", 10.99d).putValue("invoiceCategory", "Travel Expenses").putValue("invoiceNumber", "PSACE-5342").putValue("invoiceDocument", fileValue("invoice.pdf").file(invoiceInputStream).mimeType("application/pdf").create())); processEngineConfiguration.DbMetricsReporter.reportNow(); calendar.AddDays(5); ClockUtil.CurrentTime = calendar; processEngine.IdentityService.AuthenticatedUserId = "mary"; Task task = processEngine.TaskService.createTaskQuery().processInstanceId(pi.Id).singleResult(); processEngine.TaskService.createComment(null, pi.Id, "I cannot approve this invoice: the amount is missing.\n\n Could you please provide the amount?"); processEngine.TaskService.complete(task.Id, createVariables().putValue("approved", false)); } finally { processEngineConfiguration.DbMetricsReporter.reportNow(); ClockUtil.reset(); processEngine.IdentityService.clearAuthentication(); } } else { LOGGER.info("No new instances of " + processDefinition.Name + " version " + processDefinition.Version + " started, there are " + numberOfRunningProcessInstances + " instances running"); } }
public ProcessDefinition GetProcessDefinition(string name) { ProcessInfo pi = GetProcessInfo(name); if (pi != null) return pi.ProcessDef; PackageDefinition pd = GetPackageDefinition(); Debug.Assert(pd != null); lock (this) { pi = GetProcessInfo(name); if (pi != null) return pi.ProcessDef; pi = new ProcessInfo(); pi.ProcessFileName = pd.GetProcessFileName(name); log.Info("Will load process definition {0} from file {1}", name , pi.ProcessFileName); ProcessDefinition pdi = new ProcessDefinition(); pdi.Package = pd; using (Stream stm = GetPackageContentStream(pi.ProcessFileName)) { pdi.Load(stm); } pi.ProcessDef = pdi; pi.LoadedDate = DateTime.Now; if (this.ProcessReload != null) this.ProcessReload(pdi); _processes[name] = pi; return pi.ProcessDef; } }
/// <summary> /// Activate is called after process instance is deserialized, but before any operations /// are performed on it. /// </summary> public void Activate() { if (_activated) throw new Exception("Process instance already activated"); if (Environment == null) throw new Exception("Environment not initialized. Please set the 'Environment' property"); log = LogManager.GetLogger(string.Format("ProcessInstance.{0}", InstanceId)); _transitionFactory = new ActiveTransitionFactory(); _definition = Environment.DefinitionRepository.GetProcessDefinition(ProcessDefinitionId); if (_processDataXmlString != null) { //_processData = new XmlDocument(); //_processData.LoadXml(_processDataXmlString); } BuildTokensInPlaces(); BuildActiveTransitionsInTasks(); foreach (TaskShell at in _activeTransitions.Values) { at.SetProcessInstance(this); at.Activate(); } _activated = true; }
/// <summary> /// Passivate is called before persisting the process instance data /// </summary> public void Passivate() { log.Info("Passivating"); if (_processData != null) { _processDataXmlString = _processData.OuterXml; } _tokensInPlaces = null; _definition = null; _environment = null; _activated = false; }
public void Add(ProcessDefinition pd) { _children.Add(pd); }
protected virtual void OnTestExecuteMultipleStepsSaveStateBetweenSteps() { var factory = new ProcessBuilderFactory(); var builder = factory.CreateProcess(id: "com.klaudwerk.workflow.renewal", name: "Renewal", description: "Policy Renewal"); IReadOnlyList <ProcessValidationResult> result; builder.Variables() .Name("Count") .Type(VariableTypeEnum.Int) .Done() .Start("s_1") .SetName("Start") .OnEntry() .Language(ScriptLanguage.CSharpScript) .Body("" + " PropertySet.Set(\"Count\",(int?)1);" + " return 1;") .Done() .Done() .Step("s_2") .OnEntry() .Language(ScriptLanguage.CSharpScript) .Body("" + " PropertySet.Set(\"Count\",(int?)2);" + " return 1;") .Done() .Done() .Step("s_3") .OnEntry() .Language(ScriptLanguage.CSharpScript) .Body("" + " PropertySet.Set(\"Count\",(int?)3);" + " return 1;") .Done() .Done() .End("e_1") .SetName("End Process") .Done() .Link() .From("s_1") .To("s_2") .Name("s_1_s_2") .Done() .Link() .From("s_2") .To("s_3") .Name("s_2_s_3") .Done() .Link() .From("s_3") .To("e_1") .Name("end") .Done() .TryValidate(out result); ProcessDefinition processDefinition = builder.Build(); IProcessDefinitionPersisnenceService service = GetProcessDefinitionPersistenceService(); service.Create(processDefinition, ProcessDefStatusEnum.Active, 1); IProcessRuntimeService pservice = GetProcessRuntime(); PropertySetCollection collection = new PropertySetCollection(new PropertySchemaSet(new PropertySchemaFactory())); Mock <IProcessRuntimeEnvironment> mEnv = new Mock <IProcessRuntimeEnvironment>(); mEnv.SetupGet(m => m.PropertySet).Returns(collection).Verifiable(); mEnv.Setup(m => m.TaskServiceAsync()) .Returns(() => Task.FromResult(new ExecutionResult(StepExecutionStatusEnum.Suspend))) .Verifiable(); IProcessRuntime runtime = pservice.Create(processDefinition, collection); string[] errors; runtime.TryCompile(out errors); IProcessRuntime ufRuntime; StepRuntime ufStep; IPropertySetCollection ufCollection; pservice.TryUnfreeze(runtime.Id, out ufRuntime, out ufStep, out ufCollection); Assert.IsNotNull(ufRuntime); Assert.IsNotNull(ufCollection); Assert.IsNull(ufStep); Assert.IsNull(ufCollection.Get <int?>("Count")); Assert.AreEqual(ProcessStateEnum.NotStarted, ufRuntime.State); Tuple <ExecutionResult, StepRuntime> exResult = runtime.Execute(runtime.StartSteps[0], mEnv.Object); Assert.IsNotNull(exResult); pservice.TryUnfreeze(runtime.Id, out ufRuntime, out ufStep, out ufCollection); Assert.AreEqual(1, ufCollection.Get <int?>("Count")); Assert.AreEqual(ProcessStateEnum.Ready, ufRuntime.State); Assert.IsNotNull(ufStep); Assert.AreEqual("s_2", ufStep.StepId); exResult = runtime.Execute(exResult.Item2, mEnv.Object); Assert.IsNotNull(exResult); pservice.TryUnfreeze(runtime.Id, out ufRuntime, out ufStep, out ufCollection); Assert.AreEqual(2, ufCollection.Get <int?>("Count")); Assert.AreEqual(ProcessStateEnum.Ready, ufRuntime.State); Assert.IsNotNull(ufStep); Assert.AreEqual("s_3", ufStep.StepId); exResult = runtime.Execute(exResult.Item2, mEnv.Object); Assert.IsNotNull(exResult); pservice.TryUnfreeze(runtime.Id, out ufRuntime, out ufStep, out ufCollection); Assert.AreEqual(3, ufCollection.Get <int?>("Count")); Assert.AreEqual(ProcessStateEnum.Ready, ufRuntime.State); Assert.IsNotNull(ufStep); Assert.AreEqual("e_1", ufStep.StepId); exResult = runtime.Execute(exResult.Item2, mEnv.Object); Assert.IsNotNull(exResult); pservice.TryUnfreeze(runtime.Id, out ufRuntime, out ufStep, out ufCollection); Assert.AreEqual(3, ufCollection.Get <int?>("Count")); Assert.AreEqual(ProcessStateEnum.Completed, ufRuntime.State); Assert.IsNull(ufStep); }
public void AddBaseTable_ShouldUpdateIsFilterableProperty() { #region Arrange var visibleFields = new[] { BaseField1Name, BaseField3Name }; var queryGenerator = new SearchQueryGeneratorTest(); queryGenerator.SetNonFilteredColumns(null); queryGenerator.ResultColumns.AddRange(visibleFields); queryGenerator.LimitResultColumns = true; var baseProcessdefinition = new ProcessDefinition(); var baseTableDefinition = new TableDefinition("TestBaseProcess"); baseProcessdefinition.TableList.Insert(0, baseTableDefinition); baseTableDefinition.AddField(BaseField1Name, ColumnTypes.Numeric, null, true, true); baseTableDefinition.AddField(BaseField2Name, ColumnTypes.Object, null, true, true); baseTableDefinition.AddField(BaseField3Name, ColumnTypes.Object, null, true, false); #endregion Arrange // Act queryGenerator.AddBaseTable(baseProcessdefinition); // Assert Assert.IsTrue(queryGenerator.BaseFieldIsFilterable(BaseField1Name)); Assert.IsFalse(queryGenerator.BaseFieldIsFilterable(BaseField2Name)); Assert.IsFalse(queryGenerator.BaseFieldIsFilterable(BaseField3Name)); }
public void RemoveBuildInColumnsTest() { #region Arrange const string FieldName = "Field1"; const string CrFieldName = "CrossRef1"; const string McrFieldName = "MultiCrossRef1"; var processdefinition = new ProcessDefinition(); var tableDefinition = new TableDefinition("TestProcess"); processdefinition.TableList.Insert(0, tableDefinition); tableDefinition.AddField(FieldName, ColumnTypes.String, null, true, true); processdefinition.SingleCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.Reference, SystemName = Constants.CurrentStateColumnName }); processdefinition.SingleCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.Reference, SystemName = CrFieldName }); processdefinition.MultiCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.MultiReference, SystemName = McrFieldName }); processdefinition.MultiCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.MultiReference, SystemName = Constants.PaperclipsColumnName }); #endregion Arrange // Act processdefinition.RemoveBuildInColumns(); // Assert Assert.AreEqual(processdefinition.TableList.Count, 1); Assert.AreEqual(processdefinition.TableList[0].GetFields().Count, 1); Assert.AreEqual(processdefinition.SingleCrossReferenceFields.Count, 1); Assert.AreEqual(processdefinition.SingleCrossReferenceFields[0].SystemName, CrFieldName); Assert.AreEqual(processdefinition.MultiCrossReferenceFields.Count, 1); Assert.AreEqual(processdefinition.MultiCrossReferenceFields[0].SystemName, McrFieldName); }