This post describes some of things you need to be aware of when building a Mashup using bookmarks that have dates as part of the primary key. The first part is a rather long discussion of why things are the way they are but if you’re just interested in how to get things working you can skip this and jump to the second part directly. Continue reading
Category Archives: Mashup
Using JScript and a Mashup to browse for values on M3 panels
The goal of this post is to show how JScript and Mashups can be used to extend the browse functionality in M3. The idea is simple, instead of using the M3 Browse dialog to find a field value on a panel a custom built Mashup is used instead. The Mashup can use M3 panels with Enterprise Search, data services and all the other Mashup controls to improve the browse experience for the user.
The solution consists of two parts, a generic JScript and one or more browse Mashups. The browse Mashup is started using a button or a keyboard shortcut, the user selects something in the Mashup and then one or more values from the Mashup are used to update fields on the panel. The rest of the post will cover a simple browse Mashup and the important parts of the JScript. Continue reading
Mashup for LPA – Pending Work Units
Last week all employees at Lawson Product Development had a new kind of event called 20four. Its goal is to inspire and drive innovation. What we did? We were allowed to spend 24 hours doing whatever we wanted to do. No limitations – at all.
After 24 hours had passed we had 4 minutes to present what we did and then we voted for the best project. In this blog I’ll present the winning project, a LPA Mashup that displays pending work, created by Conny E. Special thanks to Conny for sharing his Mashup.
It is perhaps not innovative but it solves a business scenario and apperently this information was not easily accessable in Landmark, and that is what Mashups are for, bringing data together from different screens, programs and data sources. Continue reading
Mashups – bindings, markup extension methods and {} – explained
You don’t have to be a developer to create Mashups. A business user can do great Mashups. With Mashups you have the full power of WPF and the simple use of our Mashup Controls. Events play an important role when it comes to passing data. Recently I have seem more than one example of incorrect use of curly braces. Today I’ll try and explain the difference between a binding, markup extension methods that we have created and our variable substitution using curly braces. This is advanced stuff so you need to be interested in the more advanced technical stuff. Continue reading
Adding a profile setting to your mashup
This blog describes how you can add your own profile setting, for example an URL to a SOAP web service, to your mashup so that your profile setting can be delivered and deployed as part of your mashup.
In Lawson Smart Office we have two main different types of settings. We have settings in settings files; these are the user settings and applications settings that can be administrated via group policies. Examples of user settings are my M3 default option or the theme color of my Canvas. Examples of applications settings are if private deploy of mashups is allowed or if the user is allowed to change the theme. Those are set by the administrator and cannot be changed by the user. Continue reading
Modal task URIs
In Lawson Smart Office (LSO) version 10.0.0 two generic URI parameters were added to support modal tasks. The requirement was to be able to launch any LSO URI in a modal window.
A modal window is a child window that requires users to interact with it before they can return to operating the parent application (http://en.wikipedia.org/wiki/Modal_window). There are many scenarios where this could be useful (if a modal behavior is desired) such as Mashups, personalized links, navigator links, canvas shortcuts etc. Continue reading
Using a M3 List Api for a single hit
For M3 we have different APIs, most used are probably the list and get APIs. But what if you have a mashup and what you need is in a list API? Well you could just as well use the list API and bind to the first returned item. Or in fact you configure the MIDataService to only return the first result in the list.
Assuming there is an exact match you will get the expected data back. Say that you want to list customers and you pass in Infor, if infor isn’t a valid customer the list API will return whatever customer that comes after alphabetically.
My example will have an entry field for the customer to search for and a button that will trigger the List Event. In a real scenario this would probably be replaced with an event from a standard M3 form, like a CurrentItemChanged on a list or a detail form. Continue reading
SOAP Mashup with Bing search
In this post I’ll create a Mashup with the DataListPanel. Data will be retreived from the Bing search web service. Then I’ll format the result in the list with a datatemplate, a clickable uri and use the the Open event to launch a web page and I show you how to show a clickable Uri. The Open Event is available in Lawson Smart Office 10.0.1.
Prereq: In order to use the Bing search API (for testing) you need to register and get your own application ID as identifier. In my Mashup this ID is replaced with “BingApplicationID”. Register to get your ApplicationID Continue reading
Calling Web Services using Process Server
Process Server has had a mashup control since version 9.1.3, called TriggerPanel. It could be used to trigger a process flow without returning data from the flow itself.
In Lawson Smart Office 10.0.0 the TiggerPanel supports a synchronous call which means that it is possible to run a flow and bring in data from the process back to the Mashup.
In order for the mashup to be able to automatically generate a UI and to be able to create an object model that can be used for easy binding the XML has to be according to a specific schema.
The XML schema describes a Header section and any number of Detail sections. The service has to at least return an xml document with only the root. The root element name is ProcessResponseHeaderDetails. Returning no Xml at all will result in an error dialog informing that no data was returned from the service. Continue reading
Calling a Web Service using WS and REST Data Services
In Lawson Smart Office 9.1.3 we introduced the REST data service for mashups. In version 10.0.0 we introduced support for SOAP based web services. In 10.0.1 we introduced some new configuration options that will help you to connect to the web services out there.
There are different options available when consuming SOAP web services in Mashups.
1. Data Service and WS
2. Data Service and REST
3. Process Server with TriggerPanel Continue reading
MIListPanel with Open Event
In this post I will use a MIListPanel in order to list customers and then add an open event that will open CRS610 for the selected customer.
I’ll start by getting the Bookmark for the program I want to open on the double click in the list.
1. Start the program and select to create a bookmark on the canvas.
2. Open the shortcut and make a copy of the URL. Continue reading
Triggering a Work Flow in Process Server from a Mashup
In Lawson Smart Office 9.1.3 we introduced the TriggerPanel control. It is a Process Server control that can be used to trigger a form in a asynchronpous way. There is no return value from the call except the workitem id generated from Process Server. But it is still an easy way to create a form and submit an action to trigger a flow.
You can think about the TriggerPanel in two different scenarios. One where you have a standrad form and a submit button to trigger the flow and another scenario when there is a trigger of the form in response to another Mashup event, for example the loading of an S3 form. Continue reading
Enable a button on a selected item
A few days ago I wrote a post about how to use the generic property setter in order to set IsEnabled on a button. I got the question how to do it in 9.1.2. Unfortunately the M3List does not expose the CurrentItem property in 9.1.2 so for M3Lists I have no solution. But for lists using the M3 APIS (MIListPanel) and the DataListPanel you have the option of checking the SelectedValue of the list and use a converter that will change a not null value to true.
My example has a list of Countries and a button that will be disabled unless a row in the list is selected. Continue reading
Enabling a button on CurrentItemChanged in a Mashup
One of the nice features in WordPress is that I can see what users search for on my blog. One of the searches last week was “xaml enable button after listpanel currentitemchanged”. In this case I think I know what the reader wanted to do so this post is about how to control IsEnabled on a button depending on the current item changed event. Continue reading
Calling a SOAP based Web Service in a Mashup
New in Lawson Smart Office is the support for calling a web service in a Mashup. Now we did have REST support in 9.1.3 and using the template XML functionality it was possible to make a SOAP request to get data. What is new in 10.0.0 is the ability to point to a WSDL, call it and get the TYPED objects back. So you don’t work with XML, but the actual types that are described in the WSDL. How can you try this new feature?
You use one of the Data Service controls in your mashup. For example select Insert Control -> DataService -> DataListPanel. As a service type you can choose between REST, MI (M3 API) and WS. Now if you want to use M3 APS I would recommend the MIPanels but the access to M3 API is available as a Data Service as well. Continue reading
Localization in Mashups
There are different options that are available for you as a Mashup developer. You can create resource files relative to the mashup project, or you can use M3 constants or you can reuse constants available in Lawson Smart Office. Continue reading
Using Bookmarks in M3
Bookmarks in M3 is a way to navigate into a specific form without having to go though the list. As it turns out Bookmarks is a key component to M3 Mashups. You configure a M3List or a M3DetailPanel with a bookmark. Not all programs support Bookmarks and even if the bookmark does work there might be issues when you try and open a detail form. In this post I will cover a way to test the bookmark and to analyze issue you might encounter when you build your M3 Mashups. Continue reading
Lawson Design System
When we started the Lawson Smart Client project we worked together with Frog Design. Frog did the design and delivered the Lawson Design System a set of guidelines for Lawson applications in general and for the Lawson Smart Client. Frog called it Smarter Software.
For the different XAML controls we have a global style implementation. In this post I’ll show an overview of controls that you can use in your Mashups and applications. If you have the SDK pack there is a DesignSystem example project. I you haven’t checked it out yet it is a must. Continue reading
Formatting dates and numbers in a Mashup
Lawson Smart Office comes with a set of converters developed for making formatting issues easier in Mashups. Much formatting can be done using StringFormat and this is standrad WPF. But if you want to use the M3 user’s format or if you want to surpress Zero there are converters that we have developed for you. Continue reading
Selecting the first row in a M3 list to trigger CurrentItemChanged
When you have a M3 list in a Mashup a common scenario is that you would like to have the first row selected so that any dependant mashup control can react to CurrentItemChanged.
This is for example a scenario when you open the Mashup from a panel with JScript so that you pass in a Customer id, CUNO. You want to load related information right away. This requirement is something that we will consider for future versions to have an option to say, ‘select first line on startup’.
But until then there is a workaround that involves using a JScript to set the selected item in the list. I’ll do an example with a mashup that loads CRS610 and reacts to CurrentItemChanged to load related data in a MIPanel. Continue reading
You must be logged in to post a comment.