Forum Replies Created
-
AuthorPosts
-
A lot of it depends upon the type of organization. Some companies would rather build custom solutions to integrate systems, other would like to buy a product that does a lot of the work for you. The later is the type of organization that I work for.
Microsoft, in North America anyways, often will win business based upon price as a lot of the other integration technologies are more expensive than BizTalk. I have also seen a lot of organizations that are trying to standardize their toolsets and this usually involves .Net which makes using BizTalk a natural decision.
Hi,
Thanks for the reply. Not what I wanted to hear 🙂 but at least I don't have to search for it any more.The reason why I wanted to use this is because I had a problem with empty property values as I don't want to use the context menu to "Nullify" the property. I found a nice workaround though and therefore post it here:
This a converter that converts an empty value (user input) into a empty-placeholder-string (datastorage) when a user enters a value (and the other way around for display the value). In the adaptercode the value must be checked for this placeholder to reset it to string.Empty.
This is the reference in the schema:
<xs:element name="ConfigDBStoredProcedure" type="xs:string">
<xs:annotation>
<xs:appinfo>
<baf:designer xmlns:baf="BiztalkAdapterFramework.xsd">
<baf:displayname _locID="ConfigDBStoredProcedureName">Edit this field in the resource file</baf:displayname>
<baf:description _locID="ConfigDBStoredProcedureDesc">Edit this field in the resource file</baf:description>
<baf:category _locID="ConfigDB"></baf:category>
<baf:converter>ASSEMBLY.EmptyPlaceholderConverter, AdapterUIEditors, Version=1.0.0.0, Culture=neutral, PublicKeyToken=…, processorArchitecture=MSIL</baf:converter>
</baf:designer>
</xs:appinfo>
</xs:annotation>
</xs:element>
This is the addionaly class:
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Diagnostics;namespace GlobalRefund.B2B.DeepFileAdapter.UIEditors
{
public class EmptyPlaceholderConverter : TypeConverter
{
public const string EmptyPlaceholder = "!!##EmptyPlaceholder##!!";// From input to datastorage
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
EventLog.WriteEntry("EmptyToNullConverter", "ConvertFrom " + (value == null ? "null" : value.ToString()) + " " + value.GetType().ToString());
if (value is string && (string)value == string.Empty) return EmptyPlaceholder;
return value;
}// from datastorage to input
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
EventLog.WriteEntry("EmptyToNullConverter", "ConvertTo " + (value == null ? "null" : value.ToString()));
if (value == null || (value is string && (string)value == EmptyPlaceholder)) return string.Empty;
return value;
}
}
}And this is the usage in the adapter:
string rootFolder = Extract(document, "Config/RootFolder");
if (rootFolder == EmptyPlaceholderConverter.EmptyPlaceholder) rootFolder = string.Empty;hope this helps others with the same problem 🙂
Thanks, that was really insightful into the current use of Biztalk. I'll keep reading up on Biztalk and its developments. I'm located in Asia and Biztalk isn't widely used over here due to its license cost and also because most companies here are small and medium sized enterprises.
Personally, I do find Biztalk has great potential if used to its features are used.
regards
Ash
Dashiel,
AFAIK, those kind of fully customized editors are only available to unmanaged adapters (yes, several of the native adapters shipping with biztalk are still written in unmanaged code, such as the FILE and SMTP adapters). However, for managed adapters you can still tweak quite a bit of what you get with the default property grid based property dialog (including adding a popup WInForms dialog when you edit a specific property which can have anything you want in it).
Something that looks interesting is this statement:
(00010) 04/10/2007 13:48:33 – dussmann (127.0.0.1)> 421 Connection timed out.
I believe that error 421 is a Server initiated closing of the connection. Have you tried to ftp a file to this server outside of BizTalk. Perhaps try to ftp a file via the command prompt. This may not be a BizTalk issue?
Also, I noticed in your configuration that you are not specifying a "Folder" for the file to get moved to. In this event it will probably end up in the root directory or the home directory for the account that you are using to connect.
Check out this page: http://firechewy.com/blog/archive/2005/10/13/924.aspx
I would imagine that one of the following will help you by including the macro in your send port configuration.
%datetime% Coordinated Universal Time (UTC) date time in the format YYYY-MM-DDThhmmss (for example, 1997-07-12T103508). %datetime_bts2000% UTC date time in the format YYYYMMDDhhmmsss, where sss means seconds and milliseconds (for example, 199707121035234 means 1997/07/12, 10:35:23 and 400 milliseconds). %datetime.tz% Local date time plus time zone from GMT in the format YYYY-MM-DDThhmmssTZD, (for example, 1997-07-12T103508+800). Microsoft definately does have some plans for Beyond R2. There have not been a lot of public remarks however. Based on some of the conferences that I have attended, the next version of BizTalk will be based upon Windows Workflow Foundation. One thing that I have noticed though is that Microsoft will provide you with the tools to provide integration inside or outside of BizTalk. Whether that is WCF, WF and with the BizTalk Line of BUsiness Adapters coming out next year that do not require people to use BIzTalk even though they are called the BIzTalk Adapter pack could provide for some interesting solutions. The value add for BizTalk is the built in plumbing(guarenteed delivery, message persisitance, message retry, security and scalablility to name a few. BizTalk has a good story around this.
In terms of market penetration, Microsoft has over 7000 BizTalk customers(I would imagine this is all versions combined) and 90% of the top Global 100 use it. So as you can see Microsoft has no incentive to let it die. In terms of what type of industries use it, I can tell you that BizTalk has a presence in these industries Oil and Gas, Financial, Health, Government, Manufacturing, Utilities and Entertainment.
Assuming this is your local Dev box, what I have done is create local accounts that do not expire. One for SSO, one for BizTalk Admin, biztalk hosts etc. That way these accounts never need a password change. Our organization forces us to change our password regularly as well. So this gets around this. The limitation does become when you want to connect to a remote system, where your local account will not have access. In those situations I may just change the host instance user account to use an Active Directory account instead.
What I was refering to was how you extract pending work from the DB2 database, not a configuration of BizTalk. The conventional way to do this is to call a procedure that returns one or more jobs to your bts app. It sounds like you are allowing both servers to see 'pending' work at the same time. By creating a unique identifier for each call you can trap the queue content so a subsequent call only reads new elements.
Something like trapguid =: newguid(); update pendingjobs set trapid = trapguid where trapid = null; select * from pendingjobs where trapid = trapguid;
There are examples of this in the bts samples sdk.
This actually depends on what features or sub systems of BizTalk is installed/configured/used in your specific system.
Easiest would be to go to the services panel (control panel –>administrative tools –>services) and sort the list of services by log on and you should see what are the services using your id or the admin id..
you can change it from there..if already started you might need restart the service.
I really wanna thank you man because you give me the first step to start from but I want to know what is the methodology to do so
and does it integrate any version of cobol
thanks man
Hi DMWilkson,
Thanks for the reply. How do we set all pending records/jobs to a guid? Do I have to run the map in Orchestration instead of executing it in Receive Port? I have no idea about implicit transaction, is it a property of receive location? Thanks very much for your help.
I don't know about DB2, but is sounds like you are not reading the database in a transactional manner. ie, both servers are detecting the same data needs to be processed. With MSSQL, you would use a procedure that set all pending records/jobs to a guid, then read the records with that guid. The procedure being an implicit transaction. For distribution across multiple servers you can limit how many records are 'trapped'
I saw a demo last week about BizTalk + Host Integration Server (HIS). I believe that HIS 2006 falls underneath the same license as BizTalk Server 2006/2006R2. I would start there (HIS 2006). In the demo they did integrate some .Net code with COBOL running on a IBM Mainframe. They then showed how you could do it using BizTalk.
This is about all I know about it. I certainly know that you can do it. I cannot speak to how well it works, how easy/hard it is etc.
October 2, 2007 at 6:23 AM in reply to: Exception of type ‘System.OutOfMemoryException’ using a Pipeline to split a large positional flat file #18119First of all, 2g memory is not much. The os will use about half that.
You need to determine which process is taking up the memory. The pipeline debatching or the per-line processing. Personally I would pass the filename to a .net object that could extract each line in order. Create a MoveNext property that would return an xml message holding the parsed content of a line optimally formatted for whatever processing BTS is required to do. Further I would make sure I was minimizing the foot print by using a file stream rather than reading the entire file into memory at once.
It does not sound like the per-line content is large , but try to use inline or call orchestrations to complete the task to minimize the number of messages being processed.
-
AuthorPosts