Undo changes - Link

I have updated link between bus objects and have tried to use “Undo” button a few times, but only “loading circle” has appeared and it is still updating… I suppose that if I refresh whole page, I will lost the possibility to undo some of my updates - am I right? what is the best practice to Undo some updates?

Update: after refreshing page, I received alert:
“Service error (2): Cannot invoke “com.simplicite.util.ObjectField.getName()” because the return value of “com.simplicite.util.ObjectDB.getRowIdField()” is null”

Undo button is still available, but when I click on it, I receive again “loading circle” and nothing is happening.
If I clear cache, all the recent changes will be definitely lost?

Something is wrong in your configuration, you have to check the logs (UI and back) to find/fix the cause. Loading loop / undo… are often consequences. Undo is not magic, it only make the “oposite” SQL of the last updates.

Try to undo manually your last actions and clear the cache.

The object has no row_id = it has not been loaded properly = definition issues…
Without more logs or settings we can not help you much more.

last change I remember, I was modifying link between objects and since that moment I can create only Inherit and N:N link. Nevertheless if I create Link, I cannot find Link in any of the linked objects and I also do not see any “Link” subitem in context menu Administration, eventhouhgh some Links are definitely visible in diagram and Links are also contained in some logs, see below:

2022-01-14 15:53:18,903|SIMPLICITE|INFO||https://demo.simplicite.io:20543||SQLUSER|system|DBAccess|SQL|query|SQL=jdbc/simplicite: select t.row_id, t.obu_date, t.obu_user_id, t_obu_user_id.usr_login, t.obu_session, t.obu_object, t.obu_write from m_object_usage t left outer join m_user t_obu_user_id on (t.obu_user_id=t_obu_user_id.row_id) where (t.obu_user_id=?) and (t.obu_session like ?) and (t.obu_object like ?) order by t.obu_date asc, t_obu_user_id.usr_login asc, t.row_id asc Hosts=[1][5D9179E31B0BFD2250F3B5D4B2AE2B49][ObjectInternal:2009]
2022-01-14 15:53:18,689|SIMPLICITE|INFO||https://demo.simplicite.io:20543||SQLUSER|system|DBAccess|SQL|query|SQL=jdbc/simplicite: update m_user_sysparam set updated_dt=?,updated_by=?,usp_value=? where row_id=? Hosts=[2022-01-14 15:53:18][designer][[{"object":"ObjectInternal","rowId":"2009","label":"Business object : AppClient"},
    {"object":"ObjectInternal","rowId":"2016","label":"Business object : AppInterest"},
    {"object":"Field","rowId":"8547","label":"Field : cliType"},
    {"object":"ObjectInternal","rowId":"2017","label":"Business object : AppAppClientInterestAppInterest"},
    {"object":"Field","rowId":"8545","label":"Field : cliFirstName"},
    {"object":"ObjectInternal","rowId":"2012","label":"Business object : AppAddress"},
    {"object":"Link","rowId":"18351","label":"Link : app_AppInterest_fk"},
    {"object":"Link","rowId":"18353","label":"Link : cintClientFK"},
    {"object":"Field","rowId":"8566","label":"Field : app_AppInterest_fk"},
    {"object":"Field","rowId":"8567","label":"Field : cintInterestFK"},
    {"object":"Link","rowId":"18356","label":"Link : cintClientFK"},
    {"object":"ObjectInternal","rowId":"2015","label":"Business object : AppClientInterest"},
    {"object":"Field","rowId":"8563","label":"Field : intLabel"},
    {"object":"ObjectFieldSystem","rowId":"18349","label":"Object field : AppInterest intScore 20"},
    {"object":"ObjectFieldSystem","rowId":"18348","label":"Object field : AppInterest intLabel 10"},
    {"object":"Link","rowId":"18342","label":"Link : AppClient_AppAddress_id"},
    {"object":"Field","rowId":"8561","label":"Field : cliAddressFK"},
    {"object":"Field","rowId":"10","label":"Field : fld_name"},
    {"object":"ObjectFieldSystem","rowId":"18331","label":"Object field : AppAddress adrCodePostal 20"},
    {"object":"ObjectFieldSystem","rowId":"18329","label":"Object field : AppAddress adrStreet 10"}]][16]

  • If you create a 0,N link from the modeler = it will create a field (internal Id) which references one objet
  • To create a N,N (many to many), the wizard will create a new Business objet with 2 foreign-key fields.

A “Link” is the object field properties based on a foreign-key = a field typed “internal ID” associated with the object.

For example in the Demo module :

@Francois thank you for explanation, I guess I understand this.
what I am referring to is missing completely “Link” in any object field propert as you can see in my previous screenshots eventhough I can see foreign keys still being created.
I also tried to use different modules and link different objects and the situation is the same - cannot create 0,n link.

