Filemaker Developers: What would Help you Convert to Servoy?

bcusick:

mjekl:
Ooops never expected to in-line Java. Bit scarry. I wonder where you would put the class declarations: in Global Methods?
Mainly forms and form objects (buttons, menus, text areas, …). In same cases it might be possible, per example, to have an account class and subclass/specialize it into Suppliers Account and into Clients Account. I’m sure there are people here that probably value the use of OOP more than me though (I’m a hobbyist :-)

Check out this thread: Using Object Oriented feauters of JS in Servoy - Classic Servoy - Servoy Community

I’ll check it out thanks.

bcusick:

mjekl:
So it is now possible to start a thread in another method as asked in?:
http://forum.servoy.com/viewtopic.php?t … ca0b1a473c

Sorry - I misunderstood. You cannot have multiple methods running concurrently at this time.

I guess Servoy is working on this. Because this is of some importance when working with db.

Thanks for all the great help.
Miguel

rjacques:
“Make it easy to create hybrid web and native client apps”

This is something that FMP does well, and Servoy apparently does not. The whole issue of not being able/allowed to interact directly with the SQL backend with a web app due to Servoy caching and broadcasting has been an ongoing point of concern for me. I’m aware of some of the workarounds, but, so far, they all seem a bit awkward.

Watch for an announcement in early January that will solve this problem. :D

we cannot support multi threaded scripts as easy.
Because when a script is multithreaded then they may never call UI related things (elements or through different paths like setting valuelist values).

So we need to be very very carefull what we could give the developers.
The best thing currently is to create a plugin that does youre threaded work. For example i could think of things like:

plugin.threadsplugin.queryDatabase(“select XXX from YYYY where ZZZ = WWW”, globals.callbackWhenFinishedMethod);

Then that plugin would do the query and when finished calls the global method with the result..

Hi Johan,
this was acctually a feature reqeuest I did earlier.

I have a method, which loops trough a foundset, (sending a lot of emails!) but does NOT have any GUI-activity.

Is this also possible in such a plugin?

those kind of things can be done threaded in a plugin pretty easy
you then have to write java code around the foundset instead of javascript. (and know a bit about threading)

