News and blogs on our products, services, and events
Recently active
Thinkwise Platform version 2019.1 migrated the maintenance of roles from the Intelligent Application Manager to the Software Factory. This migration is in a way symbolic – The developers are fully responsible for creating and maintaining the roles within the application. Before role-based access control was introduced, rights would be granted directly to user groups. When upgrading an older version of the Thinkwise Platform (G9 or earlier), temporary roles would be automatically created based on the user groups to ensure nothing changed for end users. Not everyone replaced these temporary roles with proper roles. An earlier blog was written around the time of the 2017.1 release, which introduced roles and presented global guidelines. Today, I’ll be providing more detailed guidelines for role administration within your application, even if it was built before roles were introduced. What is a role?A role is a collection of rights that allows a user to carry out a single resp
Mark your calendar for October 4, 2023, as Thinkwise proudly presents its third annual Summit, "It Takes More Than Tech to Transform." We are excited to introduce the Thinkwise Platform in a Roadmap session, featuring our esteemed CTO, Jasper Kloost. During this exclusive session, Jasper will provide a sneak peek into the future developments of the Thinkwise platform and will speak about artificial intelligence, developer and user experience, and digital process automation. Come see how Thinkwise is leveraging the potential of artificial intelligence to boost productivity, streamline processes and open new doors of opportunity for businesses. For event details, registration information, and the latest updates on our lineup of speakers and workshops, please visit our event website. 📅🔗Join us at #ThinkwiseSummit2023! Thinkwise Summit 2023 (thinkwisesoftware.com
All the standard indicium API's are expecting JSON and have JSON as output, also most of the 3rd party API's use JSON, therefore I think it would be useful to have some different JSON approaches and examples at one place, please feel free to add your own in the comments.Creating JSONWhen creating a simple JSON statement it would look something like this, this is without data from a table, but for example data you get in a process flow for 1 record and need to pass it to a JSON API.--Having an example variabledeclare @json nvarchar(max)set @json = ( select 0 as Value_1 ,1 as Value_2 ,1 as Value_3 ,1 as Value_4 ,0 as Value_5 ,0 as Value_6 ,0 as Value_7 for json path, without_array_wrapper)The output would look like this:{ "Value_1": 0, "Value_2": 1, "Value_3": 1, "Value_4": 1, "Value_5": 0, "Value_6": 0, "Value_7": 0}When you leave out the "without_array_wrapper” you will treat the set as an array and the result would look like this,
Hello everyone, In today's fast-paced world, effective time management is crucial for staying organized and maximizing productivity. One of the key tools we rely on for managing our schedules is the calendar. With the advent of cloud-based services like Microsoft Graph, synchronizing calendar events across different platforms has become more accessible than ever. In this blog post we introduce new Thinkstore solutions that enables seamless synchronization between your Thinkwise application and Microsoft Graph, allowing you to add, update, delete, and receive resources effortlessly. Microsoft Graph is a powerful API that provides access to a wide range of Microsoft 365 services and data. It allows developers to integrate their applications with Microsoft's suite of products, including Outlook, OneDrive, SharePoint, etc. Old situationOf course we already have the Thinkwise Exchange Connector which can synchronize the four resources maintained by Microsoft Outlook: emails, events, contact
Hi all,Recently, we’ve released Thinkwise Platform version 2023.2. This release includes the ability to apply timeseries forecasting to your data.In our recent release session, we showed a demo application that uses forecasting. This application is now available in the Thinkstore.Simply download the solution, generate, execute and start the application via the Universal GUI.The solution is available under the name ‘Forecasting’The example applicationSince the model in the Thinkstore is shipped with some example data, so you can try it out right away.You will be prompted with a single menu item that shows a small list of articles with article sales for the last year.The application is shipped with some example dataClicking Predict sales for the next 30 days will generate a prediction of upcoming sales, as well as set the date on which stock may become critical.Sales prediction for this articleImpact of the sales on the current stock. We run out within 27 days!Information about the confi
We recently released Validations on the Thinkwise guidelines. You can find more about this here:https://community.thinkwisesoftware.com/news-blogs-21/validations-for-thinkwise-guidelines-now-available-in-the-thinkstore-4208Although data modeling seems quite simple at first glance, it is quite a challenge to create a good structure. Without a good structure, a data model is more difficult to understand, more programming is required and errors are more likely to occur.To help you set up a good data model, we have drawn up guidelines, which you can find here:https://docs.thinkwisesoftware.com/docs/sf/guidelines_data_modelingIn the guidelines we distinguish between the following categories of entities:Strong entities Weak entities Link tables Inheritance tablesDepending on how the primary and foreign keys are structured, each table and view must be classified in one of these four categories. If that doesn't work, then something is almost certainly not modeled correctly. The result of this
The Thinkwise Summit is only three months away, and we're busy putting together an exciting program for you. This year's event will feature engaging keynote speakers, interactive workshops focusing on technology, business transformation, talent, and culture, as well as insights on building a collaborative ecosystem with both partners and clients.One of the (most 😎) exciting tracks at the Thinkwise Summit is the Tech Track, which delves deep into the realms of the Thinkwise Platform and its countless possibilities. This track focuses on technical subjects and cutting-edge advancements.Let us know what you would like to see!We want to ensure that the Tech Track delivers exactly what you are seeking. Therefore we invite you to share your thoughts, interests, and the subjects you would like to see covered during the Tech Track sessions. Your input will help shape the content of the sessions, making them even more relevant and impactful.For example, are you keen to explore the potential of
To make the quality of models in the software factory as high as possible, we use guidelines within Thinkwise for the data model, the user interface and functionality. You can find these guidelines here:https://docs.thinkwisesoftware.com/docs/sf/guidelines_data_modeling https://docs.thinkwisesoftware.com/docs/sf/guidelines_ui_design https://docs.thinkwisesoftware.com/docs/sf/guidelines_control_procs https://docs.thinkwisesoftware.com/docs/sf/guidelines_sql_coding https://docs.thinkwisesoftware.com/docs/sf/guidelines_sql_formattingHowever, not everyone knows how to find these guidelines during their development work. In addition, it requires a lot of discipline to adhere to the guidelines. That’s why we’ve created a set of validations that automatically check your model against many of the guidelines.The validations are currently divided into the following categories:Data model User interface FunctionalityData modelThese validations check the structure of the data model, and they also l
Thinkwise Summit 2023 focuses on building sustainable enterprisesOn October 4, 2023, Thinkwise is hosting its third annual Summit around the key driver of transformation: the realization that ‘it takes more than tech to transform’. The event aims to inspire industry professionals on how to build a sustainable enterprise around the core premise that having the right technology in place is key, but also merely the starting point.Previous editions of the Thinkwise Summit attracted an audience from various countries including Japan, Vietnam, Brazil, Germany, the United Kingdom and more. This year, attendees can look forward to engaging keynote speakers, interactive workshops focusing on technology, business transformation, talent, and culture, as well as insights on building a collaborative ecosystem with both partners and clients.First Thinkwise Summit Keynote speakers announcedPieter-Paul van Beek, CEO of Thinkwise: “The issue of legacy software cannot be overstated, and the burden it pl
(Personal story)One aspect that I had difficulty with when creating control procedures, was making them work in a variety of scenarios. The way was to copy already created control procedures and templates and alter them slightly to match what needed to be done. Whilst there is nothing wrong with reusing great solutions, it becomes a problem when the model changes in such a way that each one of these control procedures had to be changed. Only at that point, it becomes obvious that this is not be the way to continue development. Understanding control proceduresAs I became more and more familiar with the Software Factory, I began to understand that the Software Factory offers a solution I was desperately in need of. When switching the type of the Control procedure to SQL, it will allow you to take full control of template assignments and parameters. But to fully understand it, we need to break it down, let's dive into the definitions of Static control procedures:Assigned templates: Contr
As you know at Thinkwise we have guidelines for formatting our SQL-code. Because the guidelines were found to be a bit too extensive, we decided to reduce the examples. In addition, we have made some minor adjustments, so that they are more in line with the best practices of Thinkwise.The guidelines can be found here: https://docs.thinkwisesoftware.com/docs/sf/guidelines_sql_formattingGood luck using these guidelines!
When a developer creates a code template and assigns it to a program object, the order in which the code is executed is often neglected. This can lead to some serious issues, one of which we are discussing today. Deadlocks. A deadlock usually does not occur until a product is used in a production environment. Even though transactions are rolled back and no real harm is done, the developer will often have to solve the deadlock issues with great haste. This blog post will provide some guidelines on how to find and solve a deadlock. In this blog post, I’m assuming that the isolation level is the current default isolation level for products – Read Committed. How deadlocks occur A deadlock will occur when a transaction (A) is trying to access one or more rows which are in use by another transaction (B). Normally this is not a problem, the transaction (A) will wait until the rows are released. But the transaction (A) will wait indefinitely when the other transaction (B) is waiting
Free the world of legacy software; that is the promise that we make. This not only means that we empower businesses to modernize their existing legacy software, but also that we guarantee that newly created software never becomes legacy, ever. We do this by making sure that all applications developed with the Thinkwise Platform continuously stay up to date, both in terms of architecture and technology. When new technologies emerge that qualify for use in the Thinkwise Platform, we completely redevelop the existing runtime components using these technologies, by first rebuilding all available functionality to guarantee backward compatibility and subsequently expanding on it with new features and possibilities that these modern technologies provide. The current cycle of innovation with the Universal GUI has quite some impact, as we are not only addressing the user interfaces this time, but the entire architecture of the Thinkwise Platform with the enhanced Indicium Application Tier. Thi
The Thinkwise Platform version 2021.3 has revised the way the Creation screen works, opening up more elegant ways to leverage tooling to automate this process.The generation screen consists of a number of steps:Generate definition Validate definition Generate source code Execute source code Run unit testsThis has remained unchanged between versions 2021.2 and 2021.3. However, the way these steps are performed has fundamentally changed.In the previous version, the steps in the generation screen were bound to a specific client. A developer would start Generate definition and the definition generation would be orchestrated start-to-end by the users client. This has served us well for many years, but there are some drawbacks that we’ve addressed in this release. The new Creation approachAll ‘jobs’ are no longer performed by a client, but are instead performed by Indicium. This means that generation, validation and such will continue even if the developer closes the screen or even the Softw
Update: the documentation is now available at https://docs.thinkwisesoftware.com/docs/deployment/container_deployment_overviewYou might have noticed, there is a new menu item in TCP called Thinkwise Containers. Through this menu item it is possible to request login tokens required for downloading Thinkwise container images from the Thinkwise Container Registry. These container images can be used to deploy the Universal GUI and the Indicium Application Tier of the Thinkwise Platform in a new and easy way.But what exactly are containers and container images, how do you use them, and what are the benefits of using container images? What Are Container ImagesA container image is an application together with all the required dependencies wrapped together into a single image, which basically is a compressed archive. The application that runs from a container image is called a container.Compared to a virtual machine, a container only contains the required dependencies to run the application or
You've got to catch them all! 🚀 Badges that can be earned by best answers in all subforums. Badges that can be earned in the subforum Deployment. Badges that can be earned in the subforum Integration. Badges that can be earned in the subforum Blogs. let the games begin!
Modern businesses require a short time to market to keep their competitive advantage. This means the software development process needs to be agile. In order to support maximum agility and especially when working in (multiple) teams it is smart to work in branches rather than work on the main model.In this article we are going to focus on working with feature branches whilst still being able to go through the complete DTAP flow and have the ability to apply hotfixes if the need arises.As a quick recap, a branch is a separate version of your application model, created from a specific point in time, that allows developers to make independent changes, fixes, and updates without affecting the main version. Branches are used to isolate new features, bug fixes, and other development work, and later merge them back into the main version when they are ready to be released. This allows multiple developers to work on different aspects of the application simultaneously, promoting collaboration an
The Mobile GUI has entered the End of Life phase.As per runtime component lifecycle policy, the release of Thinkwise Platform version 2023.1 is the last version to support the Mobile GUI. In this blog, you can read about the impact of this change in runtime component support.ImpactAny Mobile GUI that is still in use today will continue to work. However, upgrading to any upcoming Thinkwise Platform version will not be possible. The Mobile GUI will not support version 2023.2 and up.Thinkwise will only provide critical security updates for about 1.5 years. When Thinkwise Platform version 2023.1 is no longer supported, the Mobile GUI will enter the End of Service Life phase. Note that the underlying technologies for the Mobile GUI are aging, security patches may not always be possible.Furthermore, there will be no further updates to support new operating systems, browser versions and such. The Mobile GUI may cease to function when the operating environment is subject to change.More informa
By Evelien Duizer and Marjolein van der Vegt-Verstraten Let us start with a question: Do you know what software testing means, and what a software tester or a software test engineer is up to all day? Let’s be honest, most people, whether they work in IT or not, would answer this question with a resounding ‘no’. But isn’t that a bit strange? For most professions, the average person has a pretty good idea of what the job includes. A teacher educates students, a police officer enforces the law, and a doctor treats diseases. People can even hazard a good guess about what software developers do. They create websites, applications, and video games. So what does a tester do? First and foremost, a tester is responsible for increasing and guarding the quality of a system. This involves a lot more than people think. A tester has to find out how functionality should work, analyze the differences between the actual and desired situation, create test plans and scenarios, analyze risks, report test
This is the first time we share a design as a standalone blog, to give you an impression of the things yet to come. This gives us the means to register feedback about a new feature in a natural way, which helps us to improve our product in the process. Our goal is to give our end-users a prominent place in our design process and to listen to their feedback in an earlier stage, so that we can work together to make the best product possible for all involved.Therefore, we welcome your opinion and are curious about your thoughts.Now, for the design at hand. We already support the immediate export functionality in the overflow menu of a subject. Using this action immediately starts the download of all visible rows without any further action needed.But what if you want to download a specific number of rows or want to download the data as untranslated ID’s?We are going to add an ‘Export…’ action in the overflow menu, which opens a wizard. This wizard lets you adjust your export settings, step
Although the 2022.2 version of the Thinkwise Platform has only just been released, we already have big plans for a major change for the 2023.1. We are planning to store only the latest version of every project and move all old data to history tables.The main goal of this change is performance improvement by separating the operational data in the Software Factory from the non-operational data. A secondary goal is preventing massive amounts of unnecessary data from being stored.In the 2022.2 and earlier versions of the Software Factory the version control was handled by making a copy of a complete model in the shape of a project version. This resulted in largely the same data being saved multiple numbers of times, whenever a new project version or branch was created. Since the changes only make up a small percentage of the whole model, this unnecessary data caused the Software Factory databases to grow over time and becoming slower due to their size.The change that is intended is to star
The Thinkwise Platform provides extensive, out-of-the-box support for the DB2 for IBM i database management system for many years already. That is why we have a large number of customers that successfully use the Thinkwise Platform to modernize their legacy DB2 application landscape. This is also recognized by IBM, who named Thinkwise as Best IBM Business Partner of the Year in Europe in 2009, and awarded one of our customers with the Most Innovative IBM i User of the Year award because it used the Thinkwise Platform.However, IBM did (and still does) not make things easy for us.When we started, IBM was still in the process of replacing their Classic Query Engine (CQE) with the much faster and more powerful SQL Query Engine (SQE), and we have been in regular contact with IBM about bugs in these query engines that nearly drove us insane. With the necessary adjustments and bug fixes by IBM and some workarounds in the Thinkwise Platform, we were able to solve these problems, and the Thinkw
The Thinkwise Platform allows applications to stay functionally and technologically up-to-date. This is at the core of our mission.Free the world of legacy softwareTo keep this promise, we must eventually remove support for runtime components that use aged technologies or architectures. While they are supported, they may hamper further architectural developments of the Thinkwise Platform and take up valuable development time. Support for modern deployment scenarios, operating systems, and browsers becomes difficult and ultimately impossible.Most importantly, as technology ages, it poses an increased security risk. For any technology, some vulnerabilities may be discovered. While these can be resolved quickly for modern technologies, framework developers and component vendors eventually discontinue support for older technologies. This puts applications that use these technologies at risk. An application using the 2-tier Visual Basic 6 GUI. Support for this user interface was discontinu
SQL server version 2016 has introduced the feature of setting up system-versioning to tables (also known as ‘system-versioned’ temporal tables). This means that SQL server stores a history of data changes and deletions which take place within a table. There are various methods of creating history tables, but with SQL server you can allow a history table to be made automatically for a table. To build a test scenario, let’s first create a table called article. code:create table article(article_number varchar(10) not null,article_name varchar(100) null,article_price numeric(9,2) null,constraint article_pk primary key clustered(article_number asc)) In order to create a history table, SQL first needs start_date_time and end_date_time columns on the table which is to be logged. code:alter table articleadd start_date_time datetime2 generated always as row start hidden not null default '1900-01-01 00:00:00.0000000', --Can be anything, but has to be in the past. end_date_time datetim
We are thrilled to introduce a great new feature. We received quite a few requests to apply some more possibilities to start user actions from a grid record, like we see also in apps like Outlook, Gmail, etc. Our Web GUI already supports grid links, where a column with a textual link can start a task based on the clicked record. We plan to support this feature in our Windows and Universal GUI soon too. In the future, we will also provide options to display the link in a nicer way, using icons and tooltips. More about that in a later blog post. Recently we’ve added a similar cool feature to the grids of our Windows and Web GUI’s: Grids now support a task to be executed when a record is double-clickedTo configure which tasks to use, the SF offers a new (model) extender, released in a recent hot-fix, which can be used to assign multiple table tasks to the double click action. The GUI will choose the first enabled task to execute. We chose to allow more than one so the developer can dete
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.