Δημοσιεύθηκε πριν πάνω από 3 χρόνια

Ακολουθεί ο πρώτος διαγωνισμός μας για φέτος, από τον χρυσό υποστηρικτή μας, την European Dynamics. Δηλώστε συμμετοχή!

Διαγωνισμός για νέους επιστήμονες πληροφορικής

 

Υποστήριξη του OpenJPA 2.3.x στο JBPM v6.x

 

Γνώρισε την Κοινότητα Ανοιχτού Λογισμικού, 

δείξε ότι μπορείς να βοηθήσεις στην επίλυση ενός πραγματικού προβλήματος σε επαγγελματικό περιβάλλον, 

κάνε το όνομά σου γνωστό, 

κέρδισε 2000€!

 

Ένα αληθινό πρόβλημα

Κατά την διάρκεια δοκιμών που πραγματοποιήθηκαν για τον έλεγχο της υποστήριξης του jBPM persistence κάνοντας χρήση του OpenJPA (αντί του Hibernate που προτείνεται από την κοινότητα του jBPM), διαπιστώθηκε ότι δεν υπάρχει συμβατότητα ανάμεσα στο OpenJPA και στο jBPM. Οι δοκιμές έγιναν με χρήση  των εκδόσεων του OpenJPA 2.3.0 και 2.2.2 ενώ όσον αφορά το jBPM οι εκδόσεις που χρησιμοποιήθηκαν ήταν οι 5.4.0.Final, 6.0.1.Final και 6.1.0.Beta2. 

Όσον αφορά την έκδοση 5 του jBPM, τα προβλήματα αφορούν κυρίως hard-coded ερωτήματα στη βάση δεδομένων στο κομμάτι του core persistence τα οποία δεν είναι συμβατά με το OpenJPA. Τα ερωτήματα αυτά κατά τη διάρκεια του JPQL parsing από το OpenJPA παράγουν exceptions του τύπου:

 org.apache.openjpa.persistence.ArgumentException. 

Στην έκδοση 6 του jBPM, τα προβλήματα αφορούν κυρίως JPA annotations στις κλάσεις των entities που περιλαμβάνονται στην υλοποίηση του persistence model. Σε όλες τις εκδόσεις του jBPM, παρουσιάζονται προβλήματα που αφορούν τα annotations των sequence generators τα οποία όμως μπορούν να επιλυθούν εύκολα με την χρήση αρχείων τύπου orm.xml όπου τα «προβληματικά» annotations γίνονται overridden μέσω της αντιστοιχίας των μεταδεδομένων.

Παρόλο που υπάρχει απαίτηση για υποστήριξη του OpenJPA από την κοινότητα του jBPM (ξεκινώντας από την έκδοση 5), αυτή δεν έχει ακόμα υλοποιηθεί από την ομάδα ανάπτυξης του jBPM. 

Η ανάγκη για υποστήριξη του OpenJPA έγκειται τόσο στο core μέρος όσο και στο human-task module του jBPM. Έτσι, το κομμάτι του persistence configuration για την core και human-task persistence στη βάση δεδομένων πρέπει να διορθωθεί και να τροποποιηθεί έτσι ώστε εκτός από Hibernate να υποστηρίζει και OpenJPA. Τα hard-coded ερωτήματα πρέπει να μετατραπούν σε named-queries και να αποτελούν μέρος των orm.xml και να υποστηριχθούν τα annotations των entities σε OpenJPA. Τέλος, πρέπει να υλοποιηθούν οι αντίστοιχες δοκιμές που αφορούν το jBPM core και human-task persistence που να δουλεύουν επιτυχώς κάτω από OpenJPA (σε αντιστοιχία με τις υπάρχουσες δοκιμές με χρήση του Hibernate).

Πως θα νικήσω σε αυτό το διαγωνισμό;

Στο διαγωνισμό αυτό για να νικήσεις θα πρέπει να υλοποιήσεις την υποστήριξη του OpenJPA στο jBPM και αυτή να γίνει δεκτή από τους developers του jBPM. Φτιάξε ένα δωρεάν λογαριασμό στο GitHub, κάνε από το λογαριασμό σου fork το  HYPERLINK "https://github.com/droolsjbpm/jbpm" και υλοποίησε τη δικιά σου λύση. Όταν είσαι έτοιμος, ετοίμασε ένα pull request και στείλε το στην ομάδα του jBPM. Μόλις το pull request σου ενσωματωθεί στον πηγαίο κώδικα της επόμενης έκδοσης του jBPM γίνεσαι αυτομάτως ο μεγάλος νικητής!

Έπαθλα και διαδικασία απονομής

Θα δοθούν 3 διαφορετικά έπαθλα:

500€ στους τρεις πρώτους που θα υλοποιήσουν ένα working solution στον προσωπικό τους λογαριασμό στο GitHub.

500€ στους δυο πρώτους που θα χρησιμοποιήσουν τη λύση τους (ή τη λύση τρίτου) μέσα σε περιβάλλον Apache Karaf 3.0.1. Τα σχετικά tests θα πρέπει και αυτά να γίνουν commit στον προσωπικό σας λογαριασμό στο GitHub.

1000€ στον πρώτο που η λύση του θα ενσωματωθεί στον πηγαίο κώδικα του jBPM.

 

Για τυχόν απορίες σχετικά με τον διαγωνισμό, μπορείτε να απευθυνθείτε εδώ: competition@eurodyn.com