Server side solution for generating ODF reports
Weng, Franklin
The National Development Council in Taiwan have asked the OSSII, a local LibreOffice service provider, to develop a solution that can directly generate ODF reports, while the servers in public administrations do not need to change a lot. To adopt ODF and LibreOffice in Taiwan, a very important part, besides desktop applications, is to ask the reports generated from servers in all the public administrations to be in ODF format. Currently almost all reports are in Microsoft office format; some of them are even non-standard - they can be opened by Microsoft Excel, but can not be converted by LibreOffice. Hence, the National Development Council asked the OSSII, a local LibreOffice service provider, to develop a solution that can directly generate ODF reports, while the server side do not need to change a lot. This talk gives a simple introduction of how this solution works.
 I give you the microphone. Hello, hello. Good morning, everyone. I'm Frank Lin from Taiwan. Recently, recent years, we have a huge progress about adopting ODF and also liberal abuse in Taiwan. But because this is not the topic of today's talk, so if you are interested in Taiwan's story, just a few days before the joint-up, the OSOR, they had a case study of Taiwanese government, how to do that, and what we have done, and what's our thoughts. So I recommend you to read this one about what we have done in Taiwan. And today I'm going to live demo you another problem we need to solve during this year. We find another problem. Because what we have done so far is about crime. That means users use liberal abuse or use our derivatives from liberal abuse to generate ODF files and attach it in the mail of your document. But there is still another problem here. Usually it will be from the server because always we have many servers that need to generate reports. And this is the current flow. In an agency, a user needs to generate reports from the server and send it to another unit. He will say, oh, I want this and that report, and send this request to who to see the enemy. He managed the server, but the user does not generate the report himself. He requires the system to have the service, because most of the databases are here, so they will need to generate here. And each server needs a dedicated module to generate this report. That's because of license issue. And then later I'll tell you what kind of report it generates and what is the module in the next page. Almost all, maybe not all, but almost all of the module that will need to be integrated into the information system is this. It's called the CRISPR-Rita. I don't know if any of you know this. It will just get some input and generate a report to you. But this CRISPR-Rita report, if we see what file format it is, we'll find out no ODF. So now our users in our agency face a problem, because our server does not generate ODF format report, but they are asked to send reports and any attachments in ODF. So can I directly convert it? Mostly it will be saved as Microsoft format, maybe DOC, maybe DOCX, maybe XLS. But if we directly open it in LibreOffice, that would be like this. I can directly link them to you. This file is a typical CRISPR-Rita generated report. And if we directly open it, you can see that the file extension is DOC. But if we open it with LibreOffice, it will become like this. Here is the content, but you will see a lot of strange comments. Here, here, a lot, and something is wrong, anything. And if you really see what it is, you'll find out that actually it is HTML. So that means the CRISPR report generates files in HTML, but named it in DOC or in SOS. And amazingly, that Microsoft Word and Excel can open it correctly. But in LibreOffice, we have problems. It's not easy to directly convert such kind of DOC or XLS to ODTO or DS. So this is the screenshot. Actually, it is in HTML file. Besides this converting problem, there are also other annoying problems like this. First, you can see that almost all the server needs one module installed here. But we have many public agencies, different counties, cities, so many different units. They may use different versions of CRISPR-Rita, and they may generate different versions of format. That's one of the problems. It's difficult to integrate with each other, because it has no standard. The second is that each single server needs to install one CRISPR-Rita report. It's because of lessons issue. So if we have 10 servers managed to generate reports, we need to have 10 modules integrated into those. There may be different servers, different services on those servers, but each one we need to integrate once. So it's also difficult to manage so many different servers or difficult to integrate them together. So some developers in the government would say, if so, let us generate ODF directly. So they would do that this way. They would create a standard ODF like ODT and put everything inside. But then what they need to do? When they need to generate reports, they need to extract this ODT and find the content they want to replace in many XML tags. And then replace it, pack it back. What if they all the fields changes? So all this work needs to do again. So it's also a pain for those systems to directly generate ODF reports, because it should be multiple data, dynamic data. But they can only generate one template, but they need to replace the data inside the XML tag and then pack back. So from last year, our National Development Council, that's the main unit that's responsible for promoting ODF and making it a national policy. So they ask our local developers, company name OSSI, they do the service from open office to developer office, it's more than 10 years. So we all are together to promote ODF in Taiwan. So they ask them to develop this, we call it NDC ODF API service. Now let me show you. The steps to generate reports are very simple. The first one is to build a server. I will show you step by step and life demo to you later. We just need to create a server first and create a report template. The second step I will tell you, it will be done by the user, not C-server. And upload to this server and get a REST for API. Then what the server needs to do is only to send an UI calling the server's API to generate with data and the report will be generated. The first is we can see create a server, we have put it on GitHub. So you can find it in the GitHub, if I NDC ODF, here's API service. Then we have a demo server here. This one is the demo server built on our NDC office, the machine room. So this is a demo, of course it has to log in. You can have different account and credentials. So let me log in again. This is the first, we have already built a service. Then the second step is to create a report. Now I will direct the demo. This one is LibreOfficeDervations, it is custom by LibreOffice 5.2.7 and this NDC ODF application tool. The target of this is very simple because many users in the public agencies, they have no idea which version of LibreOffice they want to use. They have no idea what is free-source. We just tell them, if you need to generate ODF files, you just use this. In 2017, the ODF prof, I also tested that. This is currently in government, this is the most use of this. We have a tool, this is a wizard to generate the template. It is simple to generate. Let's start the demo report template and always remember to use the style. Then here we put many fields, data fields inside it. The name of the field can be in Chinese. Here are the different kind of fields. Then we have a few here. This template is created by users but they need to let the user know what it is. Sometimes we will add some comments here. Then let's put a date here. Then we put a table. We put field name here. Also we have the checkbox. We can say if this report is credential or not. Then this is a demo template but sometimes we need some fields to be repeated. We choose this field and put here, this is repeatable. The simple template is generated. We save it as OTT text template. Demo report template. After saving it, we can close that. Then back to this system, I just need to upload this. Demo report for FOSTAEM. In the government, there may be many different categories of reports. Then we upload it OTT file. After uploading it, here, you can see this is JSON format example. This is YAM format example. If we click this, you can see this. This is the API URL. We just copy that. Here are the demo example format of JSON and YAM. We copy it. Now we upload. Then we use swagger.io to simulate the server-side behavior. It's here. In this, the API we just generated, it follows a spec named open API spec. I'm not sure if it's version 2 or version 3 but we follow that spec. Now this one is to simulate the one we just copied. Now we want to get API. It's pro. Then we can find, we have some method, get or post. The post is you can post data with JSON format. Here we set it to JSON. Now we can try. This is the report generator. This is the generator day. The credential or not, maybe false. Here are the username. This is the phone number. Then we can have repeatable data. Here is repeatable. We can copy that and generate the second and the third. We say ODF rocks. It's in Brunsel. The third one is the browser rocks2. We edit the data and then we execute it. That means we just sent this post request. Then you can see this. This is exactly what the server sent. JSON data error. The call is OK. You are here. We can try to download it. This time we download it as ODT. It's generated report. Here is the generated report. We have the URL here. From the server side, what you need to do is only when you need to generate the report, you just need to send this out. Save it as another ODT file. We just use command line to send it out. Then it can be generated too. That's it. Let's get back here. It's very simple. The flow now becomes like this. When the users, the unit in the government needs to generate ODF reports, the first thing is that they can generate themself because only them knows what they want. With the help of our template reason, they can put fields here and there. After generating the templates, it just uploads the template to the ODF API server. Just like what you see here. Here. It will generate the API that you need to call. It will generate the API who needs to know the API, only the citizen needs to know. Now this time, they don't need to install any other module in their servers. All they want is just to send a URL. You see URL or double get to send a post of data. He just called API and filled the data and it will generate the ODF file that you can directly send to the user. It's true standard ODF files. The whole flow becomes very simple and they don't need to worry about we need to install so many modules. The advantage is very obvious. The server setters need to rewrite the whole file report rating module. Now it's used for only generating HTML file with DOC extension. Now they don't need to rewrite anything. They just need to call the API. Actually for the server setters, it doesn't matter which programming language they use to create this server. Sometimes they will say I will have the module but I'm written in Ruby but this server is written in C++. I don't know how to integrate them together. No, this time because we only just require HTTP. It does not matter how to generate the original server. Also the server does not need to generate upgrade the tools. If any of the templates needs to update, you need to change some fields. You just need to modify and you just need to upload it again. It will create new API and you just call with new API. No one will need to worry about the data fields or layout changes. It's just created by user and tell the user I update these templates. They just need to replace the URL. Everything will be defined in the report templates which really use this report. I think this one is a very important tool especially for ODEF in government because actually report generation is an important part in the government. Right now they are all in non-standard Microsoft format. This tool will be online this year and the code is here. We have open source it so everyone can build your own server and try and of course purchase our work home. That's my demo. If anyone has questions, please speak slowly. Do you have any questions? The rhythm is in Chinese but I think it's easy for you to understand that so far. Maybe because we do it for Taiwanese government but of course we can try to make it international and maybe everyone who is interested can have to send patches. Of course. No questions. Thank you. Thank you.
 I give you the microphone.  Hello, hello.  Good morning, everyone. I'm Frank Lin from Taiwan.  Recently, recent years, we have a huge progress about adopting ODF and also liberal abuse in Taiwan.  But because this is not the topic of today's talk, so if you are interested in Taiwan's story, just a few days before the joint-up, the OSOR, they had a case study of Taiwanese government, how to do that, and what we have done, and what's our thoughts.  So I recommend you to read this one about what we have done in Taiwan.  And today I'm going to live demo you another problem we need to solve during this year. We find another problem.  Because what we have done so far is about crime. That means users use liberal abuse or use our derivatives from liberal abuse to generate ODF files and attach it in the mail of your document.  But there is still another problem here. Usually it will be from the server because always we have many servers that need to generate reports.  And this is the current flow. In an agency, a user needs to generate reports from the server and send it to another unit.  He will say, oh, I want this and that report, and send this request to who to see the enemy. He managed the server, but the user does not generate the report himself.  He requires the system to have the service, because most of the databases are here, so they will need to generate here.  And each server needs a dedicated module to generate this report. That's because of license issue.  And then later I'll tell you what kind of report it generates and what is the module in the next page.  Almost all, maybe not all, but almost all of the module that will need to be integrated into the information system is this. It's called the CRISPR-Rita.  I don't know if any of you know this. It will just get some input and generate a report to you.  But this CRISPR-Rita report, if we see what file format it is, we'll find out no ODF.  So now our users in our agency face a problem, because our server does not generate ODF format report, but they are asked to send reports and any attachments in ODF.  So can I directly convert it?  Mostly it will be saved as Microsoft format, maybe DOC, maybe DOCX, maybe XLS.  But if we directly open it in LibreOffice, that would be like this. I can directly link them to you.  This file is a typical CRISPR-Rita generated report.  And if we directly open it, you can see that the file extension is DOC. But if we open it with LibreOffice, it will become like this.  Here is the content, but you will see a lot of strange comments.  Here, here, a lot, and something is wrong, anything. And if you really see what it is, you'll find out that actually it is HTML.  So that means the CRISPR report generates files in HTML, but named it in DOC or in SOS.  And amazingly, that Microsoft Word and Excel can open it correctly.  But in LibreOffice, we have problems. It's not easy to directly convert such kind of DOC or XLS to ODTO or DS.  So this is the screenshot. Actually, it is in HTML file.  Besides this converting problem, there are also other annoying problems like this.  First, you can see that almost all the server needs one module installed here.  But we have many public agencies, different counties, cities, so many different units.  They may use different versions of CRISPR-Rita, and they may generate different versions of format.  That's one of the problems. It's difficult to integrate with each other, because it has no standard.  The second is that each single server needs to install one CRISPR-Rita report.  It's because of lessons issue.  So if we have 10 servers managed to generate reports, we need to have 10 modules integrated into those.  There may be different servers, different services on those servers, but each one we need to integrate once.  So it's also difficult to manage so many different servers or difficult to integrate them together.  So some developers in the government would say, if so, let us generate ODF directly.  So they would do that this way. They would create a standard ODF like ODT and put everything inside.  But then what they need to do? When they need to generate reports, they need to extract this ODT and find the content they want to replace in many XML tags.  And then replace it, pack it back.  What if they all the fields changes? So all this work needs to do again.  So it's also a pain for those systems to directly generate ODF reports, because it should be multiple data, dynamic data.  But they can only generate one template, but they need to replace the data inside the XML tag and then pack back.  So from last year, our National Development Council, that's the main unit that's responsible for promoting ODF and making it a national policy.  So they ask our local developers, company name OSSI, they do the service from open office to developer office, it's more than 10 years.  So we all are together to promote ODF in Taiwan. So they ask them to develop this, we call it NDC ODF API service.  Now let me show you. The steps to generate reports are very simple. The first one is to build a server.  I will show you step by step and life demo to you later.  We just need to create a server first and create a report template.  The second step I will tell you, it will be done by the user, not C-server.  And upload to this server and get a REST for API.  Then what the server needs to do is only to send an UI calling the server's API to generate with data and the report will be generated.  The first is we can see create a server, we have put it on GitHub. So you can find it in the GitHub, if I NDC ODF, here's API service.  Then we have a demo server here. This one is the demo server built on our NDC office, the machine room.  So this is a demo, of course it has to log in. You can have different account and credentials. So let me log in again.  This is the first, we have already built a service. Then the second step is to create a report.  Now I will direct the demo.  This one is LibreOfficeDervations, it is custom by LibreOffice 5.2.7 and this NDC ODF application tool.  The target of this is very simple because many users in the public agencies, they have no idea which version of LibreOffice they want to use.  They have no idea what is free-source. We just tell them, if you need to generate ODF files, you just use this.  In 2017, the ODF prof, I also tested that. This is currently in government, this is the most use of this.  We have a tool, this is a wizard to generate the template. It is simple to generate.  Let's start the demo report template and always remember to use the style.  Then here we put many fields, data fields inside it. The name of the field can be in Chinese.  Here are the different kind of fields. Then we have a few here.  This template is created by users but they need to let the user know what it is.  Sometimes we will add some comments here.  Then let's put a date here. Then we put a table.  We put field name here.  Also we have the checkbox. We can say if this report is credential or not.  Then this is a demo template but sometimes we need some fields to be repeated.  We choose this field and put here, this is repeatable.  The simple template is generated. We save it as OTT text template.  Demo report template.  After saving it, we can close that. Then back to this system, I just need to upload this.  Demo report for FOSTAEM.  In the government, there may be many different categories of reports.  Then we upload it OTT file.  After uploading it, here, you can see this is JSON format example.  This is YAM format example. If we click this, you can see this.  This is the API URL.  We just copy that. Here are the demo example format of JSON and YAM.  We copy it.  Now we upload.  Then we use swagger.io to simulate the server-side behavior.  It's here.  In this, the API we just generated, it follows a spec named open API spec.  I'm not sure if it's version 2 or version 3 but we follow that spec.  Now this one is to simulate the one we just copied.  Now we want to get API.  It's pro.  Then we can find, we have some method, get or post.  The post is you can post data with JSON format.  Here we set it to JSON.  Now we can try. This is the report generator.  This is the generator day.  The credential or not, maybe false.  Here are the username.  This is the phone number.  Then we can have repeatable data.  Here is repeatable.  We can copy that and generate the second and the third.  We say ODF rocks.  It's in Brunsel.  The third one is the browser rocks2.  We edit the data and then we execute it.  That means we just sent this post request.  Then you can see this.  This is exactly what the server sent.  JSON data error.  The call is OK.  You are here.  We can try to download it.  This time we download it as ODT.  It's generated report.  Here is the generated report.  We have the URL here.  From the server side, what you need to do is only  when you need to generate the report,  you just need to send this out.  Save it as another ODT file.  We just use command line to send it out.  Then it can be generated too.  That's it.  Let's get back here.  It's very simple.  The flow now becomes like this.  When the users, the unit in the government needs to generate  ODF reports, the first thing is that they can generate  themself because only them knows what they want.  With the help of our template reason,  they can put fields here and there.  After generating the templates,  it just uploads the template to the ODF API server.  Just like what you see here.  Here.  It will generate the API that you need to call.  It will generate the API who needs to know the API,  only the citizen needs to know.  Now this time, they don't need to install any other module  in their servers.  All they want is just to send a URL.  You see URL or double get to send a post of data.  He just called API and filled the data and it will generate  the ODF file that you can directly send to the user.  It's true standard ODF files.  The whole flow becomes very simple and they don't need to  worry about we need to install so many modules.  The advantage is very obvious.  The server setters need to rewrite the whole  file report rating module.  Now it's used for only generating HTML file with  DOC extension.  Now they don't need to rewrite anything.  They just need to call the API.  Actually for the server setters, it doesn't matter  which programming language they use to create this server.  Sometimes they will say I will have the module but I'm  written in Ruby but this server is written in C++.  I don't know how to integrate them together.  No, this time because we only just require HTTP.  It does not matter how to generate the original server.  Also the server does not need to  generate upgrade the tools.  If any of the templates needs to update, you need to  change some fields.  You just need to modify and you just need to  upload it again.  It will create new API and you just call with new  API.  No one will need to worry about the data fields or  layout changes.  It's just created by user and tell the  user I update these templates.  They just need to replace the URL.  Everything will be defined in the report templates which  really use this report.  I think this one is a very important tool especially for  ODEF in government because actually report  generation is an important part in the government.  Right now they are all in non-standard  Microsoft format.  This tool will be online this year and the code is here.  We have open source it so everyone can build your own  server and try and of course purchase our work home.  That's my demo.  If anyone has questions, please speak slowly.  Do you have any questions?  The rhythm is in Chinese but I think it's easy for you to  understand that so far.  Maybe because we do it for Taiwanese government but of  course we can try to make it international and maybe  everyone who is interested can have to send patches.  Of course.  No questions.  Thank you.  Thank you.
Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_0_143.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_144_599.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_600_2627.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_2628_8279.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_8280_8327.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_8328_8855.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_8856_9335.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_9336_9647.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_9648_10511.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_10512_10595.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_10596_18263.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_18264_23027.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_23028_23111.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_23112_23579.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_23580_23639.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_23640_24995.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_24996_25547.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_25548_26399.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_26400_26567.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_26568_26747.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_26748_29111.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_29112_29183.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_29184_29819.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_29820_29939.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_29940_30023.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_30024_30335.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_30336_30431.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_30432_30695.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_30696_30923.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_30924_31511.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_31512_31691.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_31692_32831.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_32832_35807.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_35808_36071.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_36072_40067.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_40068_40235.png Server_side_solution_for_generating_ODF_reports_An_important_step_to_adopt_ODF_40236_40358.png
I give you the microphone. Hello, hello. Good morning, everyone. I'm Frank Lin from Taiwan. Recently, recent years, we have a huge progress about adopting ODF and also liberal abuse in Taiwan. But because this is not the topic of today's talk, so if you are interested in Taiwan's story, just a few days before the joint-up, the OSOR, they had a case study of Taiwanese government, how to do that, and what we have done, and what's our thoughts. So I recommend you to read this one about what we have done in Taiwan. And today I'm going to live demo you another problem we need to solve during this year. We find another problem. Because what we have done so far is about crime. That means users use liberal abuse or use our derivatives from liberal abuse to generate ODF files and attach it in the mail of your document. But there is still another problem here. Usually it will be from the server because always we have many servers that need to generate reports. And this is the current flow. In an agency, a user needs to generate reports from the server and send it to another unit. He will say, oh, I want this and that report, and send this request to who to see the enemy. He managed the server, but the user does not generate the report himself. He requires the system to have the service, because most of the databases are here, so they will need to generate here. And each server needs a dedicated module to generate this report. That's because of license issue. And then later I'll tell you what kind of report it generates and what is the module in the next page. Almost all, maybe not all, but almost all of the module that will need to be integrated into the information system is this. It's called the CRISPR-Rita. I don't know if any of you know this. It will just get some input and generate a report to you. But this CRISPR-Rita report, if we see what file format it is, we'll find out no ODF. So now our users in our agency face a problem, because our server does not generate ODF format report, but they are asked to send reports and any attachments in ODF. So can I directly convert it? Mostly it will be saved as Microsoft format, maybe DOC, maybe DOCX, maybe XLS. But if we directly open it in LibreOffice, that would be like this. I can directly link them to you. This file is a typical CRISPR-Rita generated report. And if we directly open it, you can see that the file extension is DOC. But if we open it with LibreOffice, it will become like this. Here is the content, but you will see a lot of strange comments. Here, here, a lot, and something is wrong, anything. And if you really see what it is, you'll find out that actually it is HTML. So that means the CRISPR report generates files in HTML, but named it in DOC or in SOS. And amazingly, that Microsoft Word and Excel can open it correctly. But in LibreOffice, we have problems. It's not easy to directly convert such kind of DOC or XLS to ODTO or DS. So this is the screenshot. Actually, it is in HTML file. Besides this converting problem, there are also other annoying problems like this. First, you can see that almost all the server needs one module installed here. But we have many public agencies, different counties, cities, so many different units. They may use different versions of CRISPR-Rita, and they may generate different versions of format. That's one of the problems. It's difficult to integrate with each other, because it has no standard. The second is that each single server needs to install one CRISPR-Rita report. It's because of lessons issue. So if we have 10 servers managed to generate reports, we need to have 10 modules integrated into those. There may be different servers, different services on those servers, but each one we need to integrate once. So it's also difficult to manage so many different servers or difficult to integrate them together. So some developers in the government would say, if so, let us generate ODF directly. So they would do that this way. They would create a standard ODF like ODT and put everything inside. But then what they need to do? When they need to generate reports, they need to extract this ODT and find the content they want to replace in many XML tags. And then replace it, pack it back. What if they all the fields changes? So all this work needs to do again. So it's also a pain for those systems to directly generate ODF reports, because it should be multiple data, dynamic data. But they can only generate one template, but they need to replace the data inside the XML tag and then pack back. So from last year, our National Development Council, that's the main unit that's responsible for promoting ODF and making it a national policy. So they ask our local developers, company name OSSI, they do the service from open office to developer office, it's more than 10 years. So we all are together to promote ODF in Taiwan. So they ask them to develop this, we call it NDC ODF API service. Now let me show you. The steps to generate reports are very simple. The first one is to build a server. I will show you step by step and life demo to you later. We just need to create a server first and create a report template. The second step I will tell you, it will be done by the user, not C-server. And upload to this server and get a REST for API. Then what the server needs to do is only to send an UI calling the server's API to generate with data and the report will be generated. The first is we can see create a server, we have put it on GitHub. So you can find it in the GitHub, if I NDC ODF, here's API service. Then we have a demo server here. This one is the demo server built on our NDC office, the machine room. So this is a demo, of course it has to log in. You can have different account and credentials. So let me log in again. This is the first, we have already built a service. Then the second step is to create a report. Now I will direct the demo. This one is LibreOfficeDervations, it is custom by LibreOffice 5.2.7 and this NDC ODF application tool. The target of this is very simple because many users in the public agencies, they have no idea which version of LibreOffice they want to use. They have no idea what is free-source. We just tell them, if you need to generate ODF files, you just use this. In 2017, the ODF prof, I also tested that. This is currently in government, this is the most use of this. We have a tool, this is a wizard to generate the template. It is simple to generate. Let's start the demo report template and always remember to use the style. Then here we put many fields, data fields inside it. The name of the field can be in Chinese. Here are the different kind of fields. Then we have a few here. This template is created by users but they need to let the user know what it is. Sometimes we will add some comments here. Then let's put a date here. Then we put a table. We put field name here. Also we have the checkbox. We can say if this report is credential or not. Then this is a demo template but sometimes we need some fields to be repeated. We choose this field and put here, this is repeatable. The simple template is generated. We save it as OTT text template. Demo report template. After saving it, we can close that. Then back to this system, I just need to upload this. Demo report for FOSTAEM. In the government, there may be many different categories of reports. Then we upload it OTT file. After uploading it, here, you can see this is JSON format example. This is YAM format example. If we click this, you can see this. This is the API URL. We just copy that. Here are the demo example format of JSON and YAM. We copy it. Now we upload. Then we use swagger.io to simulate the server-side behavior. It's here. In this, the API we just generated, it follows a spec named open API spec. I'm not sure if it's version 2 or version 3 but we follow that spec. Now this one is to simulate the one we just copied. Now we want to get API. It's pro. Then we can find, we have some method, get or post. The post is you can post data with JSON format. Here we set it to JSON. Now we can try. This is the report generator. This is the generator day. The credential or not, maybe false. Here are the username. This is the phone number. Then we can have repeatable data. Here is repeatable. We can copy that and generate the second and the third. We say ODF rocks. It's in Brunsel. The third one is the browser rocks2. We edit the data and then we execute it. That means we just sent this post request. Then you can see this. This is exactly what the server sent. JSON data error. The call is OK. You are here. We can try to download it. This time we download it as ODT. It's generated report. Here is the generated report. We have the URL here. From the server side, what you need to do is only when you need to generate the report, you just need to send this out. Save it as another ODT file. We just use command line to send it out. Then it can be generated too. That's it. Let's get back here. It's very simple. The flow now becomes like this. When the users, the unit in the government needs to generate ODF reports, the first thing is that they can generate themself because only them knows what they want. With the help of our template reason, they can put fields here and there. After generating the templates, it just uploads the template to the ODF API server. Just like what you see here. Here. It will generate the API that you need to call. It will generate the API who needs to know the API, only the citizen needs to know. Now this time, they don't need to install any other module in their servers. All they want is just to send a URL. You see URL or double get to send a post of data. He just called API and filled the data and it will generate the ODF file that you can directly send to the user. It's true standard ODF files. The whole flow becomes very simple and they don't need to worry about we need to install so many modules. The advantage is very obvious. The server setters need to rewrite the whole file report rating module. Now it's used for only generating HTML file with DOC extension. Now they don't need to rewrite anything. They just need to call the API. Actually for the server setters, it doesn't matter which programming language they use to create this server. Sometimes they will say I will have the module but I'm written in Ruby but this server is written in C++. I don't know how to integrate them together. No, this time because we only just require HTTP. It does not matter how to generate the original server. Also the server does not need to generate upgrade the tools. If any of the templates needs to update, you need to change some fields. You just need to modify and you just need to upload it again. It will create new API and you just call with new API. No one will need to worry about the data fields or layout changes. It's just created by user and tell the user I update these templates. They just need to replace the URL. Everything will be defined in the report templates which really use this report. I think this one is a very important tool especially for ODEF in government because actually report generation is an important part in the government. Right now they are all in non-standard Microsoft format. This tool will be online this year and the code is here. We have open source it so everyone can build your own server and try and of course purchase our work home. That's my demo. If anyone has questions, please speak slowly. Do you have any questions? The rhythm is in Chinese but I think it's easy for you to understand that so far. Maybe because we do it for Taiwanese government but of course we can try to make it international and maybe everyone who is interested can have to send patches. Of course. No questions. Thank you. Thank you.
Taiwanese government, how to do that, and what we server because always we have many servers that the content, but you will see a lot of strange that almost all the server needs one module systems to directly generate ODF reports, because Development Council, that's the main unit that's service from open office to developer office, to promote ODF in Taiwan. So they ask them to are very simple. The first one is to build a will be generated. The first is we can see create many users in the public agencies, they have no URL here. From the server side, what you need to reports, the first thing is that they can templates needs to update, you need to change this one is a very important tool especially for generation is an important part in the non-standard Microsoft format. This tool will be