Quartz::MultiComponent::Component
Inherits Quartz::Stateful / Quartz::Verifiable / Quartz::Observable / Quartz::Schedulable / Quartz::Model / Reference / Object
Constants
Constructors
Class methods
Passes the model off to the class or classes specified and allows them to add errors based on more complex conditions.
class MyModel
include Quartz::Verifiable
check_with MyVerifier
end
class MyVerifier < Quartz::Verifiers::RuntimeChecker
def validate(model)
if some_test
model.errors.add(:phase, "This model state is invalid")
end
end
# ...
end
Passes the model off to the class or classes specified and allows them to add errors based on more complex conditions.
class MyModel
include Quartz::Verifiable
check_with MyVerifier
end
class MyVerifier < Quartz::Verifiers::EachChecker
def check_each(model, attribute, value)
if some_test
model.errors.add(attribute, "This model attribute is invalid")
end
end
# ...
end
Instance methods
This is the default definition of the confluent transition. Here the internal transition is allowed to occur and this is followed by the effect of the external transition on the resulting state.
Override this method to obtain a different behavior. For example, the opposite order of effects (external transition before internal transition). Of course you can override without reference to the other transitions.
This attribute is updated automatically along simulation and represents the elapsed time since the last transition.
This attribute is updated automatically along simulation and represents the elapsed time since the last transition.
Internal transition function (δint), called when the model should be
activated, e.g when #elapsed reaches #time_advance
Override this method to implement the appropriate behavior of your model.
Time advance function (ta), called after each transition to give a chance to self to be active.
Override this method to implement the appropriate behavior of your model.
Example:
def time_advance
Quartz.infinity
end
Macros
Defines the precision level associated to this class of models.
Usage:
precision must receive a scale unit. The scale unit can be specified
with a constant expression (e.g. 'kilo'), with a Scale struct or with
a number literal.
precision Scale.::KILO
precision -8
precision femto
If specified with a constant expression, the unit argument can be a string literal, a symbol literal or a plain name.
precision kilo
precision "kilo"
precision :kilo
Example
class MyModel < Quartz::AtomicModel
precision femto
end
Is the same as writing:
class MyModel < Quartz::AtomicModel
self.precision = Scale::FEMTO
end
Or the same as:
class MyModel < Quartz::AtomicModel; end
MyModel.precision = Scale::FEMTO