0.0.1 • Published 7 years ago

service-state-string v0.0.1

Weekly downloads
3
License
ISC
Repository
github
Last release
7 years ago

service-intent-string

One succint string to expess an intent across applications.

An intent is an abstract description of an operation to be performed. An Intent provides a facility for performing late runtime binding between the code in different applications. Its most significant use is in the launching of activities, where it can be thought of as the glue between activities. It is basically a passive data structure holding an abstract description of an action to be performed. developers.android

This is an intent format for multi-app services that can be passed to an application in e.g an URL query param or fragment and then be parsed into a specific state within that application.

Features

  • URI-component safe, i.e window.encodeURIComponent(ServiceIntentString) === ServiceIntentString
  • can describe a multitude of potential intents
  • human and machine parsable
  • framework/routing agnostic
  • succint
  • extendable

Idea

Construct simple natural-language-inspired sentences to describe an intent. By constructing a simple Subject-verb-object "sentence" we should be able to express most possible intents. Only here we substitute subject with "actor" and verb with "action" to narrow things down a bit more to an application-context.

ACTOR + ACTION + OBJECT

If no OBJECT -> assume actor want's to act on itself.

. delimiter is used between subject/verb/object.

Actor

An actor within a service. Alphanumeric strings to the right of _ delimiter are more-specific actor identifiers.

  • user
  • user_82323
  • user_non-paying
  • administrator

Action

Something an actor can do

  • view
  • pay
  • configure
  • onboard

Object

Something an actor can act on. Alphanumeric strings to the right of _ delimiter are more-specific object identifiers.

  • company
  • invoice_13452

Examples

Known user wants to pay a specific invoice

  • user_3291.pay.invoice_432432

Unknown user wants to see it's profile

  • user.view

Administrator wants to configure a specific user

  • administrator_290392.configure.user_294382

Unknown user wants to view specific company

  • user.view.company_829839