John Marshall
John Marshall - Customer Fulfilment Manager
John is our customer fulfilment manager and oversees the needs of our clients.

Fed up buying the kids new sandals this summer?

Look no further:

Reprap - self-replicating machine

I love the idea of just bunging in another milk bottle:

The RepRap needs to get much faster before it can even begin to realise its potential, but it is still early days for a device - even though it has been dreamt of since the dawn of the enlightenment - and Bowyer is not done yet. Soon, he plans to design a shredder for the machine, so old items created on the RepRap can be returned to granules of plastic to be reused. Think about it, he says: "You could shred your milk bottles and make a pair of sandals. What's more, when the child grows out of the shoes, you shred them, add another milk bottle, rescale the design and you have a new pair." If nothing else, the RepRap could be the ultimate recycling machine.

Jul 2008
04

Its the end of the world as we know it. Or perhaps not. As physics is an abiding interest of mine I thought I would post this while the Earth still exists!

Guardian - CERN

To set collation on a column in SQL Server: 

ALTER TABLE dbo.tblActivities ALTER COLUMN OffsetFrom nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS

GO

In fxWeb7 themes are cached on the server. To force a refresh to a theme, editing theme.xslt (or any of the other theme stylesheets) is not sufficient, you have to edit default.xslt as well. This forces the cache to clear and will then render the revised theme.

The setting in the config file controls this feature.  Clearly it should be set to false on all developer machines in particular if they are developing the XSLT.  It has considerable performance advantages when set to true as there is then almost no disk activity.

If this is NULL on the Addresses tab in Weents Admin, then the Book Now button will

not

display on the generated Invite on fxCampaign.

I have added this column to the Schedule tab in fxCampaign. It has to be NULL or set to a future date from the Campaign to run.

The standard way to to it is do double the string delimiter:

