Category: Work > K2 API

K2′s 4.5 Release – Inline Functions

Last October I had the privilege to visit the K2 Insiders conference. We all got to see a preview of K2′s new 4.5 release. Now (finally!) a targeted beta is available for selected partners, customers and insiders. This blog post will focus on Inline functions, a new feature of the 4.5 release which will be available for K2 blackpoint 4.5 and K2 blackpearl 4.5. The new release also features improvements to the designers, as you can read in Jey’s blogpost.

Why are inline functions so important?

To explain why inline functions are so important for K2, it is needed to provide some background. Way back before the South African development team started working on K2 blackpearl, a vision was created on how to design processes from a business perspective. The current K2 architecture has a lot of features that can be mapped to that vision. An example of this is SmartObjects. The vision shows that (enterprise) data should not be included/part of the process and should be referred from within the process. SmartObjects do just that, making live a lot easier when working with the K2 platform.

Another big part of the vision is to allow you to design processes without the need to write code. A lot of processes can be implemented without code, but I’ve had lots of occasions where I still needed to write small pieces of code. Within the new K2 designer for SharePoint and K2 studio, you’re unable to write code and you’re stuck going back to Visual Studio. This isn’t how K2′s vision was created and so a solution was needed to reduce the use of code and allow you to call (simple) functions.

What are inline functions?

Every wizard within K2 uses input fields where you can drag and drop items from the Object Browser to the input fields. Inline functions allow you to call simple functions inside those input fields. The functions are categorized in groups, so all the Date and Time functions are together and all the Text manipulation functions are together. A complete list of inline functions will be listed in the product documentation which will also be up on the knowledge base site. For now, you can check this blog post.

So, why is this so good?  Well, as stated in the previous paragraph, this will allow you to do more with the designers that do not support the use of code.

How do they work?

This youtube video will hopefully explain how you use inline functions while designing a process.

From a technical perspective, inline functions are executed within the workflow server.

[UPDATE] I forgot to share the video for the public, it should be better now :-)

But, the function I need isn’t there!

Ok, K2 can’t provide you with every function thinkable on the planet, but they always provide you with ways to extend the K2 platform. This is also the case with inline function! In the end, it all comes down to a simple .NET assembly with some class and method attributes. The developer reference will have an article/how-to on this.

Conclusion

I hope this blog post makes you understand how valuable inline functions can be when designing a process. For myself, it’s another way of doing things and allows me to create processes more easy and (in a lot of occasions) without code!

All Inline Functions in SourceCode.Workflow.Functions

New in K2 4.5 are Inline Functions!  In this post, you’ll find a list of all the inline functions and description from the SourceCode.Workflow.Functions assembly. Which is the assembly that we get with our K2 installation.

This blogpost is part of a post on inline functions and only for reference!

