Details

    • Type: New Feature New Feature
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: Backlog
    • Component/s: Server
    • Labels:
      None
    • Environment:
      Std. ESME environment

      Description

      I see the following requirements for the plugin support:

      Plugins enable process and collaboration specific additional functions on top of the ESME kernel. They are implemented in Java, located on the server and are to be provided as jar-files to ease packaging and deployment handling.
      (--> Not sure how packaging for Scala works)

      Structure/Architecture:

      • Plugins are listeners to events coming from the ESME kernel, such as MESSAGE_SENT, MESSAGE_RECEIVED, TAG_CREATED, USER_CREATED, USER_LOGGED_ON, USER_LOGGED_OFF. (more to be added)
      • A plugin can be registered to multiple events.
      • Plugins can not rely on assumptions in which order which plugin processes the incoming events. (this would require a prioritization handling for plugins)
      • Plugins performs activity initiated on the ESME server, they communicate with endusers via messages.
      • By default, plugins use the same database as ESME, they can link with database entries from the kernel tables, but do not modify or delete them.

      Deployment:

      • Plugins are to be placed for deployment in a specific directory in the ESME directory structure (to be defined).
      • Plugins get registered and subscribed to the defined events during ESME startup,
      • Deployment should be supported by the plugin through special methods (e.g. "initializePlugin", "removePlugin")

      Settings of properties:

      • Plugins can have general (=not user-specific) and user-specific settings.
      • The plugin settings are collected in a specific database table in the ESME kernel during ESME runtime.
      • Initial plugin settings are transported to ESME via specific files holding the property values.
      • Plugin settings are set either through an admin/user profile interface or through the REST interface.

        Activity

        Hide
        Darren Hague added a comment -

        On the last Structure/Architecture point, I don't think that plugins should be aware of the database in the sense of having direct access (read-only or otherwise). The persistence mechanism is already non-trivial (the Lucene index is maintained as well as the DB, the DB can be in any dialect, and is already abstracted by Lift so that not even the ESME kernel code is aware of the database layer).

        Instead, we should focus on defining an ESME Kernel API that plugins would use, which would retain the freedom to change the implementation behind the API. A wiki is probably the best place to start working on this API - I'll post a question to esme-dev to see if we have a Wiki space that we can use for ESME.

        Show
        Darren Hague added a comment - On the last Structure/Architecture point, I don't think that plugins should be aware of the database in the sense of having direct access (read-only or otherwise). The persistence mechanism is already non-trivial (the Lucene index is maintained as well as the DB, the DB can be in any dialect, and is already abstracted by Lift so that not even the ESME kernel code is aware of the database layer). Instead, we should focus on defining an ESME Kernel API that plugins would use, which would retain the freedom to change the implementation behind the API. A wiki is probably the best place to start working on this API - I'll post a question to esme-dev to see if we have a Wiki space that we can use for ESME.
        Hide
        Dick Hirsch added a comment -

        We should probably be able to support java and scala-based plug-ins.

        We have to decide whether plug-ins are just related to actions or other extension points as well.

        Show
        Dick Hirsch added a comment - We should probably be able to support java and scala-based plug-ins. We have to decide whether plug-ins are just related to actions or other extension points as well.
        Hide
        Ethan Jewett added a comment -

        Moving to Server component.

        Show
        Ethan Jewett added a comment - Moving to Server component.

          People

          • Assignee:
            Unassigned
            Reporter:
            Daniel Koller
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development