Hi Ernest,
    First of all many thanks for the positive feedback and the
      interest in using Triquetrum!
    Some more info, on what Christopher already replied.
    
    Triquetrum has been designed in a way similar to Passerelle, the
    Ptolemy-based system we've been building and using within iSencia :
    the core of the system is made for headless operations and different
    GUIs can be integrated locally and/or remotely. E.g. we have a
    web-based editor and management UI in Passerelle, workflows can be
    started and monitored via REST services from any other application
    and we even have a minized Swing-based UI derived from Ptolemy's
    Vergil. But in the end the execution engine just needs to know where
    to find your workflow definition (which is typically stored in some
    XML format in files or in a DB).
    
    Concretely :
    1. We've chosen for an interface definition of the core workflow
      services, so we are free afterwards to pick different ways for
      remote access to the service implementations. I can easily migrate
      Passerelle's REST-based access implementation. Another option that
      is definitely of interest is to use the ECF framework which offers
      proxies for all kinds of remote access protocols, based on the
      remote services OSGi spec.
    
    My preference would be to have an OSGi-based headless runtime,
      and not to fall-back to bare Java or Ptolemy. In that way we can
      reuse one common code base for everything that is not UI-related
      and can keep on benefiting from all the OSGi goodies.
    
    2. There are indeed actors that are GUI-bound. There are several
      points-of-view for this, I guess, besides the info given by
      Christopher : 
    
     In my point-of-view such actors should not be used in workflows
      meant for headless/server runtimes. But that's because in our
      typical use case with Passerelle, large numbers of workflows are
      also scheduled/chained automatically and we have no guarantee that
      there is even a user present somewhere at that time. And we don't
      want actors popping up views all the time ;-) So we always store
      (intermediate) result data and then provide ways to look at the
      data at any time, also after the workflows are done. This could
      e.g. be done via a dedicated result visualization workflow using
      those display/plot actors, launched on-demand by an interested
      user.
    
    A remote real-time integration between a workbench and a runtime
      is possible, and has been implemented by DAWN at Diamond LS, on
      top of Passerelle/Ptolemy. Actors are able to open plot views,
      warning dialogs etc in the user's workbench in DAWN. The editor
      also shows the live progress through the workflow based on status
      update events received from the remote runtime. This was
      implemented via JMX. To be checked with the DAWN team about recent
      evolutions, as my info is from some years ago.
    
    Other options are possible, to be discussed separately if you
      would like to expand on this.
    
    3. My understanding is that an actual actor instance is
      effectively needed during model design time, as an actor's
      characteristics are defined during its construction. This has many
      benefits compared to separate statically defined editor
      configurations (which require duplicate work and are a maintenance
      burden as well). E.g. a configuration change on a live actor can
      be validated by it, it may cause it to dynamically create extra
      ports, etc.
    
    If it would be possible to use something like Eclipse update/install
    to distribute actors towards your workbenches, that would seem the
    easiest path forward. If we can not easily distribute extra/updated
    actor bundles in your environment in such a way, this would be a
    substantial re-engineering for the editor.
    The Triquetrum EMF model might already encapsulate the impact a bit
    though...
    
    4. Indeed, Luna support should be feasible if needed.
    
    And, likewise, thanks for reading through all of this!
    
    regards
    erwin
    
    Op 9/12/2016 om 11:54 PM schreef
      Christopher Brooks:
    
    
      
      
        
          
            
              
                
                  Hi Ernest,
                    
                  
                  Some comments below.
                  
                
 
                1. Headless.  This is probably best answered by Erwin. 
                
                
              
 
              2. Remote GUIs.  The short answer is basically "no, but". 
              Here are the "buts"
              
              DisplayInterface and PlotterBase were part of an display
              output remotely called HandSimDroid.  Below is a summary
              of this work:
              
              
In 2011, the HandSimDroid
                project developed a prototype that allows Ptolemy models
                to run under Android.
                Students from CMU:
                
                
                  - Anar Huseynov
                  
- Justin Killian
                  
- Ishwinder Singh
                  
worked with Bosch researchers:
                
                
                  - Elizabeth Latronico
                  
- Charles Shelton
                  
and Berkeley researchers to
                  re-architect a portion of Ptolemy II so that models
                  could run on a server and be displayed on a
                  low-powered handset.
                
                The code for this effort is in
                
                
                  - $PTII/ptolemy/ptserver
                  
- $PTII/ptolemy/homer
                  
- $PTII/ptolemy/actor/gui and $PTII/ptolemy/plot
                    were modified to support displaying on a remote
                    machine. 
              We looked at SWT and at the time it did not work for us
              under Mac OS X.  See 
https://chess.eecs.berkeley.edu/triq/wiki/Main/EclipseAndAWT
              
             
            One of the Triquetrum bugs is to build an interface to
            PtPlot, which is Swing-baseed and part of Ptolemy II.  Erwin
            prototyped an interface to a more Eclipse-centric plotter,
            see 
https://wiki.eclipse.org/Triquetrum/Extending_Triquetrum
            
           
          There are a bunch of different ways to display data
            remotely.   These days we typically use a VNC application to
            log in to a remote machine and view the data that way. 
            Erwin probably has some input here.
          
          
          
          3. Actor Descriptions vs Actor Instantiation.  This is a
          thorny issue, here are some thoughts.
          
        
 
        Ptolemy II has ptolemy.kernel.LazyComposite. 
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII10.0/ptII10.0.1/doc/codeDoc/ptolemy/kernel/util/LazyComposite.html
        says:
        
        
A marker interface for lazy
          composites. A lazy composite is a CompositeEntity that does
          not automatically populate itself with contained entities and
          relations when it is instantiated. It does populate itself
          with attributes and ports, but the contained entities and
          relations are not created until they are explicitly requested.
           Note that a class that implements this interface cannot
            have parameters whose values are expressions that refer to
            contained entities or relations or attributes contained by
            those. This is a rather esoteric use of expressions, so this
            limitation may not be onerous.
        
        So, you could delay instantiation by using LazyComposite. 
          I'm not sure how you would edit the model composite without
          instantiation.
          
        
        
        Actor-oriented classes are not a solution in themselves,
          but they could help.  The Triquetrum RCP model editor does not
          yet support Actor-Oriented Classes.  There is an open issue
          for this: 
https://github.com/eclipse/triquetrum/issues/78
          
        Note that combining LazyComposites and Actor-Oriented
          Classes is very tricky and likely to have bugs.
          
        
        The way I would do it is to create a facade actor that had
          the ports and parameters that would be set at model creation
          time.  The facade actor would then instantiate a named class
          at runtime and do the transfer of data.  We probably already
          almost do this with some of the higher-order function classes
          in actor/lib/hoc.
          
        
        So, I think this would require some engineering time, but
          would be solvable.  If Edward does not reply to this message,
          then try posting to the ptolemy-hackers list.
          
        
        4. Luna: Sure, I'm open to supporting Luna if it does not
          break the current support for Neon.  I did the port from Luna
          to Neon, see 
https://github.com/eclipse/triquetrum/issues/104. 
          The reason to support Neon is because it is the current
          release of Eclipse and it seems like a good idea.  I don't
          think we have any other reasons to move to Neon.
          
          
        
_Christopher
        
        
        
        
        
       
      
      
      
      
      _______________________________________________
triquetrum-dev mailing list
triquetrum-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/triquetrum-dev