unfortunately, I am not a Java/threading dude :(

Any one else who can help me with this?

P.S. Johan, is it possible to build an generic thread-plugin in which we can call a method, and than that method will be fired in the background? (another thread) and leave the responsibillity by us if we use GUI-things are not! ?

i don’t think this will be easy. Because then i need to dig into the javascript engine have to check it out if i can run script in other threads then the GUI one. And if everything goes ok when when executhing a script in a thread and at the sametime another script in another thread.

Sorry for more’o’less hyacking this discussion, but…

If you make a sort of generic method for running tasks in the background, it would be really great if it doubles as a doorstep for remote control with Applescript. I still need something like this before i can port our projects from Filemaker to Servoy :wink:

Links:
Servoy forum → Feature Requests → More Applescript support
Apple developer documentation → Scriptable Applications with Java section in leftframe menu.

that won’t be made by us very soon. It is completely apple specific. So if you really need it maybe somebody can make it as a plugin or s omething.

Thanks, Johan, for your quick and clear response.

An Apple-specific plugin would be fine especially as you see it from the developers’ point of view. From a marketing-targeted point of view would be best if that plugin becomes part of the Apple distribution of Servoy one day. If you look at the common professional applications that are ported to or made for the Apple platform, such as the Microsoft Office Suite, Filemaker Pro, QuarkXPress, InDesign, BBEdit, and so on they all have a certain level of ‘scriptability’.

I’ll have to look for other possibilities first. Maybe there’s already a Scripting Addition that connects Applescript to the SQL server, or i can use the CLI SQL client.

apjcs:
A tool to convert layouts would be a big help.

This would help me to maintain a familiar look for clients and give me confidence that in the layout/form design capabilities of Servoy are a match for Filemaker.

I would also like to be able to convert a few scripts to enable me to see how my familiar Filemaker logic looks in Servoy. I think a few sample script conversions would help my learning process considerably.

A blck box full conversion tool would be interesting, but I expect I would want to rebuild most solutions to get the best from Servoy

Not unexpected but also not realistic.

Like you PJ, I started out thinking a conversion utility would do the heavy lifting and from there some touchups and we’re away. After beginning from a standing start (a complete standing start with JavaScript, SQL) last June I’ve now come to the conclusion it’s like comparing an auto mechanic’s expectations to a jet aircraft – gets you from point A to B but in radically different considerations.

For one thing, FMP is based on the file – which is a database, which hold various layouts. Do a find in FMP and the same foundset is true to all layouts of that file. Not so in Servoy. There’s only ONE database, you can have lots of tables (which are kind of like FMP files and then again they’re not). Tables can hold any number of forms (layouts) but all scripts (methods) are attached to forms (layouts), not to the table and all finds are true for just that form. Jump to a different form and you will probably find a completely different foundset.

That kind of thing explains why a complete ground up rewrite is highly recommended.

I’m completely sold on Servoy, but it’s not the right tool if you have an impatient employer AND your only prior experience with databases is FMP – no matter how many years with FMP.

Servoy is definitely a rapid development environment, no question. But with the richness of the resources available and the radically different syntax it takes time to develop the chops.

I have the luxury of having no impatient employer (I’m him) and a client base that is comfortable with my FMP-based solutions, for now. I’m doing a complete rewrite because I know my clients will eventually wander away because FMP just won’t meet their eventual needs.

One of the advantages of doing a rewrite from ground up on an existing product is that you have a pretty good idea where you’re going, the functionality and interface needed. By starting clean I’ve been able to avoid the boxed-in situations I created for myself in FMP and also greatly enhance the old features in ways that just aren’t possible and/or practical in FMP.

I still think FMP is great, but the Servoy-SQL combination is many leagues a better development engine for exactly the same small biz and enterprise problems FMP targets.

There’s a lot to learn. FMP is somewhat like a bicycle with training wheels permanently bolted on. You can’t make very many disastrous errors because FMP just won’t let you. But you can’t really fly either. Servoy removes all those restraints.

If you have the opportunity of taking a Servoy training course or two, do it. But if you can’t get to one AND you have the persistence then do as I do, learn by doing. Put your FMP solution on one machine and start from scratch in Servoy on another. And ask your dumb questions here. In contrast to the FMP world, you’ll hear from Servoy tech staff as well as from other developers.

Do a find in FMP and the same foundset is true to all layouts of that file

I’d like to respectfully point out that this is not true.

Comparing an old version of FMP to the current version of Servoy can be misleading. IMHO, if we are to compare and discuss the relative merits of both applications, then we should do so with the current version in mind.

in that regard.. Servoy also has one global foundset per table..
But when you show related data in a form then that foundset is used.
And we have a special property: useSeperateFoundset which can force a form to always use its own fs.

If for example you make a simple solution with 2 forms on the same table and everything else is basic and you switch between those forms then they will have the same foundset.

Morley,

I just wanted to thank you for that clear prose above. You used some really great comparisons - I have a similar view of the two tool sets.

REMEMBER: Use the right tool for the job (always)! :D

bcusick:
Morley,

I just wanted to thank you for that clear prose above. You used some really great comparisons - I have a similar view of the two tool sets.

Hmmm. Johann corrected me on the business of forms holding distinct foundsets.

I remember when I first started programming in Servoy last June how I confidently went about doing things in more or less the usual FMP way and becoming extremely bewildered that sometimes the foundset would be what I expected and sometimes it wasn’t. Utterly unpredictable. Up to that point I’d seen nothing in documentation that could explain it.

Only after many, many frustrating hours did Johann explain that foundsets are attached to forms. But now he says there are also elements called global foundsets. Something I didn’t know until just now and still feel wobbly in understanding.

Very confusing stuff. Much of it, I’m sure, is commonplace to anyone who has worked within non-Servoy SQL environments, or MS Access or other non-FMP database environments. But people coming over to Servoy with zero experience in JavaScript, arrays, SQL queries really needs a briefing in background assumptions.

In the early months your (Bob Cusick) FMP-to-Servoy PDF feature comparison document was absolutely essential. Still is. I refer to it at least a couple of times a week.

Catching the right tone in documentation and user interfaces is extremely difficult. Make it too technical and you turn off half your audience. Make it not technical enough and you alienate the other half.

Hi Morley,

Foundsets are tied to forms, the end. You’re thinking with your “FileMaker Hat” on when you’re thinking “global” foundset. Two forms that share the same base table share the same foundset. You can FORCE each form to have it’s own foundset using the “useSeparateFoundset” property on the form.

TO BE CLEAR: INTERNALLY, a “foundset” is nothing more than an array of primary keys. That’s it. No voodoo.

Hope this helps clarify.

bcusick:
Hi Morley,

Foundsets are tied to forms, the end. You’re thinking with your “FileMaker Hat” on when you’re thinking “global” foundset. Two forms that share the same base table share the same foundset. You can FORCE each form to have it’s own foundset using the “useSeparateFoundset” property on the form.

TO BE CLEAR: INTERNALLY, a “foundset” is nothing more than an array of primary keys. That’s it. No voodoo.

That helps. One of my difficulties is I’ve seen instances in my solution when I really expected two forms to share the same foundset and didn’t. Once I got used to the idea they were all separate I’d discover other instances of them sharing when I hadn’t loaded both forms. Apparently inconsistent behaviour.

I’ve never yet used or played with the useSeparateFoundset property.

I’m sure all this is because I’ve unwittingly set up a peculiar structure in some way. It would help new users enormously if these concepts were explicitly and thoroughly discussed in a tutorial.

In the early days I also had extreme difficulties with tabpanels. I kept assuming I had to do something with the two tabs at the top, puzzled about how to add more tabs. The docs I saw at the time were accurate but breezed right past my blind spot.

I also had difficulty in understanding how to pass a variable from one method to another. Various contributors to this Forum explained, again quite accurately, but again breezed right past my blind spot.

I learned Photoshop and QuarkXPress exactly the same way I’m learning Servoy – getting in early before there are books on the subject, thrashing around until the concepts begin to connect.

I’m sure at some point I’ll hire someone to rewrite what I’ve already done and do it more efficiently. I’ve come to the conclusion periodic rewrites are to be embraced, not avoided.

I am a PHP and former FileMaker developer. I do not know if this has been suggested before but a “living” online manual could be helpful. Php’s online manual has a place for users to post comments on each function and I quite often get snippets of code there that gets me over the hump. here is an example: http://us4.php.net/fgets

They explain the function, give an example, link to similar functions, and there is a place for relivent user comments/suggestions.

This method has helped thousands learn PHP and may be helpful for Servoy as well.

ApeWare:
I am a PHP and former FileMaker developer. I do not know if this has been suggested before but a “living” online manual could be helpful. Php’s online manual has a place for users to post comments on each function and I quite often get snippets of code there that gets me over the hump. here is an example: http://us4.php.net/fgets

They explain the function, give an example, link to similar functions, and there is a place for relivent user comments/suggestions.

This method has helped thousands learn PHP and may be helpful for Servoy as well.

I like that. Has the potential of being very useful.

Something like http://ldml.omnipilot.com/LDMLReference.LassoApp can be nice indeed.