Text
Find Returns the index if the specified string is found within another string. Returns 0 if no match can be found.
Contains Returns a true value if a substring is found within another string.
Left Returns a subset of characters from the left side of a string.
Right Returns characters from the right side of a string.
Mid Returns a subset of characters from a string, starting at a specified index and continuing to the end of the string.
Mid Returns a subset of characters from a string, starting at a specified index and continuing a specified length.
To Lower Converts a string to lower case.
Length Returns the length of a string.
To Upper Converts a string to upper case.
Proper Converts a string to proper case.
Replace Replaces a substring within a string with a new substring.
Trim Removes leading and trailing spaces and line breaks from a string.
Split Splits text into substrings delimited by a specified separator value.
Join Concatenates a list of text values or fields, delimiting each with a separator.
Pad Left Pads a string with a padding character on the left side up to a specified length.
Pad Right Pads a string with a padding character on the right side up to a specified length.
Insert Inserts a substring into a string at a specified position.
URL Encode Encodes a URL string.
URL Decode Decodes a URL string.
Mathematical
Power Gets one value raised to the power of another.
Power Gets one value raised to the power of another.
Square Gets the square of a number.
Square Gets the square of a number.
Square Root Gets the square root of a positive number.
Square Root Gets the square root of a positive number.
Root Gets the positive nth root of a positive number.
Root Gets the positive nth root of a positive number.
Absolute The real number for which to get the absolute value.
Absolute The real number for which to get the absolute value.
Maximum Gets the maximum value of a list of values.
Maximum Gets the maximum value of a list of values.
Minimum Gets the minimum value of a set of values.
Minimum Gets the minimum value of a set of values.
Random Gets a random number less than or equal to a specified maximum value.
Random Gets a random number less than or equal to a specified maximum value.
Random Between Gets a random number between or equal to two specified values.
Random Between Gets a random number between or equal to two specified values.
Round Rounds a number up or down to a value with a specified precision.
Round Up Rounds a value up.
Round Down Rounds a value down.
Average Calculates the average of a collection of values.
Average Calculates the average of a collection of values.
Sum Gets the sum of a set of values.
Sum Gets the sum of a set of values.
Format Number Formats a number to a text representation using a specified numeric format specifier.
InfoPath
Get Attachment Content Gets an attachment’s file content from an array of bytes.
Get Attachment Name Gets an InfoPath attachment’s filename from an array of bytes.
Set Attachment Creates an InfoPath attachment and returns it as a base-64 string.
Lists
First Item Gets the first value in a list.
Last Item Gets the last value in a list.
Count Counts the number of items in a list of values.
Text
Hyperlink Creates a hyperlink with a display name and URL.
Date and Time
Today Gets the current day.
Yesterday Returns yesterday’s date.
Tomorrow Return tomorrow’s date.
Maximum Gets the maximum date and time from a list of values.
Minimum Gets the minimum date and time from a list of values.
Add Days Adds a specified number of days to a date.
Add Hours Adds a specified number of hours to a date and time.
Add Minutes Adds a specified number of minutes to a date and time.
Add Seconds Adds a specified number of seconds to a date and time.
Day Difference Determines the number of days between two dates, and hours are decimal fractions.
Day Gets the day of a given date.
Month Gets the month of a given date as a number.
Now Gets the current date and time.
Subtract Days Subtracts a specified amount of days from a date.
Subtract Hours Subtracts a specified amount of hours from a date and time.
Subtract Minutes Subtracts a specified amount of minutes from a date and time.
Subtract Seconds Subtracts a specified number of seconds from a date and time.
Weekday Gets the name of the day of the week from a specified date.
Week Number Gets the week number of the year of a specified date.
Year Gets the year of a date.
Format Date and Time Formats a date and time to a text representation using a specified date and time format.
Start of Year Gets the first day of a year.
End of Year Gets the last day of a year.
Start of Month Gets the first day of a month.
End of Month Gets the last day of a month.
Start of Week Gets the first day of a week.
End of Week Gets the last day of a week.
Start of Quarter Gets the first day of a quarter.
End of Quarter Gets the last day of a quarter.
Start of Year Gets the first day of a year.
End of Year Gets the last day of a year.
Start of Month Gets the first day of a month.
End of Month Gets the last day of a month.
Start of Week Gets the first day of a week.
End of Week Gets the last day of a week.
Start of Quarter Gets the first day of a quarter.
End of Quarter Gets the last day of a quarter.
Quarter Gets the quarter number a specified date is in.
Logical
If Returns one of two values based on a Boolean condition. Nested expressions are allowed.
True Gets the Boolean value of true.
False Gets the Boolean value of false.
Yes Gets the Boolean value of true.
No Gets the Boolean value of false.
And Performs an And operation on two Boolean values, returning true if both values are true, false if any value is false.
Or Performs an Or operation on two Boolean values, returning true if one of the values is true, false if both values are false.
Xor Performs an Exclusive Or operation on two Boolean values, returning true if one and only one of the values is true.
Not Returns a true value if the condition evaluates to false and a false value if the condition evaluates to true.
Conversion
To Decimal Converts a value to a Decimal data type.
To Boolean Converts a value to a Boolean data type.
To Long Converts a value to a Long data type.
To Integer Converts a value to an Integer data type.
To Short Converts a value to a Short data type.
To Double Converts a value to a Double data type.
To DateTime Converts a value to a DateTime data type.
To String Converts a value to a String data type.
To Base-64 String Converts an array of bytes to a base-64 encoded string.
To Binary Converts a base-64 encoded string to an array of bytes.
To Bytes Converts a string to an array of bytes using the default character encoding.

Other info from K2 Conference

At the K2 conference, we also got information on what K2 will do with SharePoint 2010. As you can see in this post, K2 is working hard to enhance the new functionality of the Office 2010 platform. Personally, i really like the integration with the office applications itself as lots of clients actually don’t want to leave outlook.

Apart from this new functionality, K2 will also support the current functionality in SP2010, which we saw a demo of at the conference. This makes K2 the only workflow engine i know that is able to work with SP2003, SP2007 and SP2010. To make it even more cool, you can combine those in one single workflow!

WordPress Themes