コード例 #1
0
        public ProcessParseHandler()
        {
            this.handlers.Add("dataObject", new DataObjectParseHandler());
            this.handlers.Add("dataObjectReference", new DataObjectReferenceParseHandler());

            this.handlers.Add("property", new PropertyParseHandler <Process>((proc, props) =>
            {
                proc.Properties.Add(props);
            }));

            //resource
            IParseHandler handler = new ResourceRoleParseHandler();

            foreach (var item in ResourceRoleParseHandler.Keys)
            {
                this.handlers.Add(item, handler);
            }

            this.handlers.Add("startEvent", new StartEventParseHandler());
            this.handlers.Add("userTask", new UserTaskParseHandler());
            this.handlers.Add("sequenceFlow", new SequenceFlowParseHandler());
            this.handlers.Add("endEvent", new EndEventParseHandler());
            this.handlers.Add("parallelGateway", new ParallelGatewayParseHandler());
            this.handlers.Add("exclusiveGateway", new ExclusiveGatewayParseHandler());
            this.handlers.Add("inclusiveGateway", new InclusiveGatewayParseHandler());
            this.handlers.Add("complexGateway", new ComplexGatewayParseHandler());
            this.handlers.Add("scriptTask", new ScriptTaskParseHandler());
            this.handlers.Add("serviceTask", new ServiceTaskParseHandler());
            this.handlers.Add("receiveTask", new ReceiveTaskParseHandler());
            this.handlers.Add("sendTask", new SendTaskParseHandler());
            this.handlers.Add("task", new TaskParseHandler());
            this.handlers.Add("manualTask", new ManualTaskParseHandler());
            this.handlers.Add("businessRuleTask", new BusinessRuleTaskParseHandler());
            this.handlers.Add("callActivity", new CallActivityParseHandler());

            this.handlers.Add("subProcess", new SubProcessParseHandler());
            this.handlers.Add("transaction", new TransactionParseHandler());
            this.handlers.Add("adHocSubProcess", new AdHocSubProcessParseHandler());

            var artifactHandler = new ArtifactParseHandler();

            this.handlers.Add("textAnnotation", artifactHandler);
            this.handlers.Add("association", artifactHandler);
        }
コード例 #2
0
        public ActivityParseHandler()
        {
            this.handlers.Add("property", new PropertyParseHandler <Activity>((act, props) =>
            {
                act.Properties.Add(props);
            }));

            this.handlers.Add("ioSpecification", new IOSpecificationParseHandler <Activity>((x, y) =>
            {
                x.IOSpecification = y;
            }));

            var miHandler  = new MultiInstanceLoopCharacteristicsHandler();
            var stdHandler = new StandardLoopCharacteristicsHandler();

            var loopHandler = new ParseHandlerAction <Activity>((p, c, x) =>
            {
                var activityBehavior = p.Tag as ActivityBehavior;

                LoopCharacteristics loopCharacteristics = null;
                var localName = Helper.GetRealLocalName(x);
                if (localName != "multiInstanceLoopCharacteristics")
                {
                    loopCharacteristics = (LoopCharacteristics)stdHandler.Create(p, c, x);
                    activityBehavior    = new StandardLoopActivityBehavior(activityBehavior, (StandardLoopCharacteristics)loopCharacteristics);
                }
                else
                {
                    loopCharacteristics = (LoopCharacteristics)miHandler.Create(p, c, x);
                    var mi = loopCharacteristics as MultiInstanceLoopCharacteristics;
                    if (mi.IsSequential)
                    {
                        activityBehavior = new SequentialMultiInstanceActivityBehavior(activityBehavior, mi);
                    }
                    else
                    {
                        activityBehavior = new ParallelMultiInstanceActivityBehavior(activityBehavior, mi);
                    }
                }

                p.Tag = activityBehavior;

                loopCharacteristics.Activity = p;
            });

            this.handlers.Add("loopCharacteristics", loopHandler);
            this.handlers.Add("multiInstanceLoopCharacteristics", loopHandler);
            this.handlers.Add("standardLoopCharacteristics", loopHandler);

            var handler = new ResourceRoleParseHandler();

            foreach (var key in ResourceRoleParseHandler.Keys)
            {
                this.handlers.Add(key, handler);
            }

            this.handlers.Add("dataInputAssociation", new DataInputAssociationParseHandler <Activity>((x, y) =>
            {
                x.DataInputAssociations.Add(y);
            }));

            this.handlers.Add("dataOutputAssociation", new DataOutputAssociationParseHandler <Activity>((x, y) =>
            {
                x.DataOutputAssociations.Add(y);
            }));
        }