trait ServiceActor extends AnyRef
ServiceActor is an actor representing a service within the goal engine system. Conceptually the API can be thought of as a simplified actor API compared to the full akka API. This API is designed to trade constraints for automation.
The ServiceFragment class is the typical base class for a domain specific addition.
To declare a new service actor, define a scala object
that inherits from this trait with a
sealed protocol Proto
. EG:
import glngn._ import glngn.prelude._ object SuitTailoringOrders extends ServiceActor { sealed trait Proto extends Message }
Technical Deep Dive - This usage pattern contains two choices for constraints. 1. service actor
will be defined in an object
. 2. a sealed trait
for Proto
.
goals:
- Explicit annotations for command and query requests.
- actor interface required by ActorService.
- bridge between ActorService and unconstrained Akka
- low/zero cost lifting of general akka behaviors / protocols
- Grouped
- Alphabetic
- By Inheritance
- ServiceActor
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
- sealed trait Attributes extends AnyRef
-
abstract
class
Command[Response] extends Request[Response] with proto.ProtoDecl.Command with proto.ProtoDecl.Request
Abstract class of all Commands.
Abstract class of all Commands. All commands are requests.
- trait CompleteWithCommandMagnet extends CompleteWithRequestMagnet
- trait CompleteWithQueryMagnet extends CompleteWithRequestMagnet
- trait CompleteWithRequestMagnet extends DelegateResponseMagnet
-
sealed
trait
Envelope extends Message
A Proto statement with inferred attributes and claims.
-
abstract
type
Proto <: Message
The commands, queries and events all implement Proto.
The commands, queries and events all implement Proto. Easy inferrence of operations schema and endpoint schema assumes the use of a sealed trait.
a typical definition
sealed trait Proto extends Message
Example: -
abstract
class
Query[Response] extends Request[Response] with proto.ProtoDecl.Query with proto.ProtoDecl.Request
Abstract class of all Queries.
Abstract class of all Queries. All queries are requests.
-
sealed abstract
class
Request[R] extends AnyRef
A Request must be sealed to use.
A Request must be sealed to use. This is necessary to finalize additional attributes; Such as requester.
TODO: #106 extends on the attributes included in sealed.
-
sealed
trait
RequestAttrs[Response] extends AnyRef
Request attributes evidenced by a set of attributes.
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
lazy val
logger: prelude.Logger
- Attributes
- protected
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
- object CompleteWithCommandMagnet
- object CompleteWithQueryMagnet
-
object
Effect
Forwards akka.persistence.typed.scaladsl.Effect with additional type constraints.
- object Envelope
-
object
Event
Any statement in the protocol can be considered an Event not associated with any additional attributes (eg: requester).
-
object
PersistentEntity
Re-export of akka.cluster.sharding.typed.scaladsl.EventSourcedEntity with types constrained to this service actor's protocol.
- object Request
- object StartPassivateEnvelope extends Envelope with Product with Serializable
- object StopEnvelope extends Envelope with Product with Serializable
glngn server is a business process as a service rapid development system. Conceptually similar to Microsoft Access or Apple FileMaker (but scalable) for event sourced business services. In addition to a library, a standalone application is provided that is useful with minimal ceremony. This can be customized with a simple API. As well as deployed to a kubernetes cluster should those advantages be required.
A deployment is cluster glngn.server.Nodes serving a dynamic composition of glngn.server.ServiceFragments. Deployments are designed to be fully usable as a standalone local application or a kubernetes service.
Contact support@dogheadbone.com for support and licensing.