示例#1
0
 public void AddMessagePath(MessagePath <TMessage> messagePath)
 {
     lock (_locker) {
         if (typeof(ICmd).IsAssignableFrom(typeof(TMessage)))
         {
             bool isExist = _messagePaths.Any(a => messagePath.PathId == a.PathId);
             if (isExist)
             {
                 /// <see cref="ICmd"/>
                 throw new Exception($"一种命令只应被一个处理器处理:{typeof(TMessage).Name}");
             }
         }
         else if (messagePath.Location != Anonymous.Location)
         {
             var paths = _messagePaths.Where(a => a.PathName == messagePath.PathName && a.PathId == messagePath.PathId && a.Priority == messagePath.Priority).ToArray();
             if (paths.Length != 0)
             {
                 foreach (var path in paths)
                 {
                     NTMinerConsole.DevWarn(() => $"重复的路径:{path.PathName} {path.Description}");
                 }
                 NTMinerConsole.DevWarn(() => $"重复的路径:{messagePath.PathName} {messagePath.Description}");
             }
         }
         _messagePaths.Add(messagePath);
         Sort();
     }
 }
示例#2
0
        public RequestContext(string inputMessage, List <string> list)
        {
            messagesList = list;                                                        //Teilen des erhaltenen String
            var messageSplitLine = inputMessage.Split("\r\n");                          //bei wird \r\n geteilt und diese werden herausgefiltert

            FirstLine = messageSplitLine[0];
            int rowCount = 2;
            int index    = FindContentLength(messageSplitLine);

            FindAuthorization(messageSplitLine);
            Content = messageSplitLine[index + rowCount];



            if (BodyExists == true)
            {
                while (Content.Length != ContentLength)                                 //Bei mehr als einer Zeile in der Nachricht wird diese an den String Content angehängt
                {
                    rowCount++;
                    Content += "\r\n";
                    Content += messageSplitLine[index + rowCount];
                }
            }

            var messageSplit = FirstLine.Split(" ");                                    //Split bei " "

            HttpVerb    = messageSplit[0];
            MessagePath = messageSplit[1];
            var messagePathSplit = MessagePath.Split("/");                              //Split bei "/"
        }
示例#3
0
        public static IMessagePathId BuildViaLimitPath <TMessage>(string description, LogEnum logType, Action <TMessage> action, int viaLimit)
        {
            StackTrace ss = new StackTrace(false);
            // 0是CreatePath,1是CreateCmdPath或CreateEventPath,2是当地
            Type location = ss.GetFrame(2).GetMethod().DeclaringType;

            return(MessagePath <TMessage> .Build(MessageDispatcher, location, description, logType, action, Guid.Empty, viaLimit));
        }
示例#4
0
 public static string GetMessagePath(MessagePath path)
 {
     string result;
     if (instance.TryGetValue(path, out result))
         return result;
     else
         throw new InvalidCastException("Path cannot be converted to string");
 }
示例#5
0
 public void AddMessagePath <TMessage>(MessagePath <TMessage> path)
 {
     if (path == null)
     {
         throw new ArgumentNullException(nameof(path));
     }
     PathSetSet.GetMessagePathSet <TMessage>().AddMessagePath(path);
     MessagePathAdded?.Invoke(path);
 }
示例#6
0
        public static MessagePath <TMessage> AddMessagePath(IMessageHub hub, Type location, string description, LogEnum logType, Action <TMessage> action, PathId pathId, int viaTimesLimit = -1)
        {
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }
            MessagePath <TMessage> path = new MessagePath <TMessage>(location, description, logType, action, pathId, viaTimesLimit);

            hub.AddMessagePath(path);
            return(path);
        }
示例#7
0
        public static MessagePath <TMessage> AddMessagePath(IMessageHub dispatcher, Type location, string description, LogEnum logType, Action <TMessage> path, Guid pathId, int viaLimit = -1)
        {
            if (path == null)
            {
                throw new ArgumentNullException(nameof(path));
            }
            MessagePath <TMessage> handler = new MessagePath <TMessage>(location, description, logType, path, pathId, viaLimit);

            dispatcher.AddMessagePath(handler);
            return(handler);
        }
