Example #1
0
		public static Action CreateObject(IApplicationContext ctx, String value)
        {
			List<Action> actionList = new List<Action>();
			String[] actions = value.Split(';');
			foreach(String s in actions)
			{
	            String[] arr = s.Split(':');
				if (arr.Length != 2)
					throw new Exception (String.Format ("Invalid action: {0}", value));

				Action a = null;
				if(ctx.Workflow.HasAction(arr[0]))
				   a = new WorkflowAction(arr[0]);
				else
				{
		            Type t = typeof(Action).Assembly.GetType(String.Format("{0}.{1}", "BitMobile.Actions", arr[0]));
					if(t==null)
						throw new Exception("Invalid action: " + arr[0]); 
		            System.Reflection.ConstructorInfo ci = t.GetConstructor(new Type[] { });
		            a = (Action)ci.Invoke(new object[] { });
				}
	            if (arr.Length > 1)
	            {
					int n = 0;
	                foreach (String v in arr[1].Split(','))
	                {
						String paramName = String.Format("param{0}",(n+1).ToString());
	                    String paramValue = v.Trim();
						if (paramValue.StartsWith("$"))
						{
							if(LazyParameter.LazyExpression(ctx.ValueStack,paramValue))
								a.AddLazyParameter(paramName, delegate()								                   {
									return ctx.ValueStack.Evaluate(paramValue,null);
								});
							else
								a.AddParameter(paramName, ctx.ValueStack.Evaluate(paramValue,null));
						}
						else
	                    	a.AddParameter(paramName, paramValue);
						n++;
	                }
	            }
				actionList.Add(a);
			}

			for(int i=0;i<actionList.Count-1;i++)
			{
				actionList[i].nextAction = actionList[i+1];
			}


			ctx.Workflow.RegisterAction(actionList[0]);
            return actionList[0];
        }
Example #2
0
        public static Action CreateObject(IApplicationContext ctx, String value)
        {
            List <Action> actionList = new List <Action>();

            String[] actions = value.Split(';');
            foreach (String s in actions)
            {
                String[] arr = s.Split(':');
                if (arr.Length != 2)
                {
                    throw new Exception(String.Format("Invalid action: {0}", value));
                }

                Action a = null;
                if (ctx.Workflow.HasAction(arr[0]))
                {
                    a = new WorkflowAction(arr[0]);
                }
                else
                {
                    Type t = typeof(Action).Assembly.GetType(String.Format("{0}.{1}", "BitMobile.Actions", arr[0]));
                    if (t == null)
                    {
                        throw new Exception("Invalid action: " + arr[0]);
                    }
                    System.Reflection.ConstructorInfo ci = t.GetConstructor(new Type[] { });
                    a = (Action)ci.Invoke(new object[] { });
                }
                if (arr.Length > 1)
                {
                    int n = 0;
                    foreach (String v in arr[1].Split(','))
                    {
                        String paramName  = String.Format("param{0}", (n + 1).ToString());
                        String paramValue = v.Trim();
                        if (paramValue.StartsWith("$"))
                        {
                            if (LazyParameter.LazyExpression(ctx.ValueStack, paramValue))
                            {
                                a.AddLazyParameter(paramName, delegate()                                                                                   {
                                    return(ctx.ValueStack.Evaluate(paramValue, null));
                                });
                            }
                            else
                            {
                                a.AddParameter(paramName, ctx.ValueStack.Evaluate(paramValue, null));
                            }
                        }
                        else
                        {
                            a.AddParameter(paramName, paramValue);
                        }
                        n++;
                    }
                }
                actionList.Add(a);
            }

            for (int i = 0; i < actionList.Count - 1; i++)
            {
                actionList[i].nextAction = actionList[i + 1];
            }


            ctx.Workflow.RegisterAction(actionList[0]);
            return(actionList[0]);
        }