2020.03 Launch Webinar Part 1
2020.03 Launch Webinar Part 1
This webinar, by the way, is mostly going to be an overview of what’s in the release and how to get the release. Do one small demo just to keep things a little fun, but it’s mostly an update of everything that’s new. And then we get into some demos planned for Wednesday and Friday. So in this quarterly release right now, we just released the second release candidate that’s available through the download site and also announcements made on the forum. That’s available for you to test. We anticipate that that will go to a final build probably early next week. So we’re looking at that to be to be finalized, probably as the last few cases trickle in and we fix them. There are several dozen fixes and small enhancements in the core product. And I went through all of the extension releases with the team and I think at least 17 packages are updated with an announcement. With enhancements and fixes, so we’ll go through those quickly as well. So there’s a lot to cover. We also have a new plug in that’s for doing sort of token based security and we’ll do a whole webinar devoted to that on Wednesday. And then also a major release of the Google Maps plug in for component for Servoy. To be some nice things to demo for that that we plan for Friday. In the in the core updates, so the IDE and the application server. First of all, that’s available now with native installers for both Mac and Windows. So we now ship signed installers that clear antivirus programs won’t complain about. Because they’re signed exe for Windows and DMG for Mac. You can also get the zip installer for Linux or if you just like to do the zip installer that will work for any platform, you just unzip it and you can run it. There are a lot of the focus on on this release has been performance improvements in the developer environment itself. So we made things multi-threaded and asynchronous on load. We delay the activation of the of the solution so that the IDE actually can start out much faster. So there was there was quite a lot of work done there. One thing that you’ll notice when you first open up this version of Servoy is something new that is going to ask for a login. And this is the same login for your credentials when you download when you use the forum when you use the support.servo.com. So that’s the single sign on our Servoy cloud. And the reason for this is to begin to bring you a cloud connected IDE. As we announced the Servoy world, we anticipate more and more of the innovation on the Servoy products to be coming in the Servoy cloud. Today that includes the pipeline as a service. So automated build automated end to end testing also production hosting now available. And then coming we anticipate more analytics and the mobile and desktop. The native mobile and test desktop builders coming as a cloud service that can be connected to your account. So this is an important step. As not meant to annoy you if you log in once it will be remembered in your Eclipse credential store and re logged in for all of your developer environments. So it’s not like you have to log in for each each one or every time you switch workspace. So it’s really meant to be non intrusive. It’s also possible to log out and log in if you have multiple developers for some reason on the same workstation. You’ll also notice that the first use splash screen comes up with some tutorials. We’re going to be developing that over the next weeks and months to bring some what we call tiny tutorials. This is more aimed at new users, although we believe that the content can be helpful for existing users as it gets developed. And these are meant to be able to link directly in the IDE. So another reason we want to be connected with our cloud from the IDE. So the first tutorial that that will ship by the final release will be the example solution, which shows how to quickly build something. Using a lot of the pre package modules and extensions. So in just a few minutes you can get a really robust looking application. So we’ll be bringing that to you as this release goes final. But for now there’s just the about servoite tutorial video in there for now, but we’ll be able to bring you small tutorials as things are developed. So it’s another way that we can reach out and help you guys better make solutions and better figure out servoite. So this is meant really to help help you learn as you go. Just some minor things about this release. We provide an upgrade of Eclipse. We provide an upgrade of Tomcat. So this is the one that’s embedded when you run developer, but also the application server version itself. For those of you that use the embedded post-crestial database that’s also updated now for macOS. The main enhancements that are not related to performance, but more related to API and things. There is now, it’s minor, but a found set name found sets. There’s an API call to get the name of the found sets that only makes sense. That’s for using sort of separate instances of found sets that you can do a design time by name or via API. And so now we support being able to figure out what the name of a found set might be if you use name found sets. So that’s kind of just a logical addition to the API. We added support for the SQL any clause, which is kind of a substitution for in. And we do that dynamically based on dialect for supporting database vendors, which I think is only post-crest at this time, but that could change in the future. So we’ll pick up the dialect and switch it. The reason for this is also support and performance for not having temp tables. Sometimes people, there’s a limit to what you can put in a SQL in. So this improves performance because we can do an any which we don’t have to create a large temp table if it gets really big. We also in the IDE, we relax the allow null and table editor. We had some some requests for this, I think for some time. The reason we avoid doing it is we really can’t control that afterwards, but because it’s one the tables created, it’s fine. But if you are managing your database in the backend differently, then changing the allow null here will be supported. But you have to take care yourself then to manage whether or not a column really allows null in the backend. We can only control it when you created a table through servoit or allow servoit to create a table through import. But we have many people who do maintenance on databases in import hooks and in other ways in scripts. So this is just sort of a bit more flexibility, but use it with care if you do use it because you want to be in sync with what’s actually in your database. So something that I can demo today are the next couple of points I can do a tiny demo around this. We used to have this function in older versions of servoit to get the startup arguments. So these are could be arguments that are passed into the deep link in the URL. And we had we had removed those and sort of pushed them to the on solution open event. The reason we brought it back is a bit tricky to explain, but if you’ve been using servoit for a while, you might you might get it. When you put a login form on a solution, the on solution open event doesn’t get called until after you log in. But if you want to have some sort of deep link arguments like maybe a tenant or a user token or something. And you want to pick that up before log in before authentication. There was no way to do it because you don’t get it to later. So we actually added that back so you can call it say when the login form loads or something. There’s always been a way to do this if you use a full login solution, which is a separate a separate module that then switches control to the main the main application. And that does get the on solution open event called, but this allows you to do more lightweight implementation. So that’s that’s kind of a nice addition for ng clients. You can really start to not use the login solution, but instead can use the login module or the login form. On this on sort of the flip side of that when you’re logging out now through the API, you can actually actually pass in the deep link arguments just the arguments and you don’t have to worry about having a method that you want to say call and pass the arguments to so those will get picked up again. And finally, the database manager API save data, which has been in serve voice since the beginning. And now takes an array of records. We have always been able to just do a blanket save so everything that’s pending, saving individual records and also saving entire found sets. So now you can also just pass in an array of records of your choice. So provides a bit more nuance into into how you save data. What I can do is is kind of quickly show a small demo of how to do the deep link stuff because I think a lot of people use deep links. And I just want to make sure that you you understand this and then I’ll go back into. I’ll go back into sort of overview of all the packages and plugins and things that are updated. Okay. So I’m going to go over to Servoy IDE. I have an application here called test deep link and you can see that I’ve set up the login form. This is my login form. It’s very simple. It takes a username. You push the login button. There’s not actually any real security here. Just logs you in. What I want to do is be able to deep link in and sort of suggest a username. So I’m going to go ahead and launch this. And I’ll log in first as Sean. And I’ll push the login so you can see that it says welcome Sean. And then it gives me the option to log out but re log in as someone else. So I’ll put in my colleague, Ritgar and I’ll log out. And now you can see in the URL here. It’s giving me the username equals in the query string. You could also construct this from a deep link from from an email or something. And that’s getting picked up here and you can see that it’s set as the default. So if we look at this in in the login form, I’m calling it in the on load event. So I’m going to go ahead and check that out. Right here. If we jump into that in the script editor, you can see that that I’m just calling that that method that was brought back that gets started up arguments and then the second argument would be the query string. And then that’ll be sort of like a JSON object with. And I printed it out here, the argument. That’s how I’m able to pick that up off a deep link. And I could do that right in the on load event of the login form because the on solution open event isn’t called, although I implemented it. You can see that there’s a binding here for on solution open. Where I actually pick up the username and put it to a variable so I can display it. It’s not you can see that here it’s undefined because. It doesn’t get called until after after the login so. That’s just that’s just kind of a new way to to deal with that if you’re using deep links. And I think a lot of people do because they’re really useful for all kinds of things. This is a I think a kind of a small change, but a very helpful change. Because you can handle that in the login form also you can see finally on the on the log out. And so the first form that it gets me logs in. I have this log out of events. And if we look at the script editor for that. I’m passing in now the argument here username and then whatever I put in that variable that I captured from user input. So that was added sort of as a complement to also being able to deep link. Directly and pick up the start the startup arguments so you can log out and pass that in. That’s it just a small demo for now we have really nice demo plan for for Wednesday and Friday. But I’m going to go back to the overview because we have a lot to cover. Alrighty. So, as far as plugging updates we’re shipping a brand new plug in and we’re going to cover this on Wednesday. So, I’m going to give you a quick preview of that is the JWT plug in and this allows you to generate and verify Json web tokens which is kind of a industry best practice for exchanging claims securely between two parties. So this is great for encoding payloads with some information in them for doing token based authentication, etc. So you can both generate and verify the tokens from a client server plug in. And we’ll have a nice demo of how that works and why you might want to use it. It could be for token based authentication web services or even like a deep link into a solution. So if you want to store a token in the local web storage. Then, you know, have it be valid for a certain amount of time but still secure and only only decipherable on your server. So it’s a great tool for that. So we’ll show all about that on Wednesday but that’s now available in servoic for when you download and install. It’s there in the default plug-ins of your ship. Also the JWT reports plug-in was updated. Mainly we updated this for library dependencies that were also updated. So the commons collection library from Apache and some of the parsing libraries were updated. We also support some export and print formats. I don’t know I accidentally put poi in there. I meant to put poi up here in the library dependencies. That’s not a format. It’s a typo. Uh, excuse me, XLS, sex, JSON metadata and CSV metadata are now supported for export and print formats. I was slide in a little bit about the Excel utils package that was updated. You just want to make sure the version of poi is in sync. So we recommend that you get the poi jar file prod from the jasper port plug and that’s all really well documented. This does have a small impact for for those of you using the Excel utilities package for servois module. Also we haven’t done it yet but we will be moving jasper reports to GitHub. It’s currently still maintained on servoic forage. But we’ll put it on move it on GitHub because of the available documentation with you documentation etc. there. And we can also move it to git. So that will be coming shortly. Into some of the packages updates as I said we had I think 17 packages updated. I’ll go through the the ones that had sort of more major or minor enhancements and then quickly through the ones that had just made in spom. So we will be doing a webinar on the Google Maps component for servoi there were I think 10 enhancements. And and five fixes on that one including enhanced marker support so different things you can do with markers. Some more things around the API such as zoom level and centering a map on on location etc. So if you use this component before it was really very vanilla you just set up your data binding to. You know what’s going to generate a marker or group of markers and that was it and which of them on a map. Now there’s more support there. We also added support for KML files which is a kind of markup for putting geographic features on a map on a Google map and getting the route information as well. That’s available today via the servoic package manager and we’ll do a webinar on that on Friday. There was a minor version bomb to the SUI security project. This is of those of you don’t know this is the main security extension for doing multi tenancy and permissions control or any applications in servoi. We added four new API enhancements also some to to enhancements to the there’s a SUI security UX module which we did a webinar about I think in the last quarter release which provides sort of a default user experience for managing security and there were two small enhancements there. There is one potentially breaking change permissions that sink out of the developer environment to to the runtime was it was sort of turned on only well in developer and then requiring an import hook to do the sync when you go to deployment. This is ideal except for when you’re kind of getting started it’s frustrating because you the stuff you do it you might be adding lots of permissions and developer and then you’re deploying testing and then it doesn’t sync automatically and you have to do with the import hook. So what we did is we added a config property so that you can decide when you want to sync permissions and we default it to true that when you deploy it’ll auto sync permissions which you can then later you can override default and do it with an import hook when you’re going more towards production but for development. You can just leave it that is always going to think that the downside would be that there could be some performance overhead because it based on when the scope loads so every client that’s logging in is going to do a sync of permissions some of our customers have large ERP applications with which could have many many permissions in them and that’s going to be doing a sync per client as they’re logging in which has to some overhead which is why we. We sort of disabled it and made it via an import hook but then we realized that makes it difficult for people who are kind of just developing and testing and changing things that they have to go and do that in import hook so we. We switched it around so you can have kind of the best of both worlds and you can configure it with this property so. I know that’s a very detailed explanation but we really like to now address anything that’s potentially great and change in a release of any of our packages or or products so. Want to let you know about that one that module is available now with the sort of way package. We did a minor version bump to the bootstrap components the bootstrap components are kind of the default. Regular business components for any HTML5 applications and we added three enhancements and two fixes. One of them was is having to do with so a lot of these components you can inject markup into them so you might have a label and you want to you want to put some markup in that label to make it a bit more rich or a bit more dynamic. The challenge with that is you have to then programmatically say whether or not the markup in that should be trusted or not this is having to do a security and cross. So injection attacks and. We want to do is is not have to have to do that via code but we made it a component property so you can go go on the component and just say whether the text is is trusted or sanitized so you can you can have markup which you know we by default we sanitize the markup but you can market is trusted and then put what you want in there and that’s now at a component. We added a method to programmatically select a tab on the tab panel also this one’s my favorite the default size when you place a bootstrap component was like a big blocky rectangle so we we made that I think now 200 by 30 so if you’re placing you know text box check box those types of buttons those types of things actually. Are size to be nicer so. Also note there were two components there I’m not sure if anyone was really using them because we had nicer versions of them in the bootstrap extra library and in the. Well the ng grids in the the Servoy extra table component. So the progress bar and the bootstrap table we are deprecating those because they are very basic implementations and we have. Had for a while now better implementations those components. However, some of you might be using them so they’re only deprecated they won’t they won’t go away yet, but you won’t see them in the palette of components. So the core lairies of those are in the bootstrap extra package we have the progress bar there and then for for grids we have a number of options we have the ng. And g grids which has the data grid the power grid and then we have also in the Servoy extra library we have the table component there which is like the really fast lightweight performing grid. This one is we’re screening up on the last fix having to do with the markup stuff so this one’s not in the the Servoypackage manager just yet it’ll be in there by the end of the week when the release goes final the core release goes final. So the Servoyextra components which is sort of an extension of the normal business components. There was a minor bump to that one we improved some of the wiki docs there and we added the js event parameter to one of the components click events or right click double click single click they all now pass a js event which you can pull off the xy coordinate the time etc. Really minor update there that’s in the Servoypackage manager as well. We did a maintenance bump of the chart js library to this as chart components this as charting capability that you can just drag and drop on your forms and do data binding it’s a really nice useful library that a lot of people use. enhancements and a couple fixes program adequately clear a chart similar to the last update I just spoke about we add the js event parameter to the click handler on the chart so that it actually passes the event if you want to know where on the screen it was clicked for example. There’s also an event handler for after the chart is completely rendered because these things can kind of draw a synchronously and you might want to run something when it’s loaded and fully rendered so that’s that’s a nice addition for those of you that are using that that’s in the Servoypackage manager as well. ng grids which is a really extensive component library it actually consists of two grids the data grid and the power grid. We’ve done several webinars about these this is a very complex set of components we did maintenance bump on both the grid components but also there’s a service package there for sort of calling API like global settings. So, both of those were bumped up a lot of work went into that there was I think 19 cases that were resolved for different fixes one API edition to get the column index. So you get the index of a column by ID this is useful when you’re like reading back in the column state or something and you actually want to know the index of one of the columns that you’re reading by the just a kind of a minor. So, we’re going to have a lot of data and we also updated the wiki docs for to reflect the changes to the API that’s in the Servoypackage manager as well. These are some pretty made minor you know maintenance bumps bootstrap extra components provides at sort of extended set of business components like the nav bar in the progress bar I was talking about etc. Some fixes there. The advanced renders package this is really kind of for advanced use cases is mainly used by the pop up filter component which we announced at the beginning of the year it’s one of our new components that a lot of people are using. It depends on this one so this one’s kind of a dependency. You could have a use case to use this by itself, but it is in our public repository and there were actually quite a bit of enhancements to that so I wanted to include this in the announcement for those of you that might want to use this standalone but it’s kind of an advanced use case so. But just good to know that that’s being maintained quite actively. And I think that’s a lot of the things that we have to do is to do that. And so I think that’s a lot of the things that we have to do with the public filter I just mentioned this is one of our newer components is very popular. We did a webinar all about it in the last quarterly release. So if you don’t know what I’m talking about please go back to our archives and watch that one because I’m getting a lot of positive feedback about this component people really like it. And we are actively maintaining it. We added a couple of enhancements. We added a like for filtering so by default I think the filtering was a starts with. And we made it not the default so there’s a config option to say that you want the default to be like and not an exact match. So you can check that out as a kind of a minor fix but or a minor enhancement. The look up API this is we did a webinar about this a bit farther back. So it’s a nice API to do a sort of advanced sort of pop up search thing. It’s like a value list on steroids. If you haven’t seen it before please check out the archives. There were a couple cases resolved here in terms of valueless bindings to the columns in the look up. So pops up a grid with a type of head search and you can see a lot more data than you would with a value list. So you cases there resolved. So there’s a really popular search API for text based searches that’s been out for a very long time. This one got a couple of enhancements or one enhancement and a couple of fixes. There is a method in there to get the results of the search as a data set. And there’s a parameter in there. That’s that’s optional. And if you didn’t specify it’s the max number of rows if you didn’t specify it would default to zero which I guess didn’t make a lot of sense. So you don’t specify it defaults to unlimited rows. So. S few iutills which is a very low level kind of generic utility API library that’s used in a lot of projects. It’s a dependency for a lot of the other modules that we ship. It received a maintenance bump. There was one method deprecated get client ID because now we have the client manager plug in for I think since there were way. So it’s kind of duplicate so we just we just deprecated it but it’s the work. So if you reference it don’t worry about it. And there was one small fix in there. Part of that package is the Excel utils you might remember sort of at the top of the slide deck I mentioned the Jasper ports plug in being updated. When you get the S. S few i xl utils package it does have some external binaries that are required. There’s really extensive nice wiki docs that my colleague had put up put up there a long time ago and has maintained about how to get that external binary. You do get it from the Jasper ports plug in. So that we don’t have conflicting versions of the same binary if you happen to use both of those at the same time so we standardized on one. But we did add quite some enhancements there, including API updates having to do with actual Excel stuff like cells and sheets and things also convenience for a method chaining and those API so that’s quite nice. If you are building mobile applications that you want to deliver a native native interface so for iOS and Android. Then you’re probably aware of the S few i phone gap. This is a module to bridge to like Cordova plugins to be able to do things native like GPS or camera etc. On phones. This is very actively maintained because we have we have a bunch of customers that are doing cool stuff on mobile devices and in fact I was checking. Since we did the last quarterly release. Making sure all these packages get get released in at the same time, but this one had act I think six releases since the last webinar so I total those up I think there’s six enhancements to two fixes so if you are. building mobile applications please check out all the release notes for all of the releases you may have missed because there’s been a lot of work there. Another extension project is the and g desktops of this is if you’re building with the ng client you want to build applications that run natively on a desktop and have support for things like hardware integration or connection to the file system we call that the ng desktop project we’ve done a couple of webinars on that so if this interests you. I haven’t heard about it check out the archives. A very minor bump to add support for we had file watching already but now you can watch folders. So you can also select folders so just some API changes there check those out if you’re building native desktop that needs to talk to the file system. Okay, I think that covers I know it’s a lot of content and I know it’s not a lot of demo but the cool demos are coming later this week, but I think that covers kind of the release as a whole so. I’m going to leave up these are useful links basically the release notes for this release if you want to see all the cases that are connected to this so individual cases. You can see those as well and for any of the packages that I mentioned those are all available in the Servoy package manager and I’ll just show you really quickly if you. Go to the Servoypackages node in the ID and you right click and select download and install with package manager here’s where you get a list of all of the components all of the sort of services which are browser API type things layout managers and modules so each one of these has it makes a room here. Each one of these can link out to documentation with the documentation and release notes and everything there so if you’re just getting started that’s where you can access all of the extension packages. Cool. Let me see if we’ve got some questions. Think everybody’s waiting for your. For your demo, Sean, because I’ve got only one question. And that’s regarding the cloud login if the cloud login is required. Because obviously if you’re working offline or on an airplane or something you don’t want to be blocked from having access to to do your work so. It’s not the intention that we want to force you to log in. This has to do with identifying your account when we begin to connect more and more the ID E to some of our cloud services. Today, that is the automated build pipeline and end to end testing which we’re using more and more with every new project. And as well as production hosting. But also. We’re going to start to add more and more services like analytics to see how your applications are being used and also some of the builder services so the last two extensions that I mentioned were the ng desktop. And the ng mobile, both of those projects required to build binaries because. Well, Servoy provides a way to build HTML5 pure HTML5 applications that you just deploy as a. You know, to a web server. If you are going to distribute binaries for native desktop applications or native mobile applications you have to build them. And so we we plan to offer cloud building as a service and that can just connect directly to your account so you can you can export kind of from the ID E through our cloud to generate the binaries and distribute them to your customers. So more and more I think that that will will be relying on that and I want to get that in place. It’s also the tutorials for the it’s a lot for the first use experience. We know that serve always difficult to get started in and. We want to be able to connect user with content to watch and help get started and it’s helpful to know who they are. So we can give them kind of if we give them a five part tutorial. You know, we know they watched the first three videos or something then we can keep suggesting the tutorial video. So it’s aimed a lot at those users as well. You can you can dismiss the tutorials if you don’t want to see them and leave that as an option. Okay, thank you Sean. I got one more question. About the package manager. It shows updates for the service solutions, but the update icon is missing. So the question is how do I update the solutions such as. HP while you tails. Okay, so the you have it existing version, but the update icon is missing. Let me see. I think there is a fix for that. I have to take that offline. Okay. Because if you’re on. If you’re on if you actually have it and see these. This is the install, but if you’re not on the latest, it should have an update. I come there. I think is what he means. And then if you click that it’ll update you to the latest if you you have a version install, but it’s not the latest. So yeah, please file a case for that. I thought I might have seen a case come by related to that, but I’m not sure. I’m not sure if I’m on the latest. I’m not sure if I’m on the latest. I’m not sure if I’m on the latest. I’m not sure if I’m on the latest. I’m not sure if I’m on the latest. But it could be an issue, so we want to make sure that. It gets resolved in the final. So thanks for pointing that out. All right. No. No other questions. I see so far. Okay. Well, thanks everyone. And we’ll be back Wednesday with. I’m securing your applications.