insert mytable values (3, '''', getdate())

Standard SQL only recognizes ' as a string delimiter. " is used to delimiter
identifiers with "funny" characters in them, like space. (Although with SQL
Server you normally use [] in this case.)

When Auto_Shrink is set to ON, the database files are candidates for periodic shrinking. Both data file and log files can be shrunk automatically by SQL Server. AUTO_SHRINK reduces the size of the transaction log only if the database is set to SIMPLE recovery model or if the log is backed up.

When set to OFF, database files are not automatically shrunk during periodic checks for unused space.

This article sets out some interesting techniques for extracting random sets of data from a table using SQL.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsqlpro04/html/sp04c1.asp

When adapting an updategram schema to encompass the insertion of rows in a child table, you may come across an error indicating that there is an invalid child element in the map. This is generally caused by not setting the max occurs propoerty of the record node to unbounded.

This demonstrates a nice use of the looping functoid in creating a hierarchy in a schema from a flat schema

I have an input schema that looks like this:

<Answer>

            <URN></URN>

            <ImageFile></ImageFile>

            <ImageDir></ImageDir>

            <Question1></Question1>

            <Question2></Question2>

            …

            …

</Answer>

 

And I want a schema that looks like this:

<Answer>

            <URN></URN>

            <ImageFile></ImageFile>

            <ImageDir></ImageDir>

                        <Response>

<Name></Name>

<Value></Value>

</Response>

</Answer>

In the map, each Question is mapped to both the Name and Value nodes and to a looping functoid. For each link connecting to the Name field in the destination schema, the source-schema link properties must be set to copy the name.

For each link connecting to the Value field in the destination schema, set the source-schema link properties to copy the value (the default).

For the link connecting the Looping functoid to the record named Response in the destination schema, set the destination-schema link properties to match links top-down.

Jan 2005
19

I have been struggling with an updategram that will update 3 related SQL tables, and I finally found and adapted the solution at brainjar http://www.brainjar.co.za/blog.aspx.

The basic problem is to update three related tables - tblCustomers, tblProjects and tblTasks say, from within an orchestration using an updategram.Following the brainjar solution, I created a schema called updategram.xsd with a SQLXML recognisable namespace of urn:schemas-microsoft-com:xml-updategram. Then add 2 attributes of type xs:string - at-identity and returnid.I used the SQL adapter wizard to generate an updategram schema for an insert to the first table in my hierarchy - tblCustomers.

I then imported the updategram.xsd schema to the generated schema using Imports from the Schema node. I set the schema prefix to updg in the Imports Collection dialog box.Following the brainjar example, I added a record for tblProjects at the same level as the tblCustomers record and added the relevant fields for tblProjects together with CustomerID.

I also added an attribute of type updg:at-identity (Reference) to the the tblCustomers record.I then set the value of the at-identity attribute of the tblCustomers node to 100 and the the CustomerID value to 100. When the updategram executes these values are replaced by the value of the CustomerID field. How did anyone figure that out?

I then repeated this process in the updategram for the update to tblTasks adding the tblTasks node at the same level as tblCustomers and tblProjects, and included the ProjectID and another updg:at-identity attribute in the tblProjects node.When you pass a suitable doc into the orchestration it updates the three tables. Nice.

When adding a SQL Adapter watch where the SQLServiceType Port is added - this will be attached to the empty orchestration that the SQL Adapter Wizards. To merge the orchestrations - copy the Port Type and the associated message types into your main orchestration.

When adding an Updategram make sure that the response is processed i.e. that it ends up attached to a Send port of SQL transport type, otherwise the entire message processing fails to work correctly.

We downloaded and installed the IBM Informix OLE DB Connect drivers v2.81 from IBM. Points to watch during installaton:

Check that the path file points to a valid Informix directory - my path pointed to a previous Informix installation that had not been removed properly.

Also check that the services file in WINNT/System32 has an entry for the Informix service - the installation does not appear to write this to the services file. Make sure that you include a carriage return if you add the reference to the services file at the end of the file!

The HelloWorld.sln project contains the following items:

NastyFileHeader.xsd

This is the schema file for the input text file header. BatchNo/Value, Date/Value and Operator/Value are property fields. These are promoted to BatchNo, Operator and BatchDate in the PropertySchema.xsd. Schema Editor Extensions is set to flat file extensions, and Standard is set to flat file.

NastyFile.xsd

This is the body schema for the records in the nasty text file. Customers is the root node, followed by Customer record. CompanyName and ContactName are the element fields.

PropertySchema.xsd

This contains element fields BatchNo, Operator, Batchdate. Property Schema Base for all is set to MessageContextPropertyBase.

Target.xsd

This has Client as root, ClientName and ContactName as element fields. BatchNo, BatchDate and Operator are promoted as distinguished fields.

Default.btm

The default map file that maps from NastyFile.xsd to Target.xsd. The mappings are from CompanyName to ClientName and ContactName to ContactName.

Default.odx

The default orchestration file. ConstructMessage shape has a transform that uses default map to map the NastyFile schema to the Target schema. Message_target is based on the target.xsd schema and Message_source is assigned to the NastyFile.xsd schema. A MessageAssign shape makes the following assignments:

Message_target.BatchNo = Message_source(Customer.BatchNo);

Message_target.Operator = Message_source(Customer.Operator);

Message_target.BatchDate = Message_source(Customer.BatchDate);

ReceivePipeline1.btp

Simple flat file disassembler with document schema set to NastyFile.xsd and header set to NastyHeader.xsd. Preserve header set to True.

Send Port

Set to a send directory, XMLTransmit.

Receive Port

Set to a receive directory and ReceivePipeline1 pipe.

zzz Port

This port has a filter set to output what goes into the Receive port.

It appears that BizTalk can only use strongly named assemblies - see this discussion.

"http://www.adminlife.com/247reference/msgs/2/10281.aspx"

I was playing around with trying to deploy an assembly that did not have a strong name to the BizTalk project. I rebuilt the VS project and redeployed without stong name file. I unenlisted the orchestration and then re-enlisted.

When I tried to restart the orchestration I got an error message "Provided load failure". I tried to start the BizTalk Admin console and it attempted to load with the error "Unable to update BizTalk host". Problem was resolved by a server reboot.

Problem when adding promoted properties to a schema - sometimes results in error reported in HAT - unable to find XPath to node

Microsoft.XLANGs.RuntimeTypes.XPathUpdateException: A failure occurred while evaluating the distinguished field Email against the message part data. The message part data does not contain at least one of the nodes specified by the XPath expression (listed below) that corresponds to the distinguished field. The cause for this error may be that the message part data has not been initialized or that the message part data does not conform to the message part schema. Ensure that the message part data is initialized correctly.

XPath expression: /*[local-name()='Client' and namespace-uri()='http://Customer.Target']/*[local-name()='Email' and namespace-uri()=']

   at Microsoft.XLANGs.Core.XSDPart.SetDistinguishedField(String dottedPath, Object val)

   at Customer.Orchestration_1.segment1(StopConditions stopOn)

   at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)
Microsoft.XLANGs.RuntimeTypes.XPathUpdateException

Reloading and saving the map file seems to solve this problem?

One of the things that I would like to understand concerns promoted properties and distinguished fields. If a property is promoted on the way in - in the FileHeader schema for example, then can that property simply be referenced in a message assignment in an orchestration, through a distinguished field?

Or does the target schema also need to reference these promoted propoerties - i.e. are promoted properties needed in the target schema as well.

When something is promoted - what exactly is being promoted? Is it the field element or the attribute? BatchNo or Value in our example?

Nov 2004
10

I think we need to understand in more detail how promoted properties and distinguished fields work.

Next steps include:

SQL Adapter working example.

FTP Adapter working.

Email alerts when a process fails.

BizTalk Server admin tasks.

External app integration.

We also need to get Informix up and running and the dummy data loaded.

Not a lot of time.

Archive

Authors

Tags