// FlowData —— 流程/任务变量载体(对齐 java LinkedHashMap,rust FlowData)
///|
pub(all) struct FlowData {
inner : Map[String, Json]
}
///|
pub fn FlowData::new() -> FlowData {
{ inner: Map::new() }
}
///|
pub fn FlowData::from_map(map : Map[String, Json]) -> FlowData {
{ inner: map }
}
///|
pub fn FlowData::get(self : FlowData, key : String) -> Json? {
self.inner.get(key)
}
///|
pub fn FlowData::get_str(self : FlowData, key : String) -> String? {
match self.inner.get(key) {
Some(v) => as_str(v)
None => None
}
}
///|
pub fn FlowData::get_i64(self : FlowData, key : String) -> Int64? {
match self.inner.get(key) {
Some(v) => as_i64(v)
None => None
}
}
///|
pub fn FlowData::get_str_or(self : FlowData, key : String, default : String) -> String {
match self.get_str(key) {
Some(s) => s
None => default
}
}
///|
pub fn FlowData::get_i64_or(self : FlowData, key : String, default : Int64) -> Int64 {
match self.get_i64(key) {
Some(v) => v
None => default
}
}
///|
pub fn FlowData::insert(self : FlowData, key : String, value : Json) -> Unit {
self.inner[key] = value
}
///|
pub fn FlowData::insert_str(self : FlowData, key : String, value : String) -> Unit {
self.inner[key] = string_of(value)
}
///|
pub fn FlowData::insert_i64(self : FlowData, key : String, value : Int64) -> Unit {
self.inner[key] = number_of(value)
}
///|
pub fn FlowData::contains_key(self : FlowData, key : String) -> Bool {
self.inner.get(key) is Some(_)
}
///|
pub fn FlowData::remove(self : FlowData, key : String) -> Json? {
let v = self.inner.get(key)
self.inner.remove(key)
v
}
///|
pub fn FlowData::len(self : FlowData) -> Int {
self.inner.size()
}
///|
pub fn FlowData::is_empty(self : FlowData) -> Bool {
self.inner.size() == 0
}
///|
pub fn FlowData::merge(self : FlowData, other : FlowData) -> Unit {
for k, v in other.inner {
self.inner[k] = v
}
}
///|
pub fn FlowData::keys_with_prefix(self : FlowData, prefix : String) -> Array[String] {
let out : Array[String] = []
for k, _ in self.inner {
if k.starts_with(prefix) {
out.push(k)
}
}
out
}
///|
pub fn FlowData::inner(self : FlowData) -> Map[String, Json] {
self.inner
}
///|
pub fn FlowData::to_object_json(self : FlowData) -> Json {
let obj = empty_object()
for k, v in self.inner {
obj_set(obj, k, v)
}
obj
}
///|
/// 引用形态:返回底层 Map(读侧直查;写侧请经 insert 保持一致)
pub fn FlowData::iter_entries(self : FlowData) -> Array[(String, Json)] {
let out : Array[(String, Json)] = []
for k, v in self.inner {
out.push((k, v))
}
out
}