HI Herru,
Once again thanks for your input.
I thing that only option 1 and 2 are viable so I'm already testing this two scenarios.
Both scenarios I was able to put them to work, at least as an example for each one and, due to the flexibility that provides the scenario 2 seems more interesting for me but I have 2 problems:
- First of all, as i already talked about it on this thread, I wasn't able to put SOAP web service to work.
- The second is related with the time that takes to sync a class. For instance I was loading a class via Rest web service and it takes around 3h to create 27k cards. There is anything that i can do to improve this performance?
One minor problem that I have, and that I already reply to another topic on this forum about that, is related with the update of on relation. I always get an error via Rest and i notice that via SOAP this operation isn't provided. This indicates that even via Rest we are not able to perform this kind of operation?
Best Regards,
David Santos
Previously Herru Windiarto wrote:
Hi David,
To do this, there are some approaches:
1. You can first prepare your data in a temporary table in CMDBuild or another JDBC supported database, then create basic connector in task manager from CMDBuild Administration module. Basic connector allow you to specify the frequency of sync porcess from temporary table to CMDBuild class. From my experience, I found issue in sync process if the data type not string (numeric, date, etc.). Unnecessary update will happen if data type not string, even if there is no changes. This lead to increment of history data every time the task run.
2. You can use CMDBuild SOAP/RESTful web service. You have to identify changes in your master table and update data in CMDBuild using web service.
3. You can access directly to CMDBuild DB (I'm not sure whether this is recomended by Tecnoteca or not :)). CMDBuild implement some trigger and function in PostgreSQL, to maintain data integrity and history. So, when you execute delete statement, it will won't delete anything. For deleting you need to run update statement to your class table, set the "Status" = 'N', but you need to delete the relation from Map* table and GIS table first. For update, you can simply run update statement to active card, PostgreSQL will backup the old card to history, so you will see there will be new data inserted with "Status" = 'U' when you do update. For insert, simple insert statement with "Status" = 'A' will do, PostgreSQL will generate new Id.
Those are my sugestion, but please do test and explore it yourself to make sure.
Regards,
Herru
Previously David wrote:
Hi Herru,
My purpose or my necessity is to have an ETL process built over the cmdbuild to allow the loading, update or delete of the information stored on the application.
If I go directly to the database I will not follow the logic defined on the application so i might get some errors, isn't that right?
Thanks,
David Santos
Previously Herru Windiarto wrote:
Hello,
CMDBuild web service (SOAP and REST) provide method to search, add, modify, delete card. But for bulk data processing, I think it's easier by direct access to CMDBuild PostgreSQL DB.
Regards,
Herru
Previously David wrote:
Hi Herru,
Thanks for your suggestion.
Effectively by Rest, after some fight, I was able to connect and to do some request to cmdbuild.
Regarding the API method there is nothing to do in order to solve the problem?
Thanks,
David Santos
Previously Herru Windiarto wrote:
Hello David,
Before moving further, maybe you can try RESTful client. For me, it's simpler and relatively faster.
Regards,
Herru