Jul 27, 2015

Linx 4.0.905.4143 released


  • Fix bug: Similar process names caused component context to clear unexpectedly
  • Fix bug: Recursive RunProcess call does not map DataIn values correctly
As you may have noticed, this is the second release in a week.  One of the fixes that we've made in the previous release ("DbRead keeps datareader open when code crashes in execution path") highlighted a caching problem that has been around for more than 2 years.

Linx uses an internal cache on some components to speed up execution, e.g. keep Excel open while writing in a loop.  When calling another process using the RunProcess component, the cache got cleared unexpectedly if the name of the process that you are calling is a substring of the name of the process that contains the RunProcess component.  E.g. process "ClearFiles_Outer" calls process "ClearFiles" using the RunProcess component.  Thanks goes to Luka Milutinovic for finding this very obscure error.

The second bug fix relates to the DataIn mappings of a recursive RunProcess.  If a process calls itself (using the RunProcess component), the DataIn values were not assigned while calling the process recursively.  Thanks goes to Carmen Lawrence for discovering this.

If you have already installed the previous release (4.0.902.4134), it is advised that you upgrade to this version.  If you have any additional questions, please do not hesitate to contact us.

Linx 4 vs Linx 5: Part 4 - Types


A Type is a classification identifying one of various types of data such as String, Integer or Boolean. In Linx 4 we have a Variable component that can create one or more variables of a specific type. In Linx 5 we drop a Type on a Process to create a variable of that type.

Custom Type

Users can define their own Custom Type with the properties of their choice. Custom Types appear in the Solution Explorer.

To create a variable of a Custom Type drop it on a Process. The value of a Custom Type variable is defined in Json. There is an editor to make this easy.

List Type

A variable of type List has both a name and a content type. The content type can be any valid Type including Custom Types.

Values of List variables are defined using Json. There is an editor to make this easy.

Other Types

The other types are self explanatory - Boolean, Byte, DateTime, Decimal, Double, Integer (64bit) and String.

Jul 22, 2015

Linx 4 vs Linx 5: Part 3 - Expressions

An Expression is a combination of values, operators and functions that are evaluated to produce a single value. Expressions in Linx use C# syntax. Here are some examples

  • 5 evaluates to 5
  • 5 + 2 evaluates to 7
  • "abc" evaluates to "abc"
  • "abc" + "def" evaluates to "abcdef"
  • 5 == 5 evaluates to true
  • 5 != 5 evaluates to false

Any Property in Linx that does not need its value resolved at design-time can have an Expression as its value. Expressions are resolved at run-time. Expressions are denoted by "=" before the Expression.

Expression Editor

The Expression Editor makes it easier to create and edit complex expressions. It includes syntax highlighting, intellisense, code completion and built-in help.

This is what it looks like


a Variable is a value that is available at run-time. Variables are produced by

  • Functions e.g. TextFileRead.
  • Types e.g. String.
  • CustomType e.g. Person with properties Name, Surname, Age.
  • System e.g. CurrentDateTime, NewLine (CrLf) and Null.

Expression Editor System Functions

System Functions can be performed on specific types of data. They are typically used to do formatting, conversion or extraction. Examples are

  • String - Contains, ExtractString, FormatWith, Trim.
  • DateTime - AddDays, ExtractDay, ToString.

String Functions

DateTime Functions


The next post will discuss Types, also brand new to Linx 5.

Linx 4.0.902.4134 released


  • Add compression to PDFExtractImages
  • Add range and cell validation on ExcelRead
  • Update validation dll
  • Display invalid user error when calling Linx service with invalid credentials
  • Installer now does not change Service Account in upgrade mode
  • Improve the validation experience for massive solutions
  • Change ExceptionHandler validation warning to error
  • Allow case-insensitive upload of solution files
  • Add SFTPList component
  • Add SFTPUpload component
  • Add SFTPDownload component
  • Db components now supports stored procedures from Oracle
  • DatabaseRead now does not clear output when SqlEditor fails to run query
  • Fix bug: FileWrite with append and CloseAfterEveryWrite set to false gives closed error when writing to multiple files
  • Fix bug: DbRead keeps datareader open when code crashes in execution path

Jul 8, 2015

Linx 4 vs Linx 5: Part 2 - Linx Designer

Here are some of the UI changes we've made.

New look, new features, some changes

Solution Explorer

Processes, Services, CustomTypes and Folders can all live under a Project or Folder.

Process Input and Output

Input and Output are now available from the Process Properties.

When a Process is dragged onto a calling Process

the Process Input fields are available as Properties.


Constants = Settings. Setting values can reference other settings.



So far everything should be fairly familiar to Linx 4 users. Although the UI looks different the principal elements remain the same. In the next post we'll discuss something brand new - Expressions.