trait ServiceActor extends prelude.external.DirectLogging
This is a low level component. See ServiceFragment for the high level interface.
ServiceActor is an actor supporting a service interface: Separate Command and Query request interfaces. These are Proto types. Where Proto is the type of actor protocol. Requests imply an expected reply and requester (ServiceActor.RequestScope).
A ServiceActor can contain types in Proto that are not explicitly a Command or Query. These are referred to as Events.
To declare a new service actor, define a scala object
that inherits from this trait with a
protocol type Proto that extends serdes.Message. EG:
import glngn._ import glngn.prelude._ object SuitTailoringOrders extends ServiceActor { sealed trait Proto extends Message }
- Grouped
- Alphabetic
- By Inheritance
- ServiceActor
- DirectLogging
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
final
type
AnyRequest = Proto with Request[_]
AnyRequest is a Command or Query with no particular response type.
-
abstract
class
Command[Response] extends Request[Response] with proto.ProtoDecl.Command with proto.ProtoDecl.Request
All commands are Requests with Proto:
extends Command[R] with Proto
. -
sealed
trait
Envelope extends Product with Message with Serializable
A Proto event with additional attributes and claims.
A Proto event with additional attributes and claims. To pattern match on an Envelope use the Event.unapply or Request.unapply extractors.
val behavior: Behavior[Envelope] = Behaviors.receiveMessagePartial { case Event(SomeEvent(eventData)) => ??? case Request(scope, SomeCommand(eventData)) => ??? }
An Envelope can be implicitly constructed from any Proto.
val delegate: ActorRef[Envelope] = ??? val anEvent: Proto = SomeEvent(eventData) delegate ! anEvent
-
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
, an event type
AnEvent
inProto
sealed trait Proto extends Message case class AnEvent(msg: String) extends Proto
Examples: -
abstract
class
Query[Response] extends Request[Response] with proto.ProtoDecl.Query with proto.ProtoDecl.Request
All queries are Requests with Proto:
extends Query[R] with Proto
. -
sealed abstract
class
Request[R] extends AnyRef
A protocol event can be declared as a Request using Command or Query.
A protocol event can be declared as a Request using Command or Query. The type parameter is the response that resolves the request.
sealed trait Proto extends Message case class ExampleCommand(msg: String) extends Command[ExampleResponse] with Proto case class ExampleQuery(msg: String) extends Query[ExampleResponse] with Proto
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.external.Logger
- Attributes
- protected
- Definition Classes
- DirectLogging
-
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 Envelope extends Serializable
-
object
Event
Any statement in the protocol can be considered an Event not associated with any additional scope.
Any statement in the protocol can be considered an Event not associated with any additional scope.
- see also ServiceActor.RequestScope and Request.unapply
- object Request
- object StopEnvelope extends Envelope with Product with Serializable
glngn server is a low-code business process as a service rapid development system. Conceptually similar to a programmable Microsoft Access or Apple FileMaker for scalable 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 of glngn.server.node.AppNodes 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.