void ISoapTransactionLinkExecutor.ExecuteTransaction(Guid sessionId, Service.TransactionalMappingToolServiceClient serviceProxy) { TransactionStatus = ServerStatus.SendingTransaction; SessionId = sessionId; ServiceProxy = serviceProxy; Dictionary <Service.DT, Service.MP> nodeConnections = new Dictionary <Service.DT, Service.MP>(); foreach (KeyValuePair <Service.DT, SoapTransactionLinkParameter> keyValuePair in TransactionLinkConnections) { Service.DT descriptorType = keyValuePair.Key; Service.MP parameter = keyValuePair.Value.GetParameterValue(sessionId); nodeConnections[descriptorType] = parameter; } ServiceProxy.RACompleted += OnAddRelationshipCompleted; ServiceProxy.RAAsync(System.Windows.Browser.HtmlPage.Document.DocumentUri.ToString(), SessionId, DomainParameter.GetParameterValue(sessionId), RootMapParameter.GetParameterValue(sessionId), nodeConnections, MapManager.RelationshipTypes.ConvertProxyToService(RelationshipType), OriginalId, this); }
public void AddNode(Proxy.ConnectionType connectionType, Proxy.INode node) { ProxyNodeConnections[connectionType] = node; Service.DT descriptorType = MapManager.ConnectionTypes.ConvertProxyToService(connectionType); SoapTransactionLinkParameter linkParameter = new SoapTransactionLinkParameter(Service.MapParameterType.Node); FacadeNode facadeNode = node as FacadeNode; // Check if this is a facade and if it is and the base node isn't concrete, then use the base node's response parameter. if (facadeNode != null && !facadeNode.IsConcrete) { linkParameter.SetParameterValue(facadeNode.TransactionOrigin); } else { linkParameter.SetParameterValue(node.Id); } TransactionLinkConnections[descriptorType] = linkParameter; }
void ISoapTransactionLinkExecutor.ExecuteBulkTransactions(Guid sessionId, Service.TransactionalMappingToolServiceClient serviceProxy, ref Service.OPS bulkOperations) { TransactionStatus = ServerStatus.SendingTransaction; SessionId = sessionId; ServiceProxy = serviceProxy; Dictionary <Service.DT, Service.MP> nodeConnections = new Dictionary <Service.DT, Service.MP>(); foreach (KeyValuePair <Service.DT, SoapTransactionLinkParameter> keyValuePair in TransactionLinkConnections) { Service.DT descriptorType = keyValuePair.Key; Service.MP parameter = keyValuePair.Value.GetParameterValue(sessionId); nodeConnections[descriptorType] = parameter; } ResponseParameter = new Service.MP(); ResponseParameter.I = Guid.NewGuid(); ResponseParameter.S = sessionId; ResponseParameter.V = Guid.Empty; ResponseParameter.D = true; ResponseParameter.T = Service.MapParameterType.Node; Service.BRA relationshipBulkOperation = new Service.BRA(); relationshipBulkOperation.I = TransactionLinkId; relationshipBulkOperation.D = DomainParameter.GetParameterValue(sessionId); relationshipBulkOperation.RM = RootMapParameter.GetParameterValue(sessionId); relationshipBulkOperation.N = nodeConnections; relationshipBulkOperation.T = MapManager.RelationshipTypes.ConvertProxyToService(RelationshipType); relationshipBulkOperation.O = OriginalId; relationshipBulkOperation.RI = ResponseParameter.I; bulkOperations.O.Add(relationshipBulkOperation); ISoapTransactionLinkExecutor executor = _firstLink as ISoapTransactionLinkExecutor; if (executor == null) { DebugLogger.Instance.LogMsg("Exception: This is not a supported type of link. This link does not implement ISoapTransactionLinkExecutor."); throw new NotSupportedException("This is not a supported type of link. This link does not implement ISoapTransactionLinkExecutor."); } if (bulkOperations.O.Count < 200) { TransactionStatus = ServerStatus.TransactionReceived; if (!_onCompletedBound) { executor.TransactionFailed += OnTransactionFailed; executor.TransactionCompleted += OnTransactionCompleted; _onCompletedBound = true; } TransactionStatus = ServerStatus.TransactionExecuting; DebugLogger.Instance.LogMsg("Executing add relationship transaction. ClientId - '{0}';", CreateInProcessObjects().ClientId); executor.ExecuteBulkTransactions(SessionId, ServiceProxy, ref bulkOperations); } else { ServiceProxy.BOCCompleted += new EventHandler <Service.BOCCompletedEventArgs>(OnSubmitBulkOperationCompleted); ServiceProxy.SubmitBulkOperationsAsync(System.Windows.Browser.HtmlPage.Document.DocumentUri.ToString(), SessionId, bulkOperations, this); } }