BizTalk Aggregration Pattern as a reusable Service!!!
Hello Team,
I'm currently working on SOA pattern and would like to start with having BizTalk Aggregration pattern as a service so that any interface which needs to have batching
process can call this generic aggregation service and in return get the batch msg.
Please refer to the image attached to get better clarity on my requirement.
Any links or suggestions will be useful
Thanks in Advace
Hi Manju,
You have to employ
Canonical Data Model along with aggregation for your requirement.
Create a canonical (detailed internal) schema which would act as single entity containing all the sub-sets data model of the external system. i.e.
you will have an internal schema which contains all the elements/nodes of the inbound schemas. So when you receive schema-A or schema-B, you would map these entire schema to canonical schema (you could do this mapping in port level) and in your BizTalk aggregation,
you will use canonical schema for aggregation. When you send aggregated message out, at the outbound port level you can map the aggregated canonical schema to the outbound specific schema.
This way you can make the BizTalk orchestration/process which aggregates the inbound message as common service since it details with canonical schema,
independent of the source or destination systems.
In the following article you will find reference about the
Canonical Data Model and aggregation pattern.
http://social.technet.microsoft.com/wiki/contents/articles/11862.biztalk-enterprise-integration-patterns.aspx
If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.
Similar Messages
-
Several BizTalk applications consuming the same web service
When consuming a web service in Biztalk i use the generated items feature, using the service endpoint address. This creates binding files and service schema files. When trying to deploy the web service artifacts to BizTalk Server, and the files
already is deployed in an other Application, an error is raised. How do I solve the issue? What is best practice? A seperate BizTalk Application hosting the artifacts? Not good I suppose if the enterprise/customer has a limited lisence. A seperate "Proxy"
hosted in a .dll file, developed in e.g. c#? Probably a better solution, but kind of annoying having a lot of those lying around. Any suggestions?
By the way, I'm using BT 2009, if that matters.John,
Avoid any situations of dynamic schema resolution, such as explicitly setting the document type
in the XmlDisassembler
Could you please explain some pitfalls for this ...i am doing this and wanted to know about it.
Every time when i ran in to schema resolution issue i tend to use dynamic resolution instead of app reference.
Thanks. -
SAP JAM work pattern for SAP C4C Service ticket
Can anybody familiar with the SAP JAM Work pattern for SAP Cloud for Customer Service tickets answer these questions?
My client would like to use SAP JAM groups in Service tickets in the following way:
C4C service agents raise service tickets which are then worked on by back-office departments (who don't have access to C4C but will collaborate on ticket resolution via SAP JAM)
Back-office departments work on a high volume of tickets so having one JAM group per ticket is not practical. Instead we would like to have one JAM group per department
Departmental JAM groups should be created in JAM independently from C4C
Upon ticket creation in C4C, the service agent should be able to select the relevant departmental JAM group to collaborate and start a discussion topic
The agent should be able to easily pick up any update/reply from the back office team on the topic he created
Is the scenario above supported? In particular, how can one predefine/auto-select which JAM group is assigned to a service ticket?Can anybody familiar with the SAP JAM Work pattern for SAP Cloud for Customer Service tickets answer these questions?
My client would like to use SAP JAM groups in Service tickets in the following way:
C4C service agents raise service tickets which are then worked on by back-office departments (who don't have access to C4C but will collaborate on ticket resolution via SAP JAM)
Back-office departments work on a high volume of tickets so having one JAM group per ticket is not practical. Instead we would like to have one JAM group per department
Departmental JAM groups should be created in JAM independently from C4C
Upon ticket creation in C4C, the service agent should be able to select the relevant departmental JAM group to collaborate and start a discussion topic
The agent should be able to easily pick up any update/reply from the back office team on the topic he created
Is the scenario above supported? In particular, how can one predefine/auto-select which JAM group is assigned to a service ticket? -
Let me preface this by saying that I have been able to connect to the destination Service Bus Topics and Queue using traditional .NET methods (e.g. System.ServiceBus.Messaging namespace) and the applications using those components are running fine on the
same local VM. This uses the connection string that is provided from GET-SBAuthorizationRule.
Development Environment:
Windows Server 2012
SQL Server 2014
BizTalk 2013 R2
Local VM that is not on the Domain (but can connect to computers on the network)
I am trying to create a simple BizTalk 2013 R2 Messaging Solution that will use the SB-Messaging adapter features with Windows Service Bus On-Premise. My solution is using a Static One-Way Send Port to send messages to an existing topic on with Windows
Service Bus 1.1 using the SB-Messaging Adapter. After using the programmatic approach, the configurations were not as intuitive, but I believe I am close to the resolution. I have tried several combinations of key data but I am still not able to
connect. This seems like I am missing something small that is causing the problem but I am at a loss for the moment. The error I receive is below:
A message sent to adapter "SB-Messaging" on send port "SBSendPort" with URI "sb://<SERVERNAME>/NsServiceBus/collateraltopic" is suspended.
Error details: System.UnauthorizedAccessException: The token provider was unable to provide a security token while accessing 'https://<SERVERNAME>:7355/WRAPv0.9/'. Token provider returned message: '<Error><Code>400</Code><Detail>Namespace cannot be resolved 'https://<SERVERNAME>:7355/WRAPv0.9/'.TrackingId:6bcd22e8-1741-41fc-a84c-9aa3f7146ab5_GUS2522512,TimeStamp:6/30/2014 8:35:35 PM</Detail></Error>'. ---> System.IdentityModel.Tokens.SecurityTokenException: The token provider was unable to provide a security token while accessing 'https://<SERVERNAME>:7355/WRAPv0.9/'. Token provider returned message: '<Error><Code>400</Code><Detail>Namespace cannot be resolved 'https://<SERVERNAME>:7355/WRAPv0.9/'.TrackingId:6bcd22e8-1741-41fc-a84c-9aa3f7146ab5_GUS2522512,TimeStamp:6/30/2014 8:35:35 PM</Detail></Error>'. ---> System.Net.WebException: The remote server returned an error: (400) Bad Request.
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at Microsoft.ServiceBus.TokenProviderHelper.TokenRequestAsyncResult.<GetAsyncSteps>b__8(TokenRequestAsyncResult thisPtr, IAsyncResult r)
at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.EnumerateSteps(CurrentThreadType state)
--- End of inner exception stack trace ---
Server stack trace:
Exception rethrown at [0]:
at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
at Microsoft.ServiceBus.TokenProviderUtility.GetMessagingToken(TokenProvider tokenProvider, Uri baseAddress, String appliesTo, String action, Boolean bypassCache, TimeSpan timeout)
--- End of inner exception stack trace ---
Server stack trace:
at Microsoft.ServiceBus.TokenProviderUtility.GetMessagingToken(TokenProvider tokenProvider, Uri baseAddress, String appliesTo, String action, Boolean bypassCache, TimeSpan timeout)
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageCreator.GetAuthorizationToken(String appliesTo, String action)
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageCreator.GetAuthorizationHeader(String action)
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageCreator.CreateWcfMessageInternal(String action, Object body, Boolean includeToken, String parentLinkId, RetryPolicy policy, TrackingContext trackingContext)
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender.GetOverheadSize()
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender..ctor(String path, SbmpMessagingFactory messagingFactory, SbmpMessageCreator messageCreator, RetryPolicy retryPolicy)
at Microsoft.ServiceBus.Messaging.Sbmp.CreateSenderLinkSettings..ctor(SbmpMessagingFactory messagingFactory, String entityName, Nullable`1 entityType, String transferDestinationEntityName, RetryPolicy retryolicy)
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessagingFactory.OnBeginCreateMessageSender(String transferDestinationEntityName, String viaEntityName, TimeSpan timeout, AsyncCallback callback, Object state)
at Microsoft.ServiceBus.Messaging.MessagingFactory.CreateMessageSenderAsyncResult.<GetAsyncSteps>b__52(CreateMessageSenderAsyncResult thisPtr, TimeSpan t, AsyncCallback c, Object s)
at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.EnumerateSteps(CurrentThreadType state)
at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.Start()
Exception rethrown at [0]:
at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
at Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult)
at Microsoft.ServiceBus.Messaging.OpenOnceManager.<>c__DisplayClass4`1.<Begin>b__3(IAsyncResult r, T& output)
at Microsoft.ServiceBus.Messaging.OpenOnceManager.OpenOnceManagerAsyncResult`1.OperationComplete(IAsyncResult result)
at Microsoft.ServiceBus.Common.AsyncResult.SyncContinue(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.OpenOnceManager.OpenOnceManagerAsyncResult`1.BeginOperation()
at Microsoft.ServiceBus.Messaging.OpenOnceManager.OpenOnceManagerAsyncResult`1.OpenComplete(IAsyncResult result)
at Microsoft.ServiceBus.Common.AsyncResult.SyncContinue(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.OpenOnceManager.OpenOnceManagerAsyncResult`1..ctor(OpenOnceManager openOnceManager, TimeSpan openTimeout, AsyncCallback callback, Object state, Func`3 beginOperation, EndOperation`1 endOperation)
at Microsoft.ServiceBus.Messaging.OpenOnceManager.Begin[T](AsyncCallback callback, Object state, Func`3 beginOperation, Func`2 endOperation)
at Microsoft.ServiceBus.Messaging.MessagingFactory.BeginCreateMessageSender(String transferDestinationEntityPath, String viaEntityPath, Boolean tryPairSender, TimeSpan timeout, AsyncCallback callback, Object state)
at Microsoft.ServiceBus.Messaging.Channels.ServiceBusOutputChannel.OpenMessagingFactoryAndMessageSenderAsyncResult.CreateFactoryComplete(IAsyncResult result)
at Microsoft.ServiceBus.Common.AsyncResult.SyncContinue(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.Channels.ServiceBusOutputChannel.OpenMessagingFactoryAndMessageSenderAsyncResult..ctor(ServiceBusOutputChannel outputChannel, TimeSpan timeout, AsyncCallback callback, Object state)
at Microsoft.ServiceBus.Messaging.Channels.ServiceBusOutputChannel.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open()
at Microsoft.BizTalk.Adapter.SBMessaging.SBMessagingOutputChannelFactory.OnCreateChannel(EndpointAddress address, Uri via)
at System.ServiceModel.Channels.ChannelFactoryBase`1.InternalCreateChannel(EndpointAddress address, Uri via)
at System.ServiceModel.Channels.ChannelFactoryBase`1.CreateChannel(EndpointAddress address, Uri via)
at System.ServiceModel.Channels.ServiceChannelFactory.ServiceChannelFactoryOverOutput.CreateInnerChannelBinder(EndpointAddress to, Uri via)
at System.ServiceModel.Channels.ServiceChannelFactory.CreateServiceChannel(EndpointAddress address, Uri via)
at System.ServiceModel.Channels.ServiceChannelFactory.CreateChannel(Type channelType, EndpointAddress address, Uri via)
at System.ServiceModel.ChannelFactory`1.CreateChannel(EndpointAddress address, Uri via)
at System.ServiceModel.ChannelFactory`1.CreateChannel()
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.GetChannel[TChannel](IBaseMessage bizTalkMessage, ChannelFactory`1& cachedFactory)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.SendMessage(IBaseMessage bizTalkMessage)
MessageId: {28428716-88C2-437B-953F-D471DA00C5A6}
InstanceID: {18C48B89-D9C0-47A8-ADF0-0CA62746FBB1}
Below are my Send Port Adapter Configurations:
URI is blacked out
/Namespace/Topic/ are next in the path
Can someone confirm that the Issuer Name is the Namespace and the Issuer Key is the Primary Key from the get-SBAuthorizationRule? I also tried Shared Access Signature (SAS) but that service was connecting to a default port and do not believe that is
how I need to connect.
Also, there is nothing on the Properties Tab as I do not have anything custom for the initial step.
Any and all help is appreciated.Glenn,
Thank you very much for the response, I will go down this route in further detail. A couple of quick questions for you to help further my understanding.
Where is the SAS limitation documented? I am sure I glossed over it and it did not register, but your help in where to look next time will be helpful.
Also, can I change the default Port for which it is listening on the BizTalk Server or the Service Bus Location? The connection string I get from get-SBAuthorization Rule is as follows:
Endpoint=sb://{ServiceBusLocation}/NsServiceBus;StsEndpoint=https://{ServiceBusLocation}:7355/NsServiceBus;RuntimePort=7354;ManagementPort=7355;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey={KeyValue}
The exception I get is:
A message sent to adapter "SB-Messaging" on send port "SBSendPort" with URI "sb://<ServiceBusLocation>/NsServiceBus/collateraltopic" is suspended.
Error details: System.ServiceModel.EndpointNotFoundException: Could not connect to net.tcp://<ServiceBusLocation>:9354/. The connection attempt lasted for a time span of 00:00:04.0250873. TCP error code 10061: No connection could be made because the target machine actively refused it <IPAddress>:9354. ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it
at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
at System.ServiceModel.Channels.SocketConnectionInitiator.ConnectAsyncResult.OnConnect(IAsyncResult result)
--- End of inner exception stack trace ---
It looks like it is going to 9354 for the authentication when the Service Bus is configured for
7355. I believe I have opened the ports on both ends but do not think it will matter since it looks like it is sending the
request to a different location.
Thank you -
Biztalk send to WCF-service that is behind a NLB
A while ago a WCF-service that biztalk 2006 r2 sends to was put behind a NLB.
I find that since than I sometimes get timeouts although biztalk was able to reach the service.
Also in my new test-environment using Bts2013 r2 I find that I sometimes get following response back (although the request was handled ok by the service)
I've been told that this is caused by the load-balancer...any ideas on how to solve this/what could be causing this
A message sent to adapter "WCF-Custom" on send port "aa" with URI "https://test.svc" is suspended.
Error details: System.ServiceModel.CommunicationException: An error occurred while receiving the HTTP response to
https://test.svc. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server
logs for more details. ---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed
by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.BeginReceive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, AsyncCallback callback, Object state)
at System.Net.Sockets.NetworkStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
--- End of inner exception stack trace ---
at System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)
at System.Net.TlsStream.EndRead(IAsyncResult asyncResult)
at System.Net.PooledStream.EndRead(IAsyncResult asyncResult)
at System.Net.Connection.ReadCallback(IAsyncResult asyncResult)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
--- End of inner exception stack trace ---
Server stack trace:
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)
Kind regards Isabelledcactually this is the exception I catch in my console-app (soap-fault)
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:encodingStyle="<SOAP:Body><SOAP:Fault><faultcode>Microsoft">http://schemas.xmlsoap.org/soap/encoding/"><SOAP:Body><SOAP:Fault><faultcode>Microsoft
BizTalk Server Negative Acknowledgment </faultcode><faultstring>An error occurred while processing the message, refer to the details section for more information </faultstring><faultactor>https://IntegrationServices.svc</faultactor><detail><ns0:NACK
Type="NACK" xmlns:ns0="<NAckID>{899D3BE7-A92A-49D2-8785-4394B35E5D19}</NAckID><ErrorCode>0xc0c0167a</ErrorCode><ErrorCategory>0</ErrorCategory><ErrorDescription>System.ServiceModel.CommunicationException">http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd"><NAckID>{899D3BE7-A92A-49D2-8785-4394B35E5D19}</NAckID><ErrorCode>0xc0c0167a</ErrorCode><ErrorCategory>0</ErrorCategory><ErrorDescription>System.ServiceModel.CommunicationException:
The underlying connection was closed: A connection that was expected to be kept alive was closed by the server. ---> System.Net.WebException: The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.
---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.BeginReceive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, AsyncCallback callback, Object state)
at System.Net.Sockets.NetworkStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
--- End of inner exception stack trace ---
at System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)
at System.Net.TlsStream.EndRead(IAsyncResult asyncResult)
at System.Net.PooledStream.EndRead(IAsyncResult asyncResult)
at System.Net.Connection.ReadCallback(IAsyncResult asyncResult)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
--- End of inner exception stack trace ---
Server stack trace:
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)</ErrorDescription></ns0:NACK></detail></SOAP:Fault></SOAP:Body></SOAP:Envelope>
Kind regards Isabelledc -
We are currently running
1. BizTalk Server 2013 R2
2. SharePoint 2013
both in a Windows 2012 Server environment, in Azure. The BizTalk and SharePoint are running on separate machines.
I am using the Windows SharePoint Adapter to upload a Tif file to a SharePoint document library. However, when the host instance is running under my team member's userid, I get the following error in the eventlog:
The adapter failed to transmit message going to send port "SendOwnershipToSharePoint" with URL "wss://bp1amsapt218:34392/sites/BiztalkSc/Lists/Ownership". It will be retransmitted after the retry interval specified for this Send Port.
Details:"[Microsoft.SharePoint.Client.ServerUnauthorizedAccessException] Access denied. You do not have permission to perform this action or access this resource. Server Error Code: -2147024891Trace: at Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(Stream
responseStream)
at Microsoft.SharePoint.Client.ClientRequest.ProcessResponse()
at Microsoft.SharePoint.Client.ClientRequest.ExecuteQueryToServer(ChunkStringBuilder sb)
at Microsoft.SharePoint.Client.ClientRequest.ExecuteQuery()
at Microsoft.SharePoint.Client.ClientRuntimeContext.ExecuteQuery()
at Microsoft.SharePoint.Client.ClientContext.ExecuteQuery()
at Microsoft.SharePoint.Client.Web.WebUrlFromPageUrlDirect(ClientContext context, Uri pageFullUrl)
at Microsoft.BizTalk.KwTpm.WssAdapter.ClientOmAccessor.RequestInfo..ctor(String siteUrl, String sharePointOnlineUsername, String sharePointOnlinePassword)
at Microsoft.BizTalk.KwTpm.WssAdapter.ClientOmAccessor.ListsAccessor..ctor(String siteUrl, String sharePointOnlineUsername, String sharePointOnlinePassword)
at Microsoft.BizTalk.KwTpm.WssAdapter.ClientOmAccessor.ListsAccessor.TryOpenWebSite(String siteUrl, String sharePointOnlineUsername, String sharePointOnlinePassword, Exception& lastError)
This error was triggered by the Windows SharePoint Services receive location or send port with URI wss://bp1amsapt218:34392/sites/BiztalkSc/Lists/Ownership.
Windows SharePoint Services adapter event ID: 12310".
This userid has already been added to the following groups on the BizTalk Server:
Local Administrators Group
BizTalk Server Administrators
SSO Administrators
BizTalk Isolated Host Users
BizTalk Application Users
I have also made sure the userid has full control access to the SharePoint site and the document library within the site. I have confirmed that the user with this userid is able to access the SharePoint site and can upload documents to the
document library, manually. However, when the host instance is running under this userid, I am not able to upload documents to the SharePoint document library.
The Windows SharePoint Services Adapter is configured with the following values:
Adapter Web Service Port: 34392
Timeout: 100000
Use Client OM: Yes
Destination Folder URL: Lists/Ownership
FileName: test.tif
Overwrite: Yes
SharePoint Site URL:
http://bp1amsapt218:34392/sites/BiztalkSc/
Microsoft Office Integration: No
Do you know what the cause for this error is? We urgently need a resolution for this?If you create an XML document and upload it to the Windows SharePoint Services Web site. The Windows SharePoint Services adapter will take that message, archive it in the Archive document library, and then send it to the Destination document library. This
procedure demonstrates how a document flows from a Sharepoint web site, through BizTalk Server, and to a Sharepoint Services Web site using the Windows Sharepoint Services adapter.
This MSDN library article shows the procedure, please check whether it will be helpful to troubleshoot.
Create a working directory
Create an XML file
Upload the XML file
See: https://msdn.microsoft.com/en-us/library/aa560513.aspx -
I have a question about the Service Locator Pattern. If The service locator caches the EJBHome references in a Hashmap and retreives them though a method, does that method need to be synchronized for Thread Safety?
If it has to be synchronized, doesnt it introduce performance bottle neck by letting only 1 thread access the method at any time?
Please see code snippet below...
Thanks,
Krish
public static synchronized EJBHome getHome(Class homeClass) throws NamingExeption {
EJBHome home = (EJBHome) this.homes.get(homeClass);
if(home == null) {
ctx = getInitialContext();
home = (EJBHome) PortableRemoteObject.narrow(ctx.lookup(homeClass.getName()),homeClass);
this.homes.put(homeClass,home);
return home;
}Hi,
Take a look at the below thread on server side which discusses this issue in details.
http://www.theserverside.com/discussions/thread.tss?thread_id=14992
Anil -
BizTalk TechNet Gurus Announced for June 2014!
The Results are in! and the winners of the TechNet Guru Competition June 2014 have been posted on the
Wiki Ninjas Blog.
Below is a summary, heavily trimmed to fit the size restrictions of forum posting.
BizTalk Technical Guru - June 2014
Steef-Jan Wiggers
BizTalk Server: Custom Archiving
TGN: "This one was my favorite this month. Archiving is a topic that is brought up often. Well done explaining it simply and how to do it according to best practice"
Sandro Pereira: "Love the topic, well explain and with everything you need, my favorite."
Mandi Ohlinger: "Another great addition to the Wiki. "
boatseller
BizTalk: Reducing and Consolidating WCF Serialization Schema Types
TGN: "Very good, keeping the code clean, and only referencing what you need and consolidate it is important!"
Mandi Ohlinger: "Great solution to somewhat-annoying behavior. Nice addition to the Wiki!"
Sandro Pereira: "Great article."
Murugesan Mari Chettiar
How to Implement Concurrent FIFO Solution in BizTalk Server
Ed Price: "Incredibly thorough in your explanations! Great formatting. Good job!"
TGN: "First in, first out. Great article Murugesan!"
Sandro Pereira: "Good additional to the TechNet Wiki, good work."
Forefront Identity Manager Technical Guru - June 2014
Remi Vandemir
Custom Reports in FIM2010R2
AM: "Great step-by-step guide for generating custom reports. Thanks for taking the time to put this together."
PG: "Nice article, in an area that is less known!"
Søren Granfeldt: "Very comprehensive."
Ed Price: "Great job on the intro, and a lot of images really help clarify all the steps!"
GO: "Thank you "
Eihab Isaac
FIM 2010 R2: Review pending export changes to Active Directory using XSLT
Ed Price: "Great introduction, great steps, and great job on the image and code formatting!"
GO: "An introduction, a sample code, images, a TOC and a conclusion. Nothing here to preserve the GOLD medal!"
PG: "Nice article!"
Søren Granfeldt: "Nice and precise"
Scott Eastin
A Practical Alternative to the PeopleSoft
AM: "Thank you for sharing. Great (and probably superior) alternative for those using PeopleSoft as import-only data source."
GO: "Amazing article, love it so much"
PG: "Would like to see more elaborated details in this article."
Søren Granfeldt: "A little more technical stuff would be nice"
Ed Price: "Some good community collaboration in removing blog-like personalization. This is a great topic with some good holistic thinking!"
Microsoft Azure Technical Guru - June 2014
Mr X
Configuration of WATM (Windows Azure Traffic Manager) for Web Portals hosted
on Azure VMs
JH: "Two simple words: Love it! The detailed explanation on how Traffic Manager works is awesome."
Ed Price: "Wow! Incredibly well written, with beautiful diagrams and a great use of images and tables! Great topic!"
GO: "This is a great article! Thanks Mr.X"
Mr X
How to use Windows Azure as Traffic Manager for Web portals
hosted in multiple on-premise datacenters
JH: "Very detailed! Great explanation at the beginning followed by a good step-by-step guide."
Ed Price: "A much needed article! Great job on the formatting and images!"
GO: "Thanks again, MR.X"
Mr X
How to connect Orchestrator to Windows Azure
GO: "I really enjoyed reading this article, clever and well written. Lovely done!"
JH: "Great article! I especially love the amount of pictures provided in the article."
Ed Price: "Good procedural article! Great use of images!"
Microsoft Visio Technical Guru - June 2014
Mr X
How to open Visio files without Visio
AH: "This Article is pretty basic and lacks details. Visio Viewer doesn't just open in IE but also in Outlook and File explorer. The writer should include the link to http://blogs.office.com/2012/11/28/download-the-free-microsoft-visio-viewer/
this blog which has lot more details "
Ed Price: "Good. I think the SEO on the title will drive more awareness of the Visio Viewer."
GO: "Thanks you Mr.X! Again a great article!"
Miscellaneous Technical Guru - June 2014
Ed Price - MSFT
Yammer: Announcements Feature
TGN: "Wow, not only is this a good way on how to write annoncments on Yammer, but in generel. Really, really great write-up Ed! T"
GO: "Tord says on the comment section: "Very nice article, Ed. I really enjoyed reading it and you had a great set of tips. Thanks for sharing!".. I only can respond AMEN! Thanks Ed!"
Margriet Bruggeman: "Good discussion of announcements feature."
Anthony Caragol
Backing Up and Restoring Lync 2013 Contacts
Margriet Bruggeman: "Short & Sweet"
GO: "Great article, but I'm missing, examples, images, definitions etc for a huge section like "backup and restore""
TGN: "Very good, Lync has eaten up the market and is a key product in most companies, articles like this is very valuable. Great work Anthony!"
SharePoint 2010 / 2013 Technical Guru - June 2014
Geetanjali Arora
SharePoint Online : Working with People Search and User Profiles
Benoît Jester: "A very good article, a must-read for those interested by SharePoint Online and the use of search and user profile API."
Jinchun Chen: "Excellent. Just a tip, if you would like to improve the performance, please use the Search Service to search user profiles"
Craig Lussier: "Good walkthrough and code example for getting started with People Search!"
Margriet Bruggeman: "Good starter for working with search and profiles"
Jaydeep Mungalpara
Creating Bookmarks in Wiki Pages - SharePoint Rich Text Editor Extension
Margriet Bruggeman: "Really cool! In the past, I was actually looking for this and its a nice implementation of this functionality. This article gets my vote!"
Craig Lussier: "Great solution for extending out of the box functionality. I like the synergy between the TechNet Wiki and TechNet Gallery!"
GO: "Simple but powerfull. We should all take an example about how this article has been written. This article has a TOC, headings and even a code! Well done!"
Jinchun Chen: "Nice. "
Benoît Jester: "A simple button which can save a lot of time!"
Dan Christian
PowerShell to copy or update list items across SharePoint sites and farms
GO: "The best artice for June! Thanks Dan, you deserve the GOLD medal!"
Benoît Jester: "A good article with useful scripts, as they can be used fior many scenarios (data refresh, migration tests, ...)"
Jinchun Chen: "Good and low-cost solution. To be automatic, we can use EventHandle instead. "
Craig Lussier: "Nice PowerShell script solution and explanation of the scenario. Consider using functions with parameters for easier reuse so input parameters are not hard coded."
Margriet Bruggeman: "This script can be useful, although typically migration scenarios are more complex than this. Having said that, I probably end up using this script some time in in the future"
Small Basic Technical Guru - June 2014
litdev
Small Basic: Sprite Arrays
Ed Price: "An important topic that's well described with fantastic examples! Great article!"
Michiel Van Hoorn: "Great starter for Sprite Fundamentals and how to handle them. Briljant start point for greating you 2D shooter"
Jibba Jabba
Small Basic - Monthly Challenge Statistics
Ed Price: "Jibba Jabba brings us astonishing insights and data about LitDev's Small Basic Monthly Challenges!"
RZ: "This is very nicely done and showed all the statistics visually"
Nonki Takahashi
Small Basic: Challenge of the Month
RZ: "This is very nicely done and organized all challenges of the month in one place"
Ed Price: "Although this is very basic, it's incredibly helpful to get all these in one list and to access all the great challenges!"
Michiel Van Hoorn: "Good explainer on fundamental structures."
SQL BI and Power BI Technical Guru - June 2014
Anil Maharjan
Using Power Query to tell your story form your Facebook Data
Jinchun Chen: "Interesting. I liked this best"
PT: "Plenty to like here"
Ed Price: "Great! I love to see Power Query articles like this! Great formatting and use of images!"
Tim Pacl
SSRS Expressions: Part 1 - Program Flow
PT: "A very comprehensive article about program flow expressions. Nice job. I'm sure many will benefit from this article. Just a little feedback about some terminology that could be more clear: The entire statement that
is typically used to set a property value for an object in an SSRS report is an "expression". Each of the three programming constructs you've mentioned (e.g. IIF, SWITCH & CHOOSE) are "functions" and not expressions or statements."
Jinchun Chen: "Perfect! Good article for SSRS newbie."
Ed Price: "The table and images help bring it more value. Great job!"
Anil Maharjan
How to Schedule and Automate backups of all the SSAS catalogs within the
Server Instance
PT: "This is a very useful article about automating multiple Analysis Services database backups using an SSIS package and the SQL Server Agent. Nice job."
Jinchun Chen: "Good."
Ed Price: "Good use of images. Could be improved with better code formatting. Good job!"
SQL Server General and Database Engine Technical Guru - June 2014
Shanky
SQL Server: What does Column Compressed Page Count Value Signify
in DMV Sys.dm_db_index_physical_stats ?
DB: "Interesting and detailed"
DRC: "• This is a good article and provides details of each and every step and the output with explanation. Very well formed and great information. • We can modify the create table query with “DEFAULT VALUES". CREATE TABLE [dbo].[INDEXCOMPRESSION](
[C1] [int] IDENTITY(1,1) NOT NULL, [C2] [char](50) NULL DEFAULT 'DEFAULT TEST DATA' ) ON [PRIMARY]"
GO: "Very informative and well formed article as Said says.. Thanks for that great ressource. "
Durval Ramos
How to get row counts for all Tables
GO: "As usual Durva has one of the best articles about SQL Server General and Database Engine articles! Thanks, buddy!" "
Jinchun Chen: "Another great tip!"
PT: "Nice tip"
Ed Price: "Good topic, formatting, and use of images. This would be far better if the examples didn't require the black bars in the images. So it would be better to scrub the data before taking the screenshots. Still a good article. Thank
you!"
System Center Technical Guru - June 2014
Prajwal Desai
Deploying SCCM 2012 R2 Clients Using Group Policy
Ed Price: "Great depth on this article! Valuable topic. Good use of images."
Mr X
How to introduce monitoring and automatic recovery of IIS application
pools using Orchestrator
MA: "Good job Mr X, However I would like to see this runbook integrated as a recovery task with Operations Manager IISapppools Monitors in order to maintain a standard way of notifications and availability reporting."
Ed Price: "Good formatting on the images, and great scenario!"
Prajwal Desai
How to deploy lync 2010 using SCCM 2012 R2
Ed Price: "Great job documenting the entire process!!!"
Transact-SQL Technical Guru - June 2014
Saeid Hasani
T-SQL: How to Generate Random Passwords
JS: "I loved the article, well structured, to the point. Not missing any caveats that might occur, really good in the end. I would suggest changing the function to accept a whitelist / blacklist as well as a length of
the password to be created. This would be the cherry on the pie :-)"
Samuel Lester: "Very nice writeup for a real world problem!"
Richard Mueller: "Clever and apparently well researched. I liked the detailed step by step explanations."
Jinchun Chen: "Excellent!"
Manoj Pandey: "A good and handy utility TSQL that I can use and levarage if I have to use similar feature in future."
Hasham Niaz
T-SQL : Average Interval Length
Richard Mueller: "A good article, but I need more explanation of the concepts."
Manoj Pandey: "A handy TSQL script that I can use and levarage if I have to use similar feature in future."
Visakh16
T-SQL: Retrieve Connectionstring Details from SSIS Package
Manoj Pandey: "Good shortcut by using TSQL with XML to read metadata information from SSIS XML file."
Samuel Lester: "Handy trick, thanks for posting!"
Richard Mueller: "Good code, but more explanation needed. Could use a See Also section."
Visual Basic Technical Guru - June 2014
The Thinker
Better to Ask for forgiveness then permission
Richard Mueller: "Good use of images and code. The humorous title might be better in a blog."
MR: "Great topic!"
GO: "Well, to be honnest, many people worked on that article, but still, the owner "the thinker" should receive the credits! muchos gracias "The Thinker" for the Most Revised Article"
Visual C# Technical Guru - June 2014
Jaliya Udagedara
Entity Framework Code First - Defining Foreign Keys using Data Annotations
and Fluent API
Ed Price: "Wow. Good descriptions, great code snippets, and great job highlighting sections on your images!"
GO: "Thank you."
Wiki and Portals Technical Guru - June 2014
XAML guy
History and Technology Behind the TechNet Wiki Ninja Belt Calculator
Ed Price: "It's amazing to see all the details of what this tool does. Great job on the descriptions and formatting the images and text!"
Richard Mueller: "Great documentation. Good links to explain everything."
GO: "I love your articles XAML guy! Always clear and always a pleasure to read! Thanks for you help and commitment for this tool."
Durval Ramos
HTML5 Portal
Ed Price: "This is great to see this HTML5 resource!"
Richard Mueller: "A great contribution to our collection of portals"
GO: "The HTML5 Portal is A-W-E-S-O-M-E !"
João Sousa
ASP.NET Portal
Ed Price: "Good job on this portal! The Return to top links are helpful!"
Richard Mueller: "More should be done to distinguish this portal from
here."
GO: "Thanks Joao!"
Windows Phone and Windows Store Apps Technical Guru - June 2014
Dave Smits
Theming of your application
Peter Laker: "Another great article from the mighty Dave. Very useful. Not sure if MS like us want us to work around the accents so much though ;)"
Ed Price: "Very useful topic and great formatting on the code! Could benefit from more explanation on the code toward the bottom and a See Also section. Great article!"
saramgsilva
Creating Windows Phone and Window 8.1 applications using Microsoft App Studio
Peter Laker: "A great introduction! Nice walkthrough, and plenty to look at!"
Ed Price: "This is good. I love the narrative and use of images! Good conclusion!"
Carmelo La Monica
Create Universal Application with Windows Phone App Studio (en-US).
Peter Laker: "Sensational article. A real attention grabber and written very clearly."
Ed Price: "Fantastic job on the narrative and images. Some amazing articles this month!"
Windows Presentation Foundation (WPF) Technical Guru - June 2014
Magnus (MM8)
WPF: How To Tab Between Items In a ListBox
KJ: "This article seemed very useful to me. The kind of thing that I might need and here's the answer."
GO: "Thanks for that great article!."
Ed Price: "Another amazing article from Magnus! Great job on the topic choice (very needed scenario), formatting, code, explanations, and See Also section. Fantastic article!"
Sugumar Pannerselvam
Lets forget about limitations and temprorary fix... Think about 4.5 features
KJ: "Wish there were code samples and more flushed out scenarios"
GO: "Why second place? the layout and way to explain didn't convince me. Doesn't mean that the article is bad. The article is awesome; but it's missing something."
Ed Price: "Short and sweet. Could benefit from adding in some code snippet examples and images. Good topic choice."
Windows Server Technical Guru - June 2014
Mr X
DHCP on Windows Servers – Why are the expired IP addresses not getting re-assigned?
JM: "This is an excellent article, thanks for your contribution."
Richard Mueller: "Important information with good explanation. Needs a See Also section."
Philippe Levesque: "Good article ! I like how it's explained versus Windows Server. An image with the DHCP's process could be a good addition for reference. (DHCP OFFER, DHCP ACK, etc..)"
Mr X
How to force a DHCP database cleanup for expired leases in a specific scope
GO: "I'm actually thinking that nobody can defaut you Mr.X"
Philippe Levesque: "Good article ! I would add that changing the lease time to be shorted could help too."
JM: "A very good article, however you might consider adding this content as a section in your article about expired IP addresses in DHCP"
Richard Mueller: "More good information. Should be linked to the other DHCP article."
GL: "This is OK but a better solution for a highly utilized DHCP scope would be to shorten the lease time and/or configure a superscope."
Hicham KADIRI
Windows Server Core 2012 R2 - Initial configuration
GL: "This is good required information. I would really like to see information added about how to add a server role. You might consider providing PowerShell alternatives to the netsh and other commands."
JM: "This is a great to-the-point article on how to configure a Core install of Windows Server, nice work."
Richard Mueller: "A great collection of useful tools. Some could use images, more detail, or examples. The example sections could be added to the Table of Contents."
GO: "Well, our new french MVP! Well written Hicham! Do not forget to pray attention for the layout! It's capital for readers and judges!"
Philippe Levesque: "I like the article, a good resumé of the command you need to do to configure a server."
Don't forget the full version, with runners up is available
here.
More about the TechNet Guru Awards:
TechNet Guru Competitions
How it works
#PEJL
Got any nice code? If you invest time in coding an elegant, novel or impressive answer on MSDN forums, why not copy it over to the one and only
TechNet Wiki, for future generations to benefit from! You'll never get archived again!
If you are a member of any user groups, please make sure you list them in the
Microsoft User Groups Portal. Microsoft are trying to help promote your groups, and collating them here is the first step.Congrats to Steef-Jan, Boatseller, and Murugesan! And thanks to all the contributors! Great articles this month!
BizTalk Technical Guru - June 2014
Steef-Jan Wiggers
BizTalk Server: Custom Archiving
TGN: "This one was my favorite this month. Archiving is a topic that is brought up often. Well done explaining it simply and how to do it according to best practice"
Sandro Pereira: "Love the topic, well explain and with everything you need, my favorite."
Mandi Ohlinger: "Another great addition to the Wiki. "
boatseller
BizTalk: Reducing and Consolidating WCF Serialization Schema Types
TGN: "Very good, keeping the code clean, and only referencing what you need and consolidate it is important!"
Mandi Ohlinger: "Great solution to somewhat-annoying behavior. Nice addition to the Wiki!"
Sandro Pereira: "Great article."
Murugesan Mari Chettiar
How to Implement Concurrent FIFO Solution in BizTalk Server
Ed Price: "Incredibly thorough in your explanations! Great formatting. Good job!"
TGN: "First in, first out. Great article Murugesan!"
Sandro Pereira: "Good additional to the TechNet Wiki, good work."
Also worth a mention were the other entries this month:
BizTalk Server and Sentinet - Protocol Mediation REST to SOAP by
Steef-Jan Wiggers
Ed Price: "Thanks for digging into this important topic. Amazing job on the diagrams and images!"
Sandro Pereira: "Was missing this topic in the TechNet Wiki, great article!"
TGN: "You've put a lot of effort into this one. Sentinet is a good addition to BizTalk development, great work Steef-Jan."
BizTalk: Passing variables into maps by
Alastair Grant
Mandi Ohlinger: "Nice use of the ThreadStatic attribute!"
TGN: "Nice article, and it is true every now and then you need that variable into the map!"
Sandro Pereira: "Good example, however this approach comes with little performance hit also and in some scenarios you can also find yourself in particular dangerous situation, for example if you don’t validate if the static singleton instance
object still exist or not in the code you obtain “object reference not set to an instance of an object”"
BizTalk: SQL Patterns for Polling and Batch Retreive by
boatseller
Sandro Pereira: "Good work and good article."
Ed Price: "Good topic with great use of images and code formatting!"
TGN: "This is really good. I can see you spent time on this one. Great work!"
BizTalk Server : Scheduling Orchestration using Trigger Message by
Maheshkumar S Tiwari
Mandi Ohlinger: "This is a must-read when using scheduled receive in BizTalk! LOVE the Codeplex adapter. "
Sandro Pereira: "As one of the persons in charge for this adapter... I must say I love it!"
TGN: "Good one, an article that is very valuable for the community."
Ed Price, Azure & Power BI Customer Program Manager (Blog,
Small Basic,
Wiki Ninjas,
Wiki)
Answer an interesting question?
Create a wiki article about it! -
My Scenario is - I will be receiving Batched files (FlatFile) and my BizTalk will be interacting with Web services(WCF)
My suggestions was to use ESB but I was told for Batched messages ESB is not a good idea. It works good for debatched messages.
Any suggestions for my scenario please ?
MBHNow that's a different scenario. Instead of starting with how to handle exceptions, focus on avoiding them in first place.
With 10k batches, you should consider a Resource Dispenser or Thottling pattern since as a caller, BizTalk can easily overwhelm your average internal service endpoint.
How to handle exceptions depends on what the business expectation is and who must handle them. -
Hi,
Can you please let me know the approach to consume a REST service dynamically.
I have a custom orchestration service as described in the below thread. I use BRE resolvers to resolve and set the endpoints runtime on dynamic ports. Also using dynamic transforms.
http://www.ithero.nl/post/2013/06/02/Creating-a-Custom-Itinerary-Orchestration-Service-for-the-Recipient-List-pattern.aspx
Now i want to extend this to invoke REST apis as well. Can you please guide to a link or share some ideas on how this can be achieved using BizTalk 2013.
Also could you please comment on authentication of such requests.
Thanks,
Ujjwal
-UjjwalHi Ujjwal,
Here is a useful link for you.
Calling Restful Service using Dynamic Send Ports – BizTalk 2013
How to call RESTFULL service using Dynamic Ports with Variable Mapping in
WCF-WebHttp Adapter
Rachit
Please mark as answer or vote as helpful if my reply does -
Re: Service Object events and LockMgr
On the option that you have considered, I have implemented the same model
in my previous project (using Java/RMI), but I felt that it is more than
what is normally needed for concurrency protection.
I can suggest another option that is worth considering which is in place in
our app for concurrency.
Almost every table in our db has created By, created On, modifed By,
modified On columns. The parent class of all business objects has
attributes that correspond to these four columns. In addition to these
four, there is a fifth attribute (introduced when concurrency was built)
called originalModifiedOn. Upon retrieval from the db, it is set to
modifiedOn value (from the db), during UPDATE, the value in this column is
added part of the WHERE clause. So when the second user tried to do save
the same object, the underlying db update will get a 'zero rows updated'
which is translated into an application error 'possible concurrency
error'. The user re-retreives the now 'stale' object before applying their
edits.
A lot of these things are and can be built into the framework imposing very
little work that each Object needs to do to have concurrency protection.
I am not sure if there is a mention in the Patterns paper of this model,
but it is very easy to implement and supports what is needed.
Kishore Puvvada's Mail
[email protected] on 07/28/99 01:47:00 AM
To: [email protected]@INTERNET
cc: (bcc: Kishore Puvvada/HQ-IS/TAL)
Subject: Service Object events and LockMgr
Hi folks,
We're currently looking at strategies for dealing with the simultaneous
updates to the database from multiple clients (concurrency
management). That is when two (or more) clients load the same object to
edit it, then make different changes and save them to the database.
We have a copy of a Forté document (from the "Patterns" course, I
think) which describes three methods of dealing with this:
1) Lock the database table row as soon as a client select it for editing
and hold the lock until it is saved.
2) Immediately before 'saving' check that the database hasn't changed
(either by reading what's there before updating, or by using a huge
'where' clause that contains all unchanged fields)
3) The Forté "LockMgr" pattern, which uses a service object with notifier
proxies to allow locking and updating notification between the clients.
Option 3 is obviously the most robust method, but it requires a fair
amount of coding and could also be a bottleneck for database reads and
writes.
But I have another option for which I was looking for opinions. What if
we had a "Change Event manager" which broadcast an event every time
a change is made to the database. Each business class would have its
own event. If the event had the object's primary key as a parameter, then
clients editing that particular object type could check to see if the object
currently on screen is the one that changed. That way you could disable
the 'save' until they had refreshed their on-screen data.
It's not particularily elegant, but it's reasonably simple to implement. It
also deals with changes sent across our WAN from other database
servers.
But this option is only worthwhile if you can replicate the "Change Event
manager" SO and still register for an event on the client. Can clients
register for SO events and receive an event generated by any of the SO's
replicates? Or when you register for an SO's event do you register for
only one instance of the SO?
Thanks in advance for any answers.
Cheers,
Duncan Kinnear,
McCarthy and Associates, Email:
[email protected]
PO Box 764, McLean Towers, Phone: +64 6 834 3360
Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
Providing Integrated Software to the Meat Processing Industry for over 10
years
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:
http://pinehurst.sageit.com/listarchive/forte>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>On the option that you have considered, I have implemented the same model
in my previous project (using Java/RMI), but I felt that it is more than
what is normally needed for concurrency protection.
I can suggest another option that is worth considering which is in place in
our app for concurrency.
Almost every table in our db has created By, created On, modifed By,
modified On columns. The parent class of all business objects has
attributes that correspond to these four columns. In addition to these
four, there is a fifth attribute (introduced when concurrency was built)
called originalModifiedOn. Upon retrieval from the db, it is set to
modifiedOn value (from the db), during UPDATE, the value in this column is
added part of the WHERE clause. So when the second user tried to do save
the same object, the underlying db update will get a 'zero rows updated'
which is translated into an application error 'possible concurrency
error'. The user re-retreives the now 'stale' object before applying their
edits.
A lot of these things are and can be built into the framework imposing very
little work that each Object needs to do to have concurrency protection.
I am not sure if there is a mention in the Patterns paper of this model,
but it is very easy to implement and supports what is needed.
Kishore Puvvada's Mail
[email protected] on 07/28/99 01:47:00 AM
To: [email protected]@INTERNET
cc: (bcc: Kishore Puvvada/HQ-IS/TAL)
Subject: Service Object events and LockMgr
Hi folks,
We're currently looking at strategies for dealing with the simultaneous
updates to the database from multiple clients (concurrency
management). That is when two (or more) clients load the same object to
edit it, then make different changes and save them to the database.
We have a copy of a Forté document (from the "Patterns" course, I
think) which describes three methods of dealing with this:
1) Lock the database table row as soon as a client select it for editing
and hold the lock until it is saved.
2) Immediately before 'saving' check that the database hasn't changed
(either by reading what's there before updating, or by using a huge
'where' clause that contains all unchanged fields)
3) The Forté "LockMgr" pattern, which uses a service object with notifier
proxies to allow locking and updating notification between the clients.
Option 3 is obviously the most robust method, but it requires a fair
amount of coding and could also be a bottleneck for database reads and
writes.
But I have another option for which I was looking for opinions. What if
we had a "Change Event manager" which broadcast an event every time
a change is made to the database. Each business class would have its
own event. If the event had the object's primary key as a parameter, then
clients editing that particular object type could check to see if the object
currently on screen is the one that changed. That way you could disable
the 'save' until they had refreshed their on-screen data.
It's not particularily elegant, but it's reasonably simple to implement. It
also deals with changes sent across our WAN from other database
servers.
But this option is only worthwhile if you can replicate the "Change Event
manager" SO and still register for an event on the client. Can clients
register for SO events and receive an event generated by any of the SO's
replicates? Or when you register for an SO's event do you register for
only one instance of the SO?
Thanks in advance for any answers.
Cheers,
Duncan Kinnear,
McCarthy and Associates, Email:
[email protected]
PO Box 764, McLean Towers, Phone: +64 6 834 3360
Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
Providing Integrated Software to the Meat Processing Industry for over 10
years
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:
http://pinehurst.sageit.com/listarchive/forte>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte> -
Service Object events and LockMgr
Hi folks,
We're currently looking at strategies for dealing with the simultaneous
updates to the database from multiple clients (concurrency
management). That is when two (or more) clients load the same object to
edit it, then make different changes and save them to the database.
We have a copy of a Forté document (from the "Patterns" course, I
think) which describes three methods of dealing with this:
1) Lock the database table row as soon as a client select it for editing
and hold the lock until it is saved.
2) Immediately before 'saving' check that the database hasn't changed
(either by reading what's there before updating, or by using a huge
'where' clause that contains all unchanged fields)
3) The Forté "LockMgr" pattern, which uses a service object with notifier
proxies to allow locking and updating notification between the clients.
Option 3 is obviously the most robust method, but it requires a fair
amount of coding and could also be a bottleneck for database reads and
writes.
But I have another option for which I was looking for opinions. What if
we had a "Change Event manager" which broadcast an event every time
a change is made to the database. Each business class would have its
own event. If the event had the object's primary key as a parameter, then
clients editing that particular object type could check to see if the object
currently on screen is the one that changed. That way you could disable
the 'save' until they had refreshed their on-screen data.
It's not particularily elegant, but it's reasonably simple to implement. It
also deals with changes sent across our WAN from other database
servers.
But this option is only worthwhile if you can replicate the "Change Event
manager" SO and still register for an event on the client. Can clients
register for SO events and receive an event generated by any of the SO's
replicates? Or when you register for an SO's event do you register for
only one instance of the SO?
Thanks in advance for any answers.
Cheers,
Duncan Kinnear,
McCarthy and Associates, Email: [email protected]
PO Box 764, McLean Towers, Phone: +64 6 834 3360
Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
Providing Integrated Software to the Meat Processing Industry for over 10 years
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>Hi,
Just wonder exactly how this Lock Manager can be implemented. Do you mean that you are
going to cache every object that is instantiated from the database? Or you just cache
the object id, primary key, etc?
Frankly speaking, I won't attempt to due with this kind of currency coding myself as
the database vendor has spent years in coding just to do this.
Regards.
Dimitar Gospodinov wrote:
Hello Duncan,
Wednesday, July 28, 1999, 10:31:46 AM, you wrote:
DK> Hi folks,
DK> We're currently looking at strategies for dealing with the simultaneous
DK> updates to the database from multiple clients (concurrency
DK> management). That is when two (or more) clients load the same object to
DK> edit it, then make different changes and save them to the database.
DK> We have a copy of a Forté document (from the "Patterns" course, I
DK> think) which describes three methods of dealing with this:
DK> 1) Lock the database table row as soon as a client select it for editing
DK> and hold the lock until it is saved.
DK> 2) Immediately before 'saving' check that the database hasn't changed
DK> (either by reading what's there before updating, or by using a huge
DK> 'where' clause that contains all unchanged fields)
DK> 3) The Forté "LockMgr" pattern, which uses a service object with notifier
DK> proxies to allow locking and updating notification between the clients.
DK> Option 3 is obviously the most robust method, but it requires a fair
DK> amount of coding and could also be a bottleneck for database reads and
DK> writes.
DK> But I have another option for which I was looking for opinions. What if
DK> we had a "Change Event manager" which broadcast an event every time
DK> a change is made to the database. Each business class would have its
DK> own event. If the event had the object's primary key as a parameter, then
DK> clients editing that particular object type could check to see if the object
DK> currently on screen is the one that changed. That way you could disable
DK> the 'save' until they had refreshed their on-screen data.
DK> It's not particularily elegant, but it's reasonably simple to implement. It
DK> also deals with changes sent across our WAN from other database
DK> servers.
DK> But this option is only worthwhile if you can replicate the "Change Event
DK> manager" SO and still register for an event on the client. Can clients
DK> register for SO events and receive an event generated by any of the SO's
DK> replicates? Or when you register for an SO's event do you register for
DK> only one instance of the SO?
DK> Thanks in advance for any answers.
DK> Cheers,
DK> Duncan Kinnear,
DK> McCarthy and Associates, Email: [email protected]
DK> PO Box 764, McLean Towers, Phone: +64 6 834 3360
DK> Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
DK> -------------------------------------------------------------------------------
DK> Providing Integrated Software to the Meat Processing Industry for over 10 years
DK> -
DK> To unsubscribe, email '[email protected]' with
DK> 'unsubscribe forte-users' as the body of the message.
DK> Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>
I would recommend you to use the following approach (of course if you
do not have some special requirements :) ):
1. You should have a LockManager that will synchronize all clients in
their attempt to modify/delete objects in your application.
2. Each client, when attempts to modify/delete some object, it must
LOCK it using the services provided with the LockManager.
3. The requested operation can be performed only after successful
locking.
4. If a lock can not be obtained (for example if the object is already
locked by some other client) then the operation is aborted.
The details of this pattern depends on your needs. :)
Hope this helps.
Best regards,
Dimitar mailto:[email protected]
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>-
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte> -
How to call Biztalk through ABAP-DYNPRO
Hi All ,
I want to call a function module which in BIZTALK Server through
ABAP-DYNPRO ( by service call) . for this I require Destination details ( in service call ) .
Can anyone please send me the Destination details or the approach to follow for calling the Biztalk ?
Thanks in advance ..
Regards
RahulRun a search on Web service calls from WDA.
This topic has been addressed on numerous occassions.
You can call BIZ-TALK using a web service.
You could also call it using straight HTTP .
There are classes in ABAP to allow you to write an HTTP client app if required.
If possible go the Webservice route.
IE have you Biztalk guy generate a WSDL for the call.
The follow instructions on numerous threads on calling web services.
Cheers
Phil. -
Web service scenario - Missing or Invalid Receiver Agreement
Dear,
We are on SAP PI 7.11 SP11 and facing a problem with a synchronous scenario SOAP <-> SAP PI <-> ABAP proxy.
The Service Interfaces contain multiple operations and operation/message mappings are in place.
Also, configuration on the ID side is done.
The WSDL is retrieved from the sender agreement and imported into soapUI.
All seems there and the cache is ok, but still we face the error Missing or Invalid Receiver Agreement in the message monitor.
I already found OSS note 1739173, describing the problem, but that seems to be for asynchronous messages only with QoS EO and EOIO.
Or do we need that anyway?
Any leads what could solve this strange problem?
thanks a lot.
DimitriHi,
Both outbound and inbound service interface have multiple operations.
The configuration:
ESR
Outbound and inbound service interfaces containing 5 operations each.
All synchronous, interface pattern stateless.
Outbound service interface is linked to an external message.
The Inbound service interface is linked to a message type.
For every operation, a operation mapping and message mapping is available.
Integration Directory
seperate configuration objects. No ICO is used.
Sender Agreement
no validation
Software Component Version of Sender Interface is pointing to the SWCV, containing the outbound service interface
sender SOAP communication channel
HTTP
SOAP 1.1
Do not use SOAP envelope enabled
QoS is best effort
Receiver Determination
software component version left blank. So, no operation-specifics mentioned.
type of receiver determination is standard
receiver is the SAP back end system (business system)
Interface Determination
Software Component Version of Sender Interface is pointing to the SWCV, containing the outbound service interface
for each operation, a operation mapping, inbound service interface and namespace is indicated
Receiver Agreement
receiver XI adapter
HTTP 1.0
XI 3.0
HTTP destination to the SAP back end
Transfer hop list enabled
Software Component Version of receiver Interface is pointing to the SWCV, containing the inbound service interface
Please note
the message mapping is a XSLT mapping
tests with single-operation service interfaces are successful.
Kind regards,
Dimitri -
what is the best way to handle errors in BizTalk ?
We are using web services, databases.
Is ESB Exception handling preferred to others ? any better suggestions please ?
MBHYou don't need custom-Itineraries /On Ramp/Off Ramp for repaid and resubmit using ESB portal. But you need to have receive ports, send ports, orchestration which comes with ESB tool kit for this purpose. When a failure is published to ESB-bus,
"catch all” exception send port will pick it up and publish it to the ESB Exceptiondb. Then using the ESB portal you can edit/repair the message and resubmit it directly from the portal without using the ESB-Toolkit artefacts like Itineraries /On Ramp/Off
Ramp.
Refer this article where author uses this feature without any custom ESB-toolkit artefacts
http://seroter.wordpress.com/2010/01/18/considerations-when-retrying-failed-messages-in-biztalk-or-the-esb-toolkit/
One option to route a failed message to the ESB Portal one must turn on routing for failed messages on the send port. This results in the failed message being routed to the ESB Exception database along with the exception details. Even in orchestration's
you can submit the failed message to ESBException DB from where you can repair and resubmit the message.
Refer this article for more help on this context:
Routing exceptions on send ports to the ESB Exception Management Portal without turning on routing for failed messages
If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.
Maybe you are looking for
-
Printer driver hangs when printing with Office 2013/Windows 8 64 bit
Printer: HP Color LaserJet CM1312nfi Printer Driver: V5.1 (up to date, downloaded from HP support website) or Generic V5.6 OS: Windows 8 Professional 64bit When I try to print a certain Excel document with Excel 2013 and printer driver V5.1, the prog
-
Can I install two versions of NW in the same server?
I have BW installed in a server running on Netweaver 7.3. but I need to install Netweaver 7.02 to do some tests, is it possible to install this other version in the same server? or will there be conflicts after the installation of the second version?
-
Installing fontconfig-infinality from AUR
Hello guys! It is probably the dumbest question ever, but I'm new to Arch and I am kind of stack here, so please help. I'm trying to install the infinality fonts on my system, 'cause the default ones look awful for me. According to Font Configuration
-
Colors not showing up and print doubleing and blurry
Some sites colors do not show as they should,in black and white.Print is superimposed over each other and blurry.I never had this problem till I down loaded firefox 4.
-
I have a rectangle with a text over. How kan I "extract" the text from the rectangle so the background is visible through the rectangle?