Questions, discussions, news and updates regarding the Thinkwise Platform.
Recently active
Could someone explain this error message: Something went wrong while processing this report: Ongeldige index. (Uitzondering van HRESULT: 0x8002000B (DISP_E_BADINDEX)) Or, is there an overview of all known error messages?
We have a Reporting Service installed and configured to look at multiple instances/databases (development and test). All records in table rapport_queue are processed for the first connection. When a record is added in the second application, it is not processed by the Reporting Service. After a restart of the service, all records with report_status = 0 are processed correctly. New records will not be processed after a restart. We have uninstalled the Reporting service (3.00) and installed the latest version (3.20) with no different result. What could be the problem? Config: connectionString=" Data Source=CFS-TWDB01\THINKWISE; Initial Catalog=CF_FINAS; Integrated Security=true; User Id=; Password=; Persist Security Info=True" providerName="System.Data.SqlClient"/> connectionString=" Data Source=CFS-TWDB01\TEST; Initial Catalog=CF_FINAS;
When I change the color and font for form buttons in the theme, this doesn’t affect the task buttons. How can I change to color for the task buttons? Especially for the web version (with grey buttons and white text).
Is a separate license necessary for the use of DevExpress Reporting or is this part of the suite? Is a viewer needed or is this standard in the GUI? How can I import a Crystal Report? I do not see an option to import Crystal Reports, as described in the release notes.
For as long as I can remember people have been expressing their wish for this new feature. If they could somehow quickly gauge whether or not they should open a tab page somewhere in their application to see if there’s data in there… wouldn’t that be great? With the increasing adoption of smartphones and mobile apps for businesses this need is becoming more manifest. This is why I’m excited to announce that such a feature is now an integral part of the Software Factory, as of version Pyxis – G9.8. Welcome to Badges! There’s this paradoxical thing about badges to me. They seem like such a small addition, but after I learned to identify them, they suddenly popped up everywhere, like little pixies: New private messages and pull requests on Slack There are two unread emails There’s an update for an installed app on an iPhone Visual Studio 2015 has three Extension and Product Updates If you’re wondering what tab page in your browser loaded an ad which just shattered your eardrum
Symptom: not able to select rows in the Grid of the Web GUI, while the Windows GUI Grid allows it. Cause: In the SF the "Allow navigation" rights checkbox is disabled for the subject. Explanation: The Web GUI disables navigation between rows overall based on "Allow Navigator". The Windows GUI only uses this setting to disable navigation buttons of form and ribbon. There is an extended property available for the Windows GUI to copy the behaviour of the Web GUI: code:useallownavigationasrights = yes Due to technical difficulties the Web GUI doesn't met the Windows behaviour (yet).
For a long time we have offered features outside of our standard range as extenders; small files containing custom code that configure a range of properties which allow the use of an otherwise unavailable feature, such as the maps component or the resource scheduler. This was a great way to integrate new (and sometimes experimental) components, but it also introduced a lot of overhead and decreased maintainability of the GUI. Every little change to the extender meant changing the code, compiling it into a dll, and deploying it. Furthermore, changes to our codebase that impacted a certain extender meant going through the extenders for every customer and checking for errors. To address these issues we decided to create a way to model the extenders in the Software Factory. While it's still not a full integration of these features into the Software Factory it creates an easily accessible and maintainable way to implement the current set of extenders into your products. It also provides
Will there be a Dutch version of the Software Factory?
Sometimes I use a task (button) to start a process flow. The task in itself actually does nothing, it only calls the process flow. For these kind of tasks I use the tasktype ‘Stored procedure’ and leave the template empty. I noticed that there are other tasktypes available that are not described (like ITP Interface). Could one of these tasktypes be a better option here?
Can anyone tell me what control is in use for the embedded browser in the Windows GUI (in the document preview)? I have read that the browser used in winForms is based on IE 4. For one of our features we rely on this browser component, so it would be great to know exactly what we are looking at.
Lately, we’ve received the question from several parties (app suppliers like WerkbonApp) whether it’s possible to realize a connection with them. Because of that, I’ve started some intensive testing with Indicium (2018.1 build 2). While doing this, I’ve encountered several problems and questions that I’d like to submit. 1. Is there another authentication way than Basic Auth.? If so, which one and how can I apply this? 2. Why is it possible to filter by $select, $filter and $orderby separate but not with a combination of these? 3. Why is the $top=10 parameter allowed on a table but not on a view? 4. How can I track down the cause of a problem when the system returns a particular HTTP error code (like the 500 internal server error)? I’m aware of the subfolder Logs from Indicium on the (web)server. Are there any other methods to tackle this problem? 5. Is it possible to request both master and detail records (like organisation and contact) in one response? 6. A few p
With the upcoming release of 2019.1, we are discontinuing support for generating Java and C# service tiers. The Windows GUI will no longer be able to use these service tiers as a back-end. This blog describes the reasoning behind this and the (better) alternatives that are available. It is important to note that the generated SOAP service tiers have done a great job in advancing the Thinkwise Platform. At the time when these service tiers were released, they were state-of-the-art and solved some important challenges. Many applications have used these service tiers in production environments. But like any technology, it must eventually yield to a successor. The true power of the Thinkwise Platform lies in the fact that a technology switch like this can actually be made. Why get rid of them?The main reason to use the generated Java and C# service tiers was to support Mobile. Mobile GUI’s cannot directly connect to the database and needed the service tiers as proxy. Version 2017.
The Thinkwise Platform ensures that our customers do not have to worry about technological obsolescence of their applications. By separating model and technology, combined with our advanced runtime interpretation technology, we are able to update or replace technologies with minimal impact on existing applications. In order to adopt new technologies, however, it is sometimes necessary to drop support for older technologies.Such a moment has come with the upcoming release of version 2018.3 of the Thinkwise Platform. With this release, we stop supporting SQL Server version 2008R2 and lower, and require the .NET Framework 4.7 for the user interfaces and the Indicium application tier. By requiring SQL Server 2012 or higher we can use all kinds of cool “new” features regarding storage, SQL, performance, security, and more. By switching to .NET 4.7 we can, for example, use the latest Transport Layer Security protocols and improve high density display support.Thinkwise Lifecycle PolicyOur val
SQL Server 2012In case you missed part 1 of the new features. Window function framesThis feature is a really cool enhancement to window functions which fills a niche gap for queries of a cumulative nature. A window function can be applied on a limited set in regards to the partitioning, the ordering and the current row. Other language featuresThe parse function has also been added which can be used to parse data using culture-specific settings. The try_parse function will provide null-values when this fails instead of causing an error. New functions such as datefromparts, timefromparts make it very easy to create a date or time object by providing years, months, days, minutes, etc. instead of a date or time string The eomonth function provides you with the last day of the month based on a date in this month. It is possible to provide an extra parameter which SQL Server 2014SQL Server 2014 brought a lot of new cool features and performance to the table, but the
While SQL Server 2008r2 is currently the minimum version for SF and IAM, products created using the SF can use any version (up to 2017 at the time of writing). In this blog, I’d like to share some of the introduced language features in versions 2012 up to 2017 and explain how you can use them in your products. This blog focuses only on Transact-SQL syntax features you can use in your own application logic. Features such as new database management functions, new data types, new types of database objects or optimization features will be saved for another time. SQL Server 2012Eventually we will set the minimal version of SQL Server to SQL Server 2012. This provides us with the opportunity to use language features introduced in SQL Server 2012 in the Software Factory, the Intelligent Application Manager and in Indicium and the GUI’s when accessing the databases. The following features are discussed: FETCH OFFSET THROW TRY_CONVERT IIF CHOOSE CONCAT LEAD and LAG, FIRST_VALUE
Previously, you always had to have a form component on your screen to be able to add new rows. This is no longer necessary, because the grid now also supports adding new rows. This feature is released with version 2018.2 of the Thinkwise Platform (Windows GUI only). What’s new?When adding new rows is enabled for a grid, an empty ‘add row’ is displayed at the top of the grid. Be aware that only the values of columns that are visible in the grid can be filled in. The ‘add row’ is positioned directly under the grid column header, so it is clear which input field belongs to which column. It is also possible to only show the ‘add row’ while adding or copying. This can be configured in the Software Factory. A new row can be created by clicking on a cell of the ‘add row’ or on the ‘Add’ (Ctrl+Plus) or ‘Copy’ (Ctrl+Alt+Plus) buttons in the ribbon. If the screen type has both a grid and a form, make sure the grid has the focus! After filling in the mandatory values for the new row, it can b
The icons you use in your applications for tables, prefilters, tasks and reports often show up in multiple locations in the application, like the menu, tab pages, the ribbon, button bars and the context menu. These locations require different icon sizes, and the user interfaces would scale the supported Bitmap (.bmp) or Portable Network Graphics (.png) icons to the required size. This, however, causes the icons to become blurred. With the latest release of the users interfaces we’ve added support for two new image formats to solve this problem. Scalable Vector GraphicsScalable Vector Graphics (.svg) are images based on vectors instead of pixels, allowing them to be scaled to any size without getting blurry. Another advantage of SVGs is that, because SVGs are XML-based, it is easy to adjust the properties of the image. In the Universal GUI, for example, we will be able to adjust the color of an icon to the background, so that it will always be clearly visible. This is also why
With the introduction of Europe’s General Data Protection Regulation, it is more important than ever for companies that their IT environment is secure and meets the legal requirements for privacy protection. To help our customers comply with this new legislation, we added a new feature “Data sensitivity” to the Thinkwise Platform to automate the anonymization of personal data in any Thinkwise application. This feature can not only be used for personal data, but also for other sensitive data like passwords or credit card numbers. With this new feature, we enable you to set the sensitivity for each data column of your application in the “Data sensitivity” modeler. View-columns, calculated fields, and identity fields are not data columns and therefore are not shown. A prefilter is provided to suggest which columns are sensitive, based on keywords or because columns with the same name or domain are also marked sensitive. For sensitive columns, it is mandatory to select an anonymi
Starting from version 2018.2, the Mobile GUI is equipped with one of the most requested features: barcode scanning. This cool new feature allows you to fill in fields by scanning a barcode or QR code with the camera of your mobile device! How does it work?To enable this feature, set the Control of the field you want to fill to “Barcode scanner (mobile)”. The field can have any datatype, but will be displayed as a text field with a scan button in it. When you click the button, the camera is opened with an overlay indicating the scan area. Once the barcode scanner recognises a barcode or QR code inside the scan area, the encoded number or text will be instantly inserted in the barcode field. TechnologyThe barcode scanner control uses the Phonegap Barcode Scanner plugin: https://github.com/phonegap/phonegap-plugin-barcodescannerThe following barcode types are currently supported: External barcode scannersA couple of Thinkwise customers already use external barcode scanners. Th
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
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.