public Activity Parse(XElement inputElement)
        {
            var callProcessActivity = new CallProcessActivity ();

            callProcessActivity.Name = inputElement.Attribute ("name").Value;
            callProcessActivity.Type = (ActivityType) inputElement.Element (XmlnsConstant.tibcoProcessNameSpace + "type").Value;
            var configElement = inputElement.Element ("config");

            callProcessActivity.ProcessName = XElementParserUtils.GetStringValue(configElement.Element("processName"));

            if (inputElement.Element(XmlnsConstant.tibcoProcessNameSpace + "inputBindings") != null)
            {
                callProcessActivity.InputBindings = inputElement.Element(XmlnsConstant.tibcoProcessNameSpace + "inputBindings").Nodes();
                callProcessActivity.Parameters = new XslParser().Build(callProcessActivity.InputBindings);
            }

            return callProcessActivity;
        }
 public void SetUp()
 {
     this.xmlParseActivityBuilder = new CallProcessActivityBuilder(new XslBuilder(new XpathBuilder()));
     this.activity = new CallProcessActivity ( "My Call Process Activity",ActivityType.callProcessActivityType);
     this.activity.ProcessName = "Process/DAI/PNO/process.To.Call.process";
     var xml =
         @"<pd:inputBindings xmlns:pd=""http://xmlns.tibco.com/bw/process/2003"" xmlns:xsl=""http://w3.org/1999/XSL/Transform"">
     <xmlString>
     <xsl:value-of select=""'TestString'""/>
     </xmlString>
     </pd:inputBindings>
     ";
     XElement doc = XElement.Parse(xml);
     this.activity.InputBindings = doc.Nodes();
     this.activity.Parameters = new List<ClassParameter>{
         new ClassParameter{
             Name = "xmlString",
             Type= "string"}
     };
 }
        public CodeStatementCollection GenerateCodeInvocation(CallProcessActivity callProcessActivity)
        {
            var invocationCodeCollection = new CodeStatementCollection();
            // Add the Log
            invocationCodeCollection.AddRange(DefaultActivityBuilder.LogActivity(callProcessActivity));
            // Add the mapping
            invocationCodeCollection.AddRange(this.xslBuilder.Build(callProcessActivity.InputBindings));

            // Add the invocation
            var processToCallReference = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), VariableHelper.ToVariableName(callProcessActivity.TibcoProcessToCall.ProcessName));

            var parameters = DefaultActivityBuilder.GenerateParameters(callProcessActivity);

            // TODO : WARNING not sure the start method ProcessName is indeed START
            var methodInvocation = new CodeMethodInvokeExpression(processToCallReference, "Start", parameters);

            var code = new CodeVariableDeclarationStatement("var", VariableHelper.ToVariableName(callProcessActivity.Name), methodInvocation);

            invocationCodeCollection.Add(code);

            return invocationCodeCollection;
        }