Given SV’s inability to deliver a fully working product, I am needing to plan an alternative to using AnyScreen for initiating web entry for a particular set of data (PostgreSQL).
The original plan to try AnyScreen was a hope to leverage code for 3 or 4 wizard entry forms in an existing and long running Clarion program. The code saving advantage of AnyScreen was enough for me to convince the computing server staff to add a Windows machine, but without AnyScreen there will be a strong preference to keep MS out of the server room.
Prior to AnyScreen, another programmer attempted to replicate my Clarion wizard forms using Ruby. However, with snail paced progress and the AnyScreen release, I decided the Ruby effort should be dropped and a subscription purchased. This was in Feb 2020 and while I assumed AnyScreen would take several months to become stable, it seemed reasonable for it to be usable by the end of 2020.
With nothing officially new in months for AnyScreen subscribers other than the usual SV story, I’m looking for a solution that can hopefully be delivered by the end of July - a solution both in terms of tools and labor.
When you say, “3 or 4 wizard entry forms”, do you mean that each of those 3 or 4 has multiple (potentially many) pages? Or is it a single wizard form with 3 or 4 pages? That should be fairly straightforward to replicate with something like React. You would need some type of web server to access the database, likely via a small batch of REST API methods. Then you have to decide how you want to secure it all.
How much “business logic” is encapsulated within your existing Clarion code? If it’s extensive, that might explain why the person couldn’t easily recode it in Ruby. If you need to reuse that code, then the other alternative is NetTalk. You would have to move the code from within your Wizard into a callable library, but that would be much easier than recoding it in another language.
Once the code is in a callable library, you could decide whether to access that code via APIs (writing your web wizard in another paradigm like React). Or you could create your UI with NetTalk itself.
How many concurrent users to you need to support? If it’s thousands, then AnyScreen won’t do it (nor will a NetTalk UI). If it’s less than 50, then either of those should work just fine.
The only code one might be consider as business logic is that which determines the tabs to hide and the fields set as required based on previous responses. The insert to multiple tables is done with a Postgresql view instead trigger and all appropriate values validated there. The use of combo controls in Clarion is the obstacle for AnyScreen.
Not to be that guy Mike, but NetTalk will easily do thousands of users. We have apps comfortably in that range, and I’ve heard of apps getting over a million hits a day (on the smallest AWS instance.)
I refrained from commenting on Doug’s post so far because obviously NetTalk is not going to leverage the existing ABC procedures (which sounded like a requirement). However designing Wizard-Form procedures in NetTalk is pretty trivial. Without seeing the windows it would be hard to discuss the specific challenges that might be faced - but I’d be confident using NetTalk myself.
NetTalk supports this - either through hand-code, or more usefully using template settings. It’s very common to hide / unhide controls based on items chosen, and also tabs etc.
NetTalk doesn’t have a “combo” control in the way that Clarion does. In the sense that there’s an entry box with a pre-populated list below it. It does have an auto-complete control though, so as the user types possible options are automatically displayed. Or the user could choose none of those and enter something unique.
Again, not having a spec, it’s hard to predict the time to create any one form - but I expect it wouldn’t take more than a couple days at the outside to set up. If you wanted to hedge your bets Doug, you might think of asking a NetTalk contractor to whip up a proof-of-concept for you so you can see if your specific needs are possible. Or join us at a Thursday user group webinar (see www.clarionlive.com) and we can walk through your needs with you to see if it’s suitable or not.
Thank you Bruce. I think NetTalk remains a possibility but we are back to the Windows server question. Number of concurrent users is not an issue as this will only serve our university institute, ~350 total potential users but probably not more than 10-12 concurrent.
As I have started my slow slide into retirement oblivion, I recognize that all things Clarion will be following along with me. The code I know well can hopefully be maintained on a small-time contractual basis. Further development & the tools will be the choice of my replacement. Nevertheless, as one part of a final big extension to a program I initiated in 1987, it is critical that the work gets done soon. Unfortunately, I have lost confidence in the AnyScreen path.
I do realize that with the right set of circumstances, NetTalk can handle a large batch of users. However, my experience has been with adding NetTalk servers to significant existing systems having many database files, APPs, threaded global objects, cruft, technical debt, etc. If the existing system is very large and complicated (my “real world”), then NetTalk seems to top out at 50 concurrent users. This isn’t the fault of NetTalk, but rather the nature of the system to which it’s being introduced. It’s a fantastic tool, as long as one recognizes how it fits into the overall solution.
As you say Mike, that has more to do with your apps than NetTalk (and yeah, I know you didn’t build them …) So I wouldn’t say “in the right set of circumstances” - I’d just say “when done right” - and yeah, I know, we all have to deal with lots of legacy designs, bad code, poor choices and so on.
I have long disliked the pre-populated aspect of the shipping ComboClass. In NetTalk, after entering a single key, what subset comes back from the server - all records beginning with the entry OR just some records beginning with the entry?
you have options:
a) it can be entries “beginning with” or it can be entries “containing”. (ie the user doesn’t necessarily have to know the starting chars)
b) you can specify how many chars need to be typed before the auto-complete options are presented
c) you can specify the maximum number of options to be displayed (ie first 20, or whatever)
Hmmmmm. Almost exactly how my derived ComboClass works. I wanted to take advantage of Postgres LIKE. In addition, the difference in usefulness between pre-populated and delaying a query until just one character has been entered is huge. Why is the control NOT considered a Combo? In my book, it is simply a better version of the same.
well, I’m treating an “auto complete” as a separate concept to a “combo” control. (although perhaps that semantic, and more about the way the control is populated than the control itself.)
But, in many cases I prefer a lookup, in the sense that it can be more structures, have multiple sort orders, use a locator and so on.
The combination of both is what I like the most (it’s what RecentLookups does) - it’s auto-complete with an optional lookup button as well, so the user can type, do an auto-complete, or do a lookup. Which ever one they prefer.
I may be a bit off the mark here but I had to migrate an app to the web recently and needed up using TSPlus (tsplus.net). Cost effective, no changes to the app of significance and it works a treat in my case via a browser-only interface. Backend does need to be a Windows platform. You can download a trial and mess with it to see if it suits. It is not designed for 1000s of users at once.
+1 going with TSplus. The Mobile Web Edition provides a nice browser-based sign-on.
The license depends on the maximum number of concurrent users expected.
Your app on a Windows server using TSplus can handle about what AnyScreen is supposed to handle. I think AnyScreen can handle a little more than using TSplus, but not several thousand concurrent users like NetTalk can.
But both TSplus and AnyScreen support multiple servers and do load balancing, although I haven’t tried it with TSplus (Enterprise Edition) and a server farm.
With TSplus you don’t need to change your app, and when AnyScreen is ready, you can easily migrate to it.
If you have only 350 users with no more than 12 concurrent users maximum expected, TSplus will work just fine. 8 GB of RAM will handle about 18 concurrent users (running a large Clarion app). 16 GB of RAM will handle about 60 concurrent users.
You can use TPS or any SQL database supported by Clarion.
The server needs to be Windows. It can be Windows Server or Windows 10 Pro.