示例#8
0
        public IMessagePathId AddPath <TMessage>(Type location, string description, LogEnum logType, Action <TMessage> action, PathId pathId, int viaTimesLimit = -1)
        {
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }
            MessagePath <TMessage> path = new MessagePath <TMessage>(location, description, logType, action, pathId, viaTimesLimit);

            PathSetSet.GetMessagePathSet <TMessage>().AddMessagePath(path);
            PathAdded?.Invoke(path);
            return(path);
        }
示例#9
0
        protected Value getMessagePath(string firstMessage, Arguments arguments, int index)
        {
            var messages = new List <Message>
            {
                new Message(firstMessage, arguments)
            };
            var parser = new SimpleSendMessageParser(blockOrLambdaParser);

            while (parser.Scan(source, index))
            {
                messages.Add((Message)parser.Result.Value);
                index = parser.Result.Position;
            }
            overridePosition = index;
            var messagePath = new MessagePath(messages);

            result.Value = messagePath;
            return(messagePath);
        }
示例#10
0
 public void AddMessagePath(MessagePath <TMessage> messagePath)
 {
     lock (_locker) {
         if (typeof(ICmd).IsAssignableFrom(typeof(TMessage)))
         {
             bool isExist = _messagePaths.Any(a => messagePath.PathId == a.PathId);
             if (isExist)
             {
                 /// <see cref="ICmd"/>
                 throw new Exception($"一种命令只应被一个处理器处理:{typeof(TMessage).Name}");
             }
         }
         else if (messagePath.Location != AnonymousMessagePath.Location && _messagePaths.Any(a => a.Path == messagePath.Path && a.PathId == messagePath.PathId))
         {
             NTMinerConsole.DevWarn(() => $"重复的路径:{messagePath.Path} {messagePath.Description}");
         }
         _messagePaths.Add(messagePath);
     }
 }
示例#11
0
 public void AddMessagePath(MessagePath <TMessage> messagePath)
 {
     lock (_locker) {
         if (typeof(ICmd).IsAssignableFrom(typeof(TMessage)))
         {
             if (_messagePaths.Any(a => a.Path == messagePath.Path && messagePath.PathId == a.PathId))
             {
                 // 因为一种命令只应被一个处理器处理,命令实际上可以设计为不走总线,
                 // 之所以设计为统一走总线只是为了通过将命令类型集中表达以起文档作用。
                 throw new Exception($"一种命令只应被一个处理器处理:{typeof(TMessage).Name}");
             }
         }
         else if (_messagePaths.Any(a => a.Path == messagePath.Path && a.PathId == messagePath.PathId))
         {
             Write.DevWarn($"重复的路径:{messagePath.Path} {messagePath.Description}");
         }
         _messagePaths.Add(messagePath);
     }
 }
