Innovation Suite offers a different approach to application development, but as it’s grounded in the same principles as Remedy a lot of the traditional Remedy components and naming conventions translate quite well. Rules are similar to Filters, Escalations are now called Timed Rules, which makes a lot more sense anyway. Processes are a different beast altogether, but once you get your head around it, you’ll get it. Records, absolutely. Views, Named Lists, totally get it. But wait, where are my Active Links? What happened to them?
I’m sure you’ve written your fair share of Active Links. They make your application interactive: they handle events, respond to button clicks, execute when forms open, run when you perform a search. That’s how you get applications to interact with the end users. Dynamic behaviour is an integral part of application design. Your business processes form the engine of the application, but end-users care about the UI – this needs to be intuitive and easy to interact with. As developers we need to consider how data is presented and how users can interact with the application.
Good application design involves caring how you interact with the end user, this goes further than just buttons and tables, just think about the apps available on your phone; consider how you manage your photos, your bank account or even how you train for the marathon. A lot of user interfaces are very intuitive and with the right design make it lot easier for end users to use the applications.
With classic Remedy almost all of interactivity is done using Active Links, which is a proprietary scripting-like technique. It does two things: sometimes it is used for business logic (validation, calculating something, integrating data, etc), but mostly it is used for screen interactivity. Active Links are easy to write with Developer Studio, but the technique has its limitations: there’s a specific set of functions and you can’t go beyond that. This limits your options to control the dynamic elements of your application. You can display a table field, control what happens when you click on the entries, but if there’s anything specific you want, that’s simply not possible. It can’t be extended.
With Innovation Suite there is a different approach, you don’t design Active Links anymore. So how do you design dynamic behaviour? There’s no easy answer to this, there’s no one-to-one translation for this one. The UI in Developer Studio is made out of views which are made up of view components. These should have the most important interaction patterns baked into them – they are part of the components. These contain all the necessary code that make the interactivity possible and you don’t have to worry about this. Interaction can be done via the component’s available configuration. For example, you can configure the navigation between top-level views via the shell or filter the data in a grid based on the input of data fields. By configuring the view component you determine the dynamic behaviour. For example, this Record Grid uses an expression which is based on the values of Text Fields. I link them together via the Expression field and the records in the Record Grid change as I type. I don't have to write any code for this, all that behaviour is baked into the component and I simply take advantage of the available configuration.
That should take care of the majority of the behaviour you need to build applications, as new components are made available you can extend the application by simply adding them to the view and configuring them.
If you require more advanced behaviour you can use different Actions (out-of-the-box and custom ones) and string these together to create various effects (similar to the way you'd use Active Links). That’s all very well, but what can you do if the behaviour you want is not available? Innovation Suite allows you to extend the application by introducing custom actions and custom view components.
Custom actions are used when you need to execute custom code on an event. For example if you have rows in a record grid you can add buttons that do something with the selected rows: open the record, delete them, etc. But you can add your own actions here as well. So if you need to change the value of a few fields with a specific patters, you can write your own custom action.
If you want to take it a step further can you can write your own custom view components and bake in the behaviour you need. Like the out-of-the-box components you can use configuration parameters to interact with the system and link them to existing out-of-the-box components. You’ve got a lot of flexibility here and as you’re writing the components yourself you’re only limited by your imagination (and of course coding skills). A good example of this is the way you can present data. Consider this record grid which lists customers who escalated their support cases. Click on it and you see the escalation details.
This is all put together with out-of-the-box components. You recognise the record grid, the views, the buttons. It works well, but I want a different way fur users to interact with the data. That wasn’t available out-of-the-box so I wrote it myself. This is what I came up with:
Same data, different way of displaying this. How I wrote this is too long to explain, but it’s mainly AngularJS code. I made sure I made configuration items available which allowed me to link it to existing out-of-the-box components, in this case the selection fields:
So all my interactivity here comes in the form of the AngularJS code I wrote as part of that view component, it’s baked in, when I use it in Innovation Studio I don’t have to worry about it.
Going back to the original question, what happens to my Active Links, the answer I heard a few times is that Active Links are now replaced by AngularJS. But I don’t think that’s the right answer, it assumes that you have to code all your dynamic behaviour in Angular, and that’s not true. Yes, you can extend and if you build your own View Components you need be pretty familiar with coding. But that’s the not the place to start, dynamic behaviour is part of the components and by configuring them, by linking them together you create an interactive UI. But if you want to write your own fancy components, build on the principles of Innovation Suite, you are of course more than welcome.