public int GetWorkflowStateIDByAlias(string alias)
        {
            vault.MetricGatherer.MethodCalled();

            // TODO: verify
            int stateId = -1;

            foreach (WorkflowAdmin workflowAdmin in vault.Workflows)
            {
                for (int i = 1; i <= workflowAdmin.States.Count; ++i)
                {
                    StateAdmin stateAdmin = workflowAdmin.States[i];
                    if (!stateAdmin.SemanticAliases.Value.Split(';').Contains(alias))
                    {
                        continue;
                    }
                    if (stateId != -1)
                    {
                        return(-1);
                    }
                    stateId = stateAdmin.ID;
                }
            }
            return(stateId);
        }
Пример #2
0
        public void Test_005_WorkflowStateFormating(string expectedAlias, int workflowId, int stateId, bool useShorthand = false)
        {
            WorkflowAdmin wfAdmin    = this.V.WorkflowOperations.GetWorkflowAdmin(workflowId);
            StateAdmin    stateAdmin = wfAdmin.States.Cast <StateAdmin>().Single(s => s.ID == stateId);

            FormatAlias(wfAdmin, stateAdmin, expectedAlias, useShorthand);
        }
        public WorkflowAdmin AddWorkflowAdmin(WorkflowAdmin workflow)
        {
            vault.MetricGatherer.MethodCalled();

            // TODO: verify
            if (workflow is TestWorkflowAdmin)
            {
                vault.Workflows.Add((TestWorkflowAdmin)workflow);
            }
            else
            {
                xWorkflowAdmin    wkAdmin = new xWorkflowAdmin(workflow);
                TestWorkflowAdmin twka    = new TestWorkflowAdmin(wkAdmin);
                vault.Workflows.Add(twka);
            }

            ValueListItem valueListItemWorkflow = new ValueListItem {
                ID = workflow.Workflow.ID, Name = workflow.Workflow.Name
            };

            vault.ValueListItemOperations.AddValueListItem(( int )MFBuiltInValueList.MFBuiltInValueListWorkflows,
                                                           valueListItemWorkflow);
            for (int i = 1; i <= workflow.States.Count; ++i)
            {
                StateAdmin    stateAdmin         = workflow.States[i];
                ValueListItem valueListItemState = new ValueListItem {
                    ID = stateAdmin.ID, Name = stateAdmin.Name, OwnerID = workflow.Workflow.ID
                };
                vault.ValueListItemOperations.AddValueListItem(( int )MFBuiltInValueList.MFBuiltInValueListStates,
                                                               valueListItemState);
            }
            return(workflow);
        }
Пример #4
0
			/// <summary>
			/// State Alias Removal.
			/// </summary>
			/// <param name="id">State ID</param>
			/// <param name="alias">Alias to remove.</param>
			public void StateAlias(int id, string alias)
			{
				WorkflowAdmin wfAdmin;
				StateAdmin state = this.Vault.StateById(id, out wfAdmin );

				// Search and Destroy.
				if (removeAlias(state.SemanticAliases, alias))
				{
					// Save changes.
					this.Vault.WorkflowOperations.UpdateWorkflowAdmin( wfAdmin );
				}
			}
Пример #5
0
 private static void GetAssignTo(Vault vault, StateAdmin state, List <AssignTo> at, List <AssignedProperty> ps)
 {
     if (state.ActionAssignToUser)
     {
         SetAssignTo(vault, state.ActionAssignToUserDefinition.AssignedTo, at, ps);
     }
     if (state.ActionCreateSeparateAssignment)
     {
         var tasks =
             state.ActionDefinitions.Cast <ActionDefinition>().ToArray();
         foreach (ActionDefinition ad in tasks)
         {
             var ac = ad.ActionCreateSeparateAssignment;
             var ug = ac.AssignedTo;
             SetAssignTo(vault, ug, at, ps);
         }
     }
 }
Пример #6
0
        public void Add(int index, StateAdmin stateAdmin)
        {
            TestStateAdmin newState = (stateAdmin as TestStateAdmin) ?? new TestStateAdmin(stateAdmin);

            if (index == -1 || index == States.Count + 1)
            {
                States.Add(newState);
            }
            else if (index > States.Count)
            {
                throw new Exception("Index out of range: " + index);
            }
            else
            {
                // I hate 1 indexing
                States[index - 1] = newState;
            }
        }
Пример #7
0
			/// <summary>
			/// Appends the alias to the workflow state transition object.
			/// </summary>
			/// <param name="alias">Alias to append.</param>
			/// <param name="wfa">Owner <see cref="StateTransition"/></param>
			/// <param name="transitionId">State Transition ID</param>
			public void StateTransitionAlias(string alias, WorkflowAdmin wfa, int transitionId)
			{
				// Resolve the State Admin object by id, from the workflow.
				StateAdmin state = wfa.States.Cast<StateAdmin>().SingleOrDefault(x => x.ID == transitionId);

				// Add the alias only if it does not already exist.
				if (!this.Vault.AliasExists(MFMetadataStructureItem.MFMetadataStructureItemState, alias))
				{
					// Append a delimiter if needed.
					if (state != null)
					{
						// Should the delimiter be added?
						if( !state.SemanticAliases.Value.Trim().EndsWith(";") )
							state.SemanticAliases.Value += ';';

						// Append the alias.
						state.SemanticAliases.Value += alias;

						// Persist the change.
						this.Vault.WorkflowOperations.UpdateWorkflowAdmin(wfa);
					}
				}
			}
Пример #8
0
			/// <summary>
			/// Clears the aliases of the <see cref="State"/> with the given id.
			/// </summary>
			/// <param name="id">State ID</param>
			public bool StateAlias(int id)
			{
				// Workflow State owner.
				WorkflowAdmin wfAdmin;

				// Resolve the state admin, by state id.
				StateAdmin state = this.Vault.StateById(id, out wfAdmin );

				// Ensure a match was found.
				if( state != null )
				{
					// Clear the aliases.
					state.SemanticAliases.Value = string.Empty;

					// Save changes.
					this.Vault.WorkflowOperations.UpdateWorkflowAdmin( wfAdmin );

					// Return true as a match was not found.
					return true;
				}

				// Return false as a match was not found.
				return false;
			}
 public TestStateAdmin(StateAdmin sa) : this(new xStateAdmin(sa))
 {
 }