News and blogs on our products, services, and events
Recently active
The previous article showed an overview of the Next Generation Thinkwise Platform. In this article, we’ll zoom in a bit more on the Indicium Application Tier and explain our vision for Indicium’s architecture and its key features and properties. ArchitectureTwo of the core concepts of Indicium’s architecture are extensibility and modularity. It is our goal to make it easy to extend Indicium by plugging in custom components that adhere to predefined interfaces. At the same time, we also want to make many of Indicium’s standard components modular. This makes both adding custom components and omitting standard components easy, allowing you to create a tailored version of Indicium that meets all your requirements without having any unnecessary features. Another goal of Indicium’s architecture is maintaining cross-platform support for Indicium’s core services. The modularity of Indicium’s architecture makes this possible by allowing the inevitable platform-specific components to be ad
Technological innovations follow each other at an ever-faster pace, and the challenge to keep up with this digital transformation is increasing. It is set in motion by the rise of the 3rd Platform; the inter-dependency between social, mobile, cloud and analytics. The 3rd Platform architecture is transforming IT much faster than the first (mainframe) and second (client/server) platforms ever did, changing the way people interact with technology and disrupting existing business models across industries. Digital Transformation and the 3rd platform To help our customers keep up with this digital transformation and maintain their competitive advantages, we are investing heavily in improving the Thinkwise platform as a 3rd Platform development tool, in which the new Thinkwise application tier (“Indicium”) plays a crucial role. The Indicium application tier is a generic service tier application, which uses model interpretation to provide the required logic and functionality. It replaces an
During development of a project, often many project versions are created to facilitate for data-model changes. After development is complete and the production database needs to be upgraded, it is desirable to create a single script to upgrade the current production version to the final project version. This requires that the data conversion definition for all intermediate project versions is merged, or squashed, into a single data conversion from the first to the final version. How does it workLet’s see how it works with an example. We start out with the table customer in version 3.80. This table is renamed to clients in version 3.90, for which we create a data conversion record. In version 4.00 we rename the table clients to client (because we always use singular nouns for entity names), so another data conversion record is created. If you want to upgrade from version 3.80 to version 4.00 without doing an intermediate upgrade to version 3.90, you need to squash the
In the 2018.1 release of the Thinkwise Suite we have followed up on 2017.1’s major modernization of process flows, and have introduced some more cool features. Deep linkingAs of version 2018.1, our Web GUI supports deep links. A deep link is a link which doesn’t just point to the location of an application, but also a location within that application. For instance, a deep link could direct a user to a certain subject, a certain record within that subject, and perhaps start a task or report for that record. At this point you might be wondering what deep linking and process flows have in common. Well, we wanted our capabilities for deep linking to be rich, without making the links themselves long and complicated. We concluded that the features we wanted to be ‘deep linkable’ were exactly the same features as those offered by process flows. Because of this, our implementation of deep linking is simply being able to trigger a process flow through a link. This gives developers full co
Review required In the Software Factory 2018.1 release, a new ‘Review required’ setting has been added to the SF configuration. This setting is turned on as default in the installation or upgrade of the Software Factory. Review required setting Ready for review With review required turned on, the task to complete a control procedure will be replaced by a task to set a control procedure ready for review. Task to set a control procedure ready for review This task will set the status of a control procedure to a new status ‘Review’ and create a changelog entry. Like in the previous version, the changelogs, including the code changes, can be found in the ‘Code changelog’ tab page. Two new tasks have been added to code changelog. Tasks to approve or disapprove changes These tasks can be used by a reviewer to approve or disapprove the changes. When approved, the control procedure will be set to completed. When disapproved, a comment will be required as review feedback and the control p
A while ago, a blog was published about retrieving identity values in T-SQL using the Output-clause. This blog continues on this subject for a more advanced scenario. The caseThere are some situations where you don’t just want the identities as output, but you also want to match them to related records which were used in the insert statement. For instance, when copying multiple order records including the order_line records, you need to match the new order_id with the source order_id in order to copy the order_line records properly. Now don’t get me wrong, there are other ways to achieve our goal of mapping the inserted order_id identity with the source order_id: We could store a foreign key called source_order_id in the newly created order record. However, this would require a data model change and we do not need this column outside of this transaction. Alternatively, we could try to find the source order record using matching columns. At this point, we would treat these other c
Creating a tree view for subjects has always been a struggle, until now. All that is needed in release 2017.1 is setting up the tree model for your subject and assigning a screen type with a TreeView component. Tree propertiesJust like the grid and form the tree is now fully configurable through the Subject modeler. The tree display column is the text column shown in the tree. When leaving it blank the look-up display column will be used. The icon column presents the icon in front of the display column. There are two tree types to choose from: hierarchical and column grouping. These will be explained later on. A new feature is the default expanded property. When set, the tree will automatically expand to the provided level of nodes. Hierarchical groupingPreviously, a self-reference was needed to show an hierarchical tree. This self-reference had to contain all primary key columns. In 2017.1 this is no longer necessary; the only thing required is specifying the parent colum
In 2016 we’ve started to improve the layout of the Project Portal (which has since been dubbed ‘Thinkwise Insights’). Some of the changes were already possible with layouts in the G9.8 SF. We’ve made full use of those possibilities and we’ve added a lot more options to the SF. One of the most noticeable changes is that we’ve renamed layouts to themes, so from now on I’ll be talking about themes. If you’re still on a version of the SF that uses layouts, you can substitute layout. Our goal was to make it easier to create a modern, fresh and usable look and feel for your application. In this article I’ll tell you what options you have and how to best utilize them to create a usable, clean, modern and awesome-looking application. Grid Alternating rowsYou’ve never had the option to change the color of the alternating rows in the grid. The GUIs calculated a color for you, and that was it. You could remove the alternating background colors with a little trickery; but now there’s no
Every morning when you get up, you make your bed. When you grab your toothbrush, you put toothpaste on it. When you’ve washed your face, you wipe it dry. After you’ve had breakfast, you tidy up the table. Life would be so much easier if these morning rituals could be done automatically. Well, we can’t help you with that, but what we can do is make your job life easier with user preferences. In fact, we can make it very easy by setting these preferences automatically for you, when you generate and apply recommendations. User preferences allow actions to be done automatically, such as opening a screen when you start an application, filtering for specific data by creating prefilters, and more. For many of those preferences it is possible to generate recommendations in Intelligent Application Manager (IAM) based on your work behavior. RecommendationsRecommendations are simply user preference suggestions in IAM based on the user logs. Users can generate new recommendations and apply t
One of our most fervent bug-reporters mentioned that it’s truly annoying to get a pop-up in SQL Server Management Studio most of the times you open a new template. Developers see this pop-up because the file contents are updated. This happens when the file is no longer monitored by the Software Factory. A line is added to notify the developer that the file is disconnected. SQL Server Management Studio detects this change in the file and provides you with the pop-up as seen below. And it’s true, this disturbs the workflow. Some developers even gave up on opening templates directly from the Software Factory and instead resorted to copy-pasting templates. The good newsThe good news is that you can actually turn this pop-up off! Go to Tools – Options – Documents and check Auto-load changes, if saved. At SQL Server Management Studio 2016 and above, this checkbox has been renamed to Reload modified files unless there are unsaved changes. SQL Server Management Studio 2016 also allows for
Starting with version 3.00 of the Thinkwise Exchange Service it is possible to sync attachment files from exchange items such as emails, appointments, contacts and tasks. Currently attachments can only be synchronized from Exchange to the database, not from the database to Exchange. Syncing attachmentsThe binary data of an attachment isn’t retrieved automatically while syncing. Instead, when an item is synced from the exchange server to the database, any attachments the item might contain are converted into a formatted string containing the metadata needed to retrieve the actual attachment file from the server. The reason for this is that it makes synchronization lighter since the metadata of an attachment is almost always smaller than the file itself. This metadata is sent to the database through an exh_attachments parameter in the applicable exh_from_exh stored procedure (e.g. exh_from_exh_add_email) and is formatted in the following way: filename1.ext:attachmentid1;filena
Troubleshooting There is a small chance that you might run into some difficulty along the way. Since Mobile uses technologies that most developers at Thinkwise are not very familiair with, this troubleshooting chapter should help with the most common problems. Pinpointing the problem is the most important activity, since the vast majority of all problems have nothing to do with the mobile GUI but instead are caused by the proxy service tier, the model, the database or a setting in IAM. 'My service tier won’t run!' If instead of an authentication pop-up an error page shows up, something could be wrong. However, if you entered correct credentials, you might get a 404-not found, because there is no website at this location. Anything other but an authenticaton pop-up or a 404 should not happen. If the authentication pop-up keeps showing up even though you entered valid credentials, the database configuration might be wrong. Re-check the web.config and make sure the webserver can actual
Version 9.8.15 of the Windows GUI introduces a new feature – Excel-style filtering. The feature is named Excel-style filtering because it aims to offer users a filtering experience which is similar to that of Excel and feels familiar and intuitive. Excel-style filtering provides a way to filter individual columns on multiple values, something which is frequently requested by our users. This feature is not available for the Web GUI at the moment, but it will be added in the future. Where to find itExcel-style filtering can be accessed through a new menu which is available on the column headers of the grid. This menu can be opened by right-clicking a column header or by clicking on the menu button on a column header, shown in the image below. The column header menu also provides a new entry point for existing features such as grouping, sorting, opening the filter dialog and clearing all filters. Column header menu button What it looks likeThe way in which the values are grouped as a t
We often insert data in a table and afterwards we need the identity values of the new records for certain tasks. At Thinkwise most developers use the function SCOPE_IDENTITY() to do this. Although this function works fine, it’s only useful when you insert a single record because SCOPE_IDENTITY() is a scalar function and returns only one value. Many times we create statements that insert more than one record at a time. In those cases we need another method to retrieve all new identity values. The solution for this situation is the Output-clause (available in SQL Server 2008 and higher). An Output-clause returns information from, or expressions based on, each row affected by an Insert, update, delete or merge statement. In other words, with the Output-clause you can retrieve all data that was in the inserted and deleted tables during the statement. So the Output-clause does not only retrieve identity values, but it returns all values. In this topic however, we are mainly interested in
About 800 years ago, a French theologian wrote the sentence “Mille viae ducunt homines per saecula Romam”, which was the origin of the saying “All Roads Lead To Rome”. When it comes to software development, this saying holds very true. There are literally endless ways to implement a software application. In a previous blog, process analysis was positioned as a way to determine the scope and functional goals for application development in the Software Factory. This provides the project with specific goals, modules and required functionality. A good base for an estimate. To keep the analogy going; We decided we will go to Rome by car, though Germany and Switzerland. The trip shouldn’t take more than 2 days. However, there is still a lot of leeway. Do we only take the highways or the scenic route? Take the ferry along the road or toll roads? The functional goals can still be realised in many ways. To provide guidelines for developers on which exact roads to take, we’ve added the option
A very important step in preparing for an upgrade is setting up version control for the data conversion. If version control is not used correctly, it can even mess up your database. Best case scenario, the upgrade-script will fail and a backup should be restored. But in the worst case scenario, the upgrade will run without errors and you’ll lose data. Because it is such an important feature, we wanted to emphasize it by adding version control to the menu and writing a blog post about it. But as the post progressed, we realized some improvements were needed. First and foremost, we changed the name to Data conversion. Data conversion can be used to transform existing data to the new structure, just as version control could, and this screen can be found in the Deployment menu. Screenshot of Data conversion Features of Data conversionWhen you prepare for an upgrade, the first step is to check the selected previous version. When you are working with branches and multiple versions, i
The Code changelog is a new feature that will be released with the G9.8. This feature will make it easier to manage revisions of control procedure and template code. To track changes in code, some developers choose to add a header in the template containing the date, author and a description of every modification. But when there are a lot of development cycles, this header can become rather big. Another disadvantage of this method is that the header is included in the generated code. This is why we created the Code changelog. Completing control proceduresEvery time a control procedure or template is created or it’s code is updated, a record is added to the Code history and the status of the control procedure is changed to Development. Code changelog with changes When you’re done making changes to a control procedure and its templates you can mark the control procedure as Completed by using the task Complete control procedure (Ctrl+Alt+S). If you have made any changes to the code, th
With the upcoming release of the Thinkwise Suite G9.8, some changes have been introduced in the Software Factory regarding ini parameters. Ini parameters are properties that each application uses to start the right application. Ini parameters can be either mandatory (e.g. meta connection info) or optional (e.g. setting the delay for the combined filter). All of these ini parameters are saved in an ini file on the drive. This ini file can be opened and modified with a text editor. The ini file is usually already set up correctly and referenced from the shortcut of the application. So it might appear that the application doesn’t use an ini file, but each application always has its own ini file. What has changed? SF: Runtime configurationsTo have more control over and insight in the parameters used, to be able to share different ini parameter configurations between developers or user groups, and to make it possible to provide the correct ini parameters to all the runtime components (l
Zoom into detailsTo create a good overview, it can be desirable to configure a screen which shows ample data with many underlying details. But these detail windows can become rather small. To make such a window larger, it is possible for users to zoom into a detail screen. The question is: “What will the screen type of this zoomed screen be?” Screen type inheritanceIn the Software Factory G8, the zoom screen type was inherited from the master screen type. This seemed like a good solution, but in fact it lead to unexpected results. For example, if a detail screen contained only a grid and the master screen type contained both a grid and a form, the user would get access to a form when zoomed in. This would provide the user with the option to add records, which the developer might not have intended. Since the developer had no control over this, the screen type for the zoomed screen was changed to the detail screen type with the introduction of the G9. Even though this solved the unint
With the advent of the Software Factory release G9.8 “Pyxis”, we would like to introduce a change in the Software Factory regarding requirements. Where previous releases of the Software Factory had limited support for the registration of requirements, the G9.8 release will have fully-fledged support for the process analysis. Process analysis is used in the Thinkwise Project Methodology as the way to elicitate the requirements. By capturing the primary process of a company, it is way easier to determine what the application has to do to support this primary process. The processes are specified using BPMN 2.0. ProcessesThe primary process can be specified in the Software Factory using activities called tasks. This primary process shows 3 partial processes. Each partial process could be the responsibility of one or more different actors. This is why the primary process does not have any lanes. When we zoom into the first partial process, we see that a lane is introduced: This
With the upcoming release of the Thinkwise Suite G9.8, we have introduced the ability to perform two-factor authentication on users. Two-factor authentication provides an extra layer of authentication, on top of the conventional username and password, which serves to establish the identity of a user with a higher degree of certainty. Typically, two-factor authentication requires the user to prove that they are also in possession of something that only the real user should be in possession of, for instance a mobile phone. Our implementation of two-factor authentication supports the validation of phone numbers (by means of SMS) and the validation of email addresses. Support Two-factor authentication can only be used in applications which are managed by IAM, as IAM is the place where a user’s settings with regard to two-factor authentication can be configured. In addition, support for two-factor authentication is provided by the Web GUI and the Mobile GUI, but not by the Windows GUI.
Virtually every table in an application has a primary key. The primary key is unique per record and can be used to refer to the record. For instance, the table Person can use a number as primary key. However, when a person is referenced in the application, we do not want to see this number. When we are referring to a person, we want to see the name of the person. The name of the person is said to be the display value of the person. The display value of a person could be variable, depending on the context of where this person is referenced. The display value might even be stored in another table, especially when dealing with link tables. Obtaining a set of keys and display values and translating a key into a display value is called a look-up. This blog is about look-up display values and how to use them effectively. TerminologyIn the example with persons, the Person table is used as a look-up table. The look-up table is the table you would see if you were to open the look-up po
Because the Thinkwise GUI’s and Service Tiers use a connection pool for database connections, they will automatically try to reconnect with every new statement. This can cause locking problems during maintenance or upgrades. In the upcoming GUI’s a new feature will be introduced which will automatically close any application that is no longer available in IAM. Every five minutes a check is performed which will compare the currently loaded applications with the available applications for the current user. If an application is made inactive or the access rights are revoked then the GUI will close all the corresponding documents and removes the application from the menu. This feature ensures that all users are disconnected from the application and no new database connections will be opened by the Thinkwise GUI’s. Example In this IAM we find a Software Factory and three versions of a customer end product. We only want the most recent application version to be active, so we d
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.