Can you please login to our DEMO (Simplicité®) and check for example “ModelApplication_TJI” diagram - while this diagram is being loaded you can see for less than 1 second all the previously created links but then most of them immadiately dissapear.

Sorry but I don’t have “designer” credentials to connect to your instance.
You will probably need to remove the previous field(s) from your object to rebuild the link from scratch.

The Model templates has been corrupted (Model Object and BusinessObject).
Only inherited links are displayed, because the defintion of 0,N links does not exist in Model templates :

Here is the out-of-the-box template definition :

We can’t fix this because the defintion needs the “Link” objet (to list 0,n foreign keys). In your system object “Link” has been deleted.

  • You have to restore the DB before your destructive action(s)
  • or restart your training on a new instance (re-import your modules)
  • and don’t use the full designer access (no full-system rights to keep the core system safe)

The training must be done with partial access :

  • a user with responsibility ADMIN
  • but system parameter ADMIN_SYSTEM = no

Your sandbox is daily saved on a 7-days rotationg basis. We can restore any of these 7 backups.
Tell us which one youwant us to restore

Alternatively we can restore your sandbox in its initial state.

Tell us what you prefer

Thank you for explanation Francois!
Can you be more specific about your point with “partial” access"? For configuration of our instance, I am using Simplicite Administrator and provided user ‘designer’ for which, speaking at least for myself, we didnt change any responsibility… Should we just change this User Parameter ADMIN_SYSTEM=no for any other instance we will create in future or is it set by default?

Talking about restoring, I would like to save some effort spent with Creating modules, Object and Rights configuration, that is why I would choose to restart training on new instanec and import modules/objects/rights/etc.
I am afraid that if we do 7-days back restore of DB(even 14 days back), it will not be enough to fix all the configuration which needs to be restored.

First: try to export your modules (I have just restarted your instance)
Then I will start you a brand new instance to check if you can reimport them on it (and if you experiment the same issue)

Regarding ADMIN_SYSTEM system parameter you must keep it at yes for the technical user designer => the point is that you don’t use designer but rather create a personal user (e.g. admin) without this parameter (the defaut value is no) with a responsibility on the ADMIN group => this give him the same profile as designer but without the right to alter the core system configuration

Thanks for explanation about Admin user.
I already did export of Domains, Bus objects, Object Fields, Actions, List of Values, Field type and Constraints as a ZIP Full Data of object. Is there any step, how to export all the above mentioned in one step?
While trying to export Module, I used BPMN export but not sure if there is any better (more complex in terms of full data export) choice of export?

I told you to export your modules, not the individual configuration items…

The module is a key concept of the Simplicité platform, it is the first concept described in the tutorial => create a module and in our trainings.

It allow you to export (as a plain file or as a Git repo) a set of configuration items in a single package that can be easily reimported on another instance.

I am sorry but this forum dedicated to support, it is not suitable to do a full platform training.

Hello Tomas,

David is suggesting you export the work you’ve already done so you can start on a new instance.
All of the configuration you have done so far should be packaged in a unique module.

Please head to our training website : How to import/export a module to find out how to do so - watch the video - it should show a step by step guide.

I believe the training website you have been using so far isn’t the most recent one.

This is the one you should be using : https://docs2.simplicite.io, all of the content (except for the images in the top right corner) is in English.

The order in which the lessons are presented is very important.
In order to fully understand what you are configuring and how Simplicité works, we highly recommend you go though them one after the other.

I have tried to repair your instance by reimporting the core system modules (e.g. the core object Link had been deleted). It seems to work better but I can’t guarantee that this instance is working 100% well…

I propose that I create several out of the box instances as it seems that it has been used by several persons => tell me how many instances you need = one for each person. For training purposed it is more than highly recommended that each person works on its own instance.

I will leave the broken instance running so as you can export your modules if needed but don’t do any further configuration it as its behavior is unpredicible.

PS: there were some “strange” inheritance links on some of your Trn* objects => after removing them I did not experienced any further “clear cache hanging” symptom. But maybe it was also caused by the broken core system…

@Alistair @david thank you both for your help and effort!

@david can you please create 7 instances? it should be enough for training purposes even with some buffer for new-joiners.

I have created your 7 sandboxes : soliteaN.demo.simplicite.io (where N = 1…7)

Tell me when you have exported your modules from the broken solitea.demo.simplicite.io instance and I will delete it.

Maybe for the future, a much better approach would be to create you a Simplicité Instance Server (SIM) on which you will be able to manage your own instances on demand. See Simplicité® documentation/90-operation/manager

thank you David. I have already exported all relevant modules.
I believe using SIM can be helpful for future purposes!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.