示例#12
0
        protected internal virtual void DoRegisterTypes(ModelBuilder bpmnModelBuilder)
        {
            ActivationConditionImpl.RegisterType(bpmnModelBuilder);
            ActivityImpl.RegisterType(bpmnModelBuilder);
            ArtifactImpl.RegisterType(bpmnModelBuilder);
            AssignmentImpl.RegisterType(bpmnModelBuilder);
            AssociationImpl.RegisterType(bpmnModelBuilder);
            AuditingImpl.RegisterType(bpmnModelBuilder);
            BaseElementImpl.RegisterType(bpmnModelBuilder);
            BoundaryEventImpl.RegisterType(bpmnModelBuilder);
            BusinessRuleTaskImpl.RegisterType(bpmnModelBuilder);
            CallableElementImpl.RegisterType(bpmnModelBuilder);
            CallActivityImpl.RegisterType(bpmnModelBuilder);
            CallConversationImpl.RegisterType(bpmnModelBuilder);
            CancelEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            CatchEventImpl.RegisterType(bpmnModelBuilder);
            CategoryValueImpl.RegisterType(bpmnModelBuilder);
            CategoryValueRef.RegisterType(bpmnModelBuilder);
            ChildLaneSet.RegisterType(bpmnModelBuilder);
            CollaborationImpl.RegisterType(bpmnModelBuilder);
            CompensateEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            ConditionImpl.RegisterType(bpmnModelBuilder);
            ConditionalEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            CompletionConditionImpl.RegisterType(bpmnModelBuilder);
            ComplexBehaviorDefinitionImpl.RegisterType(bpmnModelBuilder);
            ComplexGatewayImpl.RegisterType(bpmnModelBuilder);
            ConditionExpressionImpl.RegisterType(bpmnModelBuilder);
            ConversationAssociationImpl.RegisterType(bpmnModelBuilder);
            ConversationImpl.RegisterType(bpmnModelBuilder);
            ConversationLinkImpl.RegisterType(bpmnModelBuilder);
            ConversationNodeImpl.RegisterType(bpmnModelBuilder);
            CorrelationKeyImpl.RegisterType(bpmnModelBuilder);
            CorrelationPropertyBindingImpl.RegisterType(bpmnModelBuilder);
            CorrelationPropertyImpl.RegisterType(bpmnModelBuilder);
            CorrelationPropertyRef.RegisterType(bpmnModelBuilder);
            CorrelationPropertyRetrievalExpressionImpl.RegisterType(bpmnModelBuilder);
            CorrelationSubscriptionImpl.RegisterType(bpmnModelBuilder);
            DataAssociationImpl.RegisterType(bpmnModelBuilder);
            DataInputAssociationImpl.RegisterType(bpmnModelBuilder);
            DataInputImpl.RegisterType(bpmnModelBuilder);
            DataInputRefs.RegisterType(bpmnModelBuilder);
            DataOutputAssociationImpl.RegisterType(bpmnModelBuilder);
            DataOutputImpl.RegisterType(bpmnModelBuilder);
            DataOutputRefs.RegisterType(bpmnModelBuilder);
            DataPath.RegisterType(bpmnModelBuilder);
            DataStateImpl.RegisterType(bpmnModelBuilder);
            DataObjectImpl.RegisterType(bpmnModelBuilder);
            DataObjectReferenceImpl.RegisterType(bpmnModelBuilder);
            DataStoreImpl.RegisterType(bpmnModelBuilder);
            DefinitionsImpl.RegisterType(bpmnModelBuilder);
            DocumentationImpl.RegisterType(bpmnModelBuilder);
            EndEventImpl.RegisterType(bpmnModelBuilder);
            EndPointImpl.RegisterType(bpmnModelBuilder);
            EndPointRef.RegisterType(bpmnModelBuilder);
            ErrorEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            ErrorImpl.RegisterType(bpmnModelBuilder);
            ErrorRef.RegisterType(bpmnModelBuilder);
            EscalationImpl.RegisterType(bpmnModelBuilder);
            EscalationEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            EventBasedGatewayImpl.RegisterType(bpmnModelBuilder);
            EventDefinitionImpl.RegisterType(bpmnModelBuilder);
            EventDefinitionRef.RegisterType(bpmnModelBuilder);
            EventImpl.RegisterType(bpmnModelBuilder);
            ExclusiveGatewayImpl.RegisterType(bpmnModelBuilder);
            ExpressionImpl.RegisterType(bpmnModelBuilder);
            ExtensionElementsImpl.RegisterType(bpmnModelBuilder);
            ExtensionImpl.RegisterType(bpmnModelBuilder);
            FlowElementImpl.RegisterType(bpmnModelBuilder);
            FlowNodeImpl.RegisterType(bpmnModelBuilder);
            FlowNodeRef.RegisterType(bpmnModelBuilder);
            FormalExpressionImpl.RegisterType(bpmnModelBuilder);
            From.RegisterType(bpmnModelBuilder);
            GatewayImpl.RegisterType(bpmnModelBuilder);
            GlobalConversationImpl.RegisterType(bpmnModelBuilder);
            HumanPerformerImpl.RegisterType(bpmnModelBuilder);
            ImportImpl.RegisterType(bpmnModelBuilder);
            InclusiveGatewayImpl.RegisterType(bpmnModelBuilder);
            Incoming.RegisterType(bpmnModelBuilder);
            InMessageRef.RegisterType(bpmnModelBuilder);
            InnerParticipantRef.RegisterType(bpmnModelBuilder);
            InputDataItemImpl.RegisterType(bpmnModelBuilder);
            InputSetImpl.RegisterType(bpmnModelBuilder);
            InputSetRefs.RegisterType(bpmnModelBuilder);
            InteractionNodeImpl.RegisterType(bpmnModelBuilder);
            InterfaceImpl.RegisterType(bpmnModelBuilder);
            InterfaceRef.RegisterType(bpmnModelBuilder);
            IntermediateCatchEventImpl.RegisterType(bpmnModelBuilder);
            IntermediateThrowEventImpl.RegisterType(bpmnModelBuilder);
            IoBindingImpl.RegisterType(bpmnModelBuilder);
            IoSpecificationImpl.RegisterType(bpmnModelBuilder);
            ItemAwareElementImpl.RegisterType(bpmnModelBuilder);
            ItemDefinitionImpl.RegisterType(bpmnModelBuilder);
            LaneImpl.RegisterType(bpmnModelBuilder);
            LaneSetImpl.RegisterType(bpmnModelBuilder);
            LinkEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            LoopCardinalityImpl.RegisterType(bpmnModelBuilder);
            LoopCharacteristicsImpl.RegisterType(bpmnModelBuilder);
            LoopDataInputRef.RegisterType(bpmnModelBuilder);
            LoopDataOutputRef.RegisterType(bpmnModelBuilder);
            ManualTaskImpl.RegisterType(bpmnModelBuilder);
            MessageEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            MessageFlowAssociationImpl.RegisterType(bpmnModelBuilder);
            MessageFlowImpl.RegisterType(bpmnModelBuilder);
            MessageFlowRef.RegisterType(bpmnModelBuilder);
            MessageImpl.RegisterType(bpmnModelBuilder);
            MessagePath.RegisterType(bpmnModelBuilder);
            ModelElementInstanceImpl.RegisterType(bpmnModelBuilder);
            MonitoringImpl.RegisterType(bpmnModelBuilder);
            MultiInstanceLoopCharacteristicsImpl.RegisterType(bpmnModelBuilder);
            OperationImpl.RegisterType(bpmnModelBuilder);
            OperationRef.RegisterType(bpmnModelBuilder);
            OptionalInputRefs.RegisterType(bpmnModelBuilder);
            OptionalOutputRefs.RegisterType(bpmnModelBuilder);
            OuterParticipantRef.RegisterType(bpmnModelBuilder);
            OutMessageRef.RegisterType(bpmnModelBuilder);
            Outgoing.RegisterType(bpmnModelBuilder);
            OutputDataItemImpl.RegisterType(bpmnModelBuilder);
            OutputSetImpl.RegisterType(bpmnModelBuilder);
            OutputSetRefs.RegisterType(bpmnModelBuilder);
            ParallelGatewayImpl.RegisterType(bpmnModelBuilder);
            ParticipantAssociationImpl.RegisterType(bpmnModelBuilder);
            ParticipantImpl.RegisterType(bpmnModelBuilder);
            ParticipantMultiplicityImpl.RegisterType(bpmnModelBuilder);
            ParticipantRef.RegisterType(bpmnModelBuilder);
            PartitionElement.RegisterType(bpmnModelBuilder);
            PerformerImpl.RegisterType(bpmnModelBuilder);
            PotentialOwnerImpl.RegisterType(bpmnModelBuilder);
            ProcessImpl.RegisterType(bpmnModelBuilder);
            PropertyImpl.RegisterType(bpmnModelBuilder);
            ReceiveTaskImpl.RegisterType(bpmnModelBuilder);
            RelationshipImpl.RegisterType(bpmnModelBuilder);
            RenderingImpl.RegisterType(bpmnModelBuilder);
            ResourceAssignmentExpressionImpl.RegisterType(bpmnModelBuilder);
            ResourceImpl.RegisterType(bpmnModelBuilder);
            ResourceParameterBindingImpl.RegisterType(bpmnModelBuilder);
            ResourceParameterImpl.RegisterType(bpmnModelBuilder);
            ResourceRef.RegisterType(bpmnModelBuilder);
            ResourceRoleImpl.RegisterType(bpmnModelBuilder);
            RootElementImpl.RegisterType(bpmnModelBuilder);
            ScriptImpl.RegisterType(bpmnModelBuilder);
            ScriptTaskImpl.RegisterType(bpmnModelBuilder);
            SendTaskImpl.RegisterType(bpmnModelBuilder);
            SequenceFlowImpl.RegisterType(bpmnModelBuilder);
            ServiceTaskImpl.RegisterType(bpmnModelBuilder);
            SignalEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            SignalImpl.RegisterType(bpmnModelBuilder);
            Source.RegisterType(bpmnModelBuilder);
            SourceRef.RegisterType(bpmnModelBuilder);
            StartEventImpl.RegisterType(bpmnModelBuilder);
            SubConversationImpl.RegisterType(bpmnModelBuilder);
            SubProcessImpl.RegisterType(bpmnModelBuilder);
            SupportedInterfaceRef.RegisterType(bpmnModelBuilder);
            Supports.RegisterType(bpmnModelBuilder);
            Target.RegisterType(bpmnModelBuilder);
            TargetRef.RegisterType(bpmnModelBuilder);
            TaskImpl.RegisterType(bpmnModelBuilder);
            TerminateEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            TextImpl.RegisterType(bpmnModelBuilder);
            TextAnnotationImpl.RegisterType(bpmnModelBuilder);
            ThrowEventImpl.RegisterType(bpmnModelBuilder);
            TimeCycleImpl.RegisterType(bpmnModelBuilder);
            TimeDateImpl.RegisterType(bpmnModelBuilder);
            TimeDurationImpl.RegisterType(bpmnModelBuilder);
            TimerEventDefinitionImpl.RegisterType(bpmnModelBuilder);
            To.RegisterType(bpmnModelBuilder);
            TransactionImpl.RegisterType(bpmnModelBuilder);
            Transformation.RegisterType(bpmnModelBuilder);
            UserTaskImpl.RegisterType(bpmnModelBuilder);
            WhileExecutingInputRefs.RegisterType(bpmnModelBuilder);
            WhileExecutingOutputRefs.RegisterType(bpmnModelBuilder);

            // DC
            FontImpl.RegisterType(bpmnModelBuilder);
            PointImpl.RegisterType(bpmnModelBuilder);
            BoundsImpl.RegisterType(bpmnModelBuilder);

            // DI
            DiagramImpl.RegisterType(bpmnModelBuilder);
            DiagramElementImpl.RegisterType(bpmnModelBuilder);
            EdgeImpl.RegisterType(bpmnModelBuilder);
            impl.instance.di.ExtensionImpl.RegisterType(bpmnModelBuilder);
            LabelImpl.RegisterType(bpmnModelBuilder);
            LabeledEdgeImpl.RegisterType(bpmnModelBuilder);
            LabeledShapeImpl.RegisterType(bpmnModelBuilder);
            NodeImpl.RegisterType(bpmnModelBuilder);
            PlaneImpl.RegisterType(bpmnModelBuilder);
            ShapeImpl.RegisterType(bpmnModelBuilder);
            StyleImpl.RegisterType(bpmnModelBuilder);
            WaypointImpl.RegisterType(bpmnModelBuilder);

            // BPMNDI
            BpmnDiagramImpl.RegisterType(bpmnModelBuilder);
            BpmnEdgeImpl.RegisterType(bpmnModelBuilder);
            BpmnLabelImpl.RegisterType(bpmnModelBuilder);
            BpmnLabelStyleImpl.RegisterType(bpmnModelBuilder);
            BpmnPlaneImpl.RegisterType(bpmnModelBuilder);
            BpmnShapeImpl.RegisterType(bpmnModelBuilder);

            // camunda extensions
            CamundaConnectorImpl.RegisterType(bpmnModelBuilder);
            CamundaConnectorIdImpl.RegisterType(bpmnModelBuilder);
            CamundaConstraintImpl.RegisterType(bpmnModelBuilder);
            CamundaEntryImpl.RegisterType(bpmnModelBuilder);
            CamundaExecutionListenerImpl.RegisterType(bpmnModelBuilder);
            CamundaExpressionImpl.RegisterType(bpmnModelBuilder);
            CamundaFailedJobRetryTimeCycleImpl.RegisterType(bpmnModelBuilder);
            CamundaFieldImpl.RegisterType(bpmnModelBuilder);
            CamundaFormDataImpl.RegisterType(bpmnModelBuilder);
            CamundaFormFieldImpl.RegisterType(bpmnModelBuilder);
            CamundaFormPropertyImpl.RegisterType(bpmnModelBuilder);
            CamundaInImpl.RegisterType(bpmnModelBuilder);
            CamundaInputOutputImpl.RegisterType(bpmnModelBuilder);
            CamundaInputParameterImpl.RegisterType(bpmnModelBuilder);
            CamundaListImpl.RegisterType(bpmnModelBuilder);
            CamundaMapImpl.RegisterType(bpmnModelBuilder);
            CamundaOutputParameterImpl.RegisterType(bpmnModelBuilder);
            CamundaOutImpl.RegisterType(bpmnModelBuilder);
            CamundaPotentialStarterImpl.RegisterType(bpmnModelBuilder);
            CamundaPropertiesImpl.RegisterType(bpmnModelBuilder);
            CamundaPropertyImpl.RegisterType(bpmnModelBuilder);
            CamundaScriptImpl.RegisterType(bpmnModelBuilder);
            CamundaStringImpl.RegisterType(bpmnModelBuilder);
            CamundaTaskListenerImpl.RegisterType(bpmnModelBuilder);
            CamundaValidationImpl.RegisterType(bpmnModelBuilder);
            CamundaValueImpl.RegisterType(bpmnModelBuilder);
        }
 /// <summary>
 /// 消息通过路径指定的次数后路径即消失
 /// </summary>
 public static IMessagePathId BuildViaTimesLimitPath <TMessage>(string description, LogEnum logType, Action <TMessage> path, int viaTimesLimit, Type location)
 {
     return(MessagePath <TMessage> .AddMessagePath(MessageHub, location, description, logType, path, pathId : PathId.Empty, viaTimesLimit : viaTimesLimit));
 }
 /// <summary>
 /// 消息通过路径一次后路径即消失。
 /// 注意该路径具有特定的路径标识pathId,pathId可以看作是路径的形状,只有和该路径的形状相同的消息才能通过路径。
 /// </summary>
 public static IMessagePathId BuildOnecePath <TMessage>(string description, LogEnum logType, Action <TMessage> path, PathId pathId, Type location)
 {
     return(MessagePath <TMessage> .AddMessagePath(MessageHub, location, description, logType, path, pathId, viaTimesLimit : 1));
 }
 /// <summary>
 /// 修建消息的运动路径
 /// </summary>
 public static IMessagePathId BuildMessagePath <TMessage>(string description, LogEnum logType, Action <TMessage> path, Type location)
 {
     return(MessagePath <TMessage> .AddMessagePath(MessageHub, location, description, logType, path, pathId : PathId.Empty));
 }
示例#16
0
 public static IMessagePathId AddOnecePath <TMessage>(string description, LogEnum logType, Action <TMessage> action, Guid pathId, Type location)
 {
     return(MessagePath <TMessage> .AddMessagePath(MessageHub, location, description, logType, action, pathId, viaLimit : 1));
 }
示例#17
0
 public static IMessagePathId AddViaLimitPath <TMessage>(string description, LogEnum logType, Action <TMessage> action, int viaLimit, Type location)
 {
     return(MessagePath <TMessage> .AddMessagePath(MessageHub, location, description, logType, action, Guid.Empty, viaLimit));
 }