DOC Query Language Internship

Location

Paris or Montpellier, France

Context

DecisionBrain is a young international company that develops and sells software solutions for decision support.

The internship will preferably take place in our offices in Montpellier (Millénaire). Remote work is possible if imposed by regulation.

Decision Optimization Center

Decisionbrain develops a platform to create, deploy and maintain fully scalable decision support solutions. Quickly, easily, efficiently. DOC accelerates the creation and deployment of decision support solutions.It is written in Java for the back-end and in Angular for the front-end, and relies on a number of technologies such as Spring, Docker, etc.

Subject

DOC is providing a data access API to query data from a generated data-model using GraphQL.

This API is generic and generated at runtime to expose the project data-model and meta-model information. It’s connected through a JPA (Hibernate Criteria) layer to a relational database (Postgresql). This API already supports requesting data with complex filter expressions. However building complex filters requires custom code because the web client (UI) does not provide a user-friendly way to create them.

JIRA software is for example exposing a such feature with its JQL query language:

https://www.atlassian.com/blog/jira-software/jql-the-most-flexible-way-to-search-jira-14.

This subject can be divided in several steps:

  • Define a query language (DSL) to express these filters with its documentation.
  • Study different parser generation libraries, and validate this can be implemented in the DOC web library (Possible candidate to implement the parser: https://sap.github.io/chevrotain).
  • Implement the corresponding dynamic parser in the DOC web library (Angular), with tests. This parser will be responsible for parsing query expressions and will output filtered queries definitions objects, consumed by the existing GraphQL APIs.
  • Integrate the parser in a UI component. This integration should be composed by a query editor provided as standard to users.
  • A validation API with suggestion capabilities would be nice.
  • Skills

    The internship subject touches a variety of technology. Most of its complexity comes from that, and probably a significant part of its interest, too. The candidate is not expected to fully master all of these technologies, but to have strong skills in a sufficient number of them to be able to acquire the missing ones. The technologies in question include:

    • Back-end development, preferably in Java. Use of a dependency injection framework such as Spring. Familiarity with databases, in particular MongoDB.
    • Front-end development, preferably with Angular.
    • Versioning systems, preferably Git. Build tools such as Gradle or Maven.

    Beyond technical skills, the candidate is expected to be autonomous and able to collaborate efficiently with other team members. Reasonable levels in spoken French and written English are mandatory.

    ----

    About DecisionBrain

    At DecisionBrain, working as a team is really in our DNA as we believe it makes us stronger and enables us to deliver better long-term results to our customers. Therefore we are looking for talented people who are not only passionate about software and high-tech and excellent in their domain, but also share our vision and values and are willing to be part of a strong team.

    Working at DecisionBrain means that you will have the opportunity to join a visionary and quickly growing young company, have a direct impact on the evolution and success of the company, evolve rapidly with a very experienced and dynamic team, and work with customers around the globe.

    Job Applicantion

    Let us know about you: What is your background? Where would you like to work? Why do you want to join DecisionBrain?


    E.g. Your Resume. Maximum 2 MB. Acceptable files .pdf, .jpeg, .docx

    .

    We thank you for your interest in DecisionBrain. We do our best to answer every application; however, if you do not hear from us within three weeks after you have submitted yours, please consider that we have currently no open position matching your profile. We would nevertheless like to keep your résumé in our database for the next twelve months from the date of your application, in case an opportunity would arise. It will automatically be deleted after this period. We may as well transfer your résumé to third parties, for the sole purpose of assessing your application.

    In addition, please note that you can at any time request the modification or deletion of your résumé from our database by contacting our Data Protection Officer.