-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
library or not: ocrd_network + reference WebAPI implementation #1047
Comments
No, that was never the intention. As written in the spec from the beginning, only the
I was not aware of it, and I actually don't care, because separation or not is just the implementation detail. From the decision viewpoint, it was decided that: the Processing Server should not be responsible for managing the queue and database anymore, and we're trying to create a |
To the original discussion, to me, the ocrd-webapi-implementation is not a library in its current state. If it wants to be a library at some point in the future, I would expect at least that:
It cannot be considered as a library just because some methods in the lower level (database/queue communication, workflow/workspace manager) are re-used somewhere else (like OPERANDI). It makes more sense to me if a library for these methods is created instead (something like |
I am more than happy with the WebAPI not being a library and I am not debating in favor of making the WebAPI a library. Just trying to clarify things. Agree with you that keeping things as they are now is a lot easier and more pleasant variant. However, it's unfortunate the least that this topic has been raised just now...
That spec has been modified so many times that I no longer recall what were the previous states. Have to check all the edit history. However, the architecture itself hints at the need for Workflow and Workspace servers. Which I would assume are provided by the
Well, exactly. Neither it makes sense to integrate the WebAPI into implementation projects or implement the
You may not care, but it's important to clarify things to not waste time with fixes and patches later. It would have been especially harder to do the separation now if the Deployer module was not introduced to separate the responsibilities between Processing and Deployment. I don't agree that it's just some implementation detail. Not when taking into account the overall error handling of all endpoints functioning together - #1015.
It is and has been for some time. Not sure when you last checked the repo in more detail. Maybe not versioned like
True, it does not expose "public" methods to manage the server itself. It exposes "public" routers, managers, DB methods, and RabbitMQ methods for the low-level implementation details to ease the implementers when extending the routes. Routers that each implementation project can reuse directly will be used. The endpoints which cannot be reused directly can be overwritten by overwriting the same routing path.
It's not just the lower-level methods... The routers are still reusable/extendible/overridable. In order to add/override routes it's not needed to inherit the server base class. At least in my experience, it does not require it. However, there may be other technical issues that I am not aware of yet. Anyway, in conclusion - the good part at least is that Operandi can continue development without relying on the WebAPI implementation and all the integration problems coming from there anymore. The endpoints will be implemented separately instead of reusing the endpoints provided by the WebAPI implementation. |
I was under the assumption that the Considering where we are now in the project progression, we need to be pragmatic and avoid wasting time however. If it helps us if |
Discussion origin.
According to my previous understanding, all endpoints (workspace, workflow, discovery...) of the WebAPI were going to be part of the
ocrd_network
package. Not just theprocessing
endpoint. That's why we were talking about completely separating the Deployer from the Processing Server here. The Deployer would then be responsible to deploy everything (including Workspace and Workflow servers) programmatically the way the RabbitMQ and MongoDB containers are deployed based on a single configuration file.@tdoan2010 has a different opinion on that. Only the processing endpoint should stay inside the
ocrd_network
. Other endpoints (workspace, workflow...) should be implemented separately by other projects by forking the latest state of the reference WebAPI implementation.In our meeting today it was decided that more thought is needed before reaching a final conclusion based on the advantages/disadvantages of both approaches.
@kba, please join the discussion.
The text was updated successfully, but these errors were encountered: