# Muyan 低代码开发平台 API 文档

默认情况下,如果您按照 此文档 进行安装,API 依赖已经在服务器文件夹下的 build.gradle 文件中配置好了。

请参考 Javadoc 参考 (opens new window) 获取详细的 API 文档。

# 公开 API

我们的公开 API 设计与平台版本解耦。这种解耦确保了内部平台结构的变化不会必然影响公开 API,为使用我们 API 的开发者提供稳定性和向后兼容性。

这种解耦的主要优势包括:

  1. 版本独立性:公开 API 可以维护自己的版本控制方案,与平台的内部版本控制分开。
  2. 稳定性:可以对内部平台实现进行更改,而不影响公开 API 接口。
  3. 灵活性:允许公开 API 逐步演进,而无需对平台核心进行即时更改。
  4. 向后兼容性:即使平台在不断发展,也可以支持旧版本的 API。

这种方法使我们能够不断改进和更新平台,同时为 API 用户维护一个一致且可靠的接口。

# 目录

  1. StorageUtils
  2. QueryHelper
  3. SimpleQuery
  4. DomainHelper
  5. BeanContainer
  6. AsyncHelper
  7. MessageSeverity
  8. MessageHelper

# StorageUtils

用于处理文件存储操作的工具类。

# 方法

# createStorageFileDomain

public static StorageFieldValue createStorageFileDomain(String fileName, String mimeType, InputStream inputStream)
1

创建一个代表系统中文件的 StorageFieldValue 对象。

  • 参数:
    • fileName:要存储的文件名
    • mimeType:文件的 MIME 类型
    • inputStream:包含文件数据的输入流
  • 返回: 代表存储文件的 StorageFieldValue 对象

# QueryHelper

提供使用 Groovy 的 Sql 类执行数据库查询的方法。

# 方法

# withSession

public static <T> T withNewSession(Closure<T> closure)
1

在新的数据库会话上下文中执行闭包。

# withTransaction

public static <T> T withTransaction(Closure<T> closure)
1

使用现有数据库会话在事务上下文中执行闭包。

# SimpleQuery

用于执行数据库查询的简单查询类。

SimpleQuery.of("WorkTask")
    .ge("scheduledStartTime", start)
    .listAll();
1
2
3

此查询检索所有计划开始时间大于或等于指定开始时间的 WorkTask 实体。

您还可以将多个条件链接在一起:

SimpleQuery.of("WorkTask")
    .eq("assignee", user)
    .ge("scheduledStartTime", start)
    .lt("scheduledEndTime", end)
    .eq("status", "ACTIVE")
    .listAll();
1
2
3
4
5
6

在上面的示例中:

  • "assignee" 是 WorkTask 的指派用户,确保使用相关的 object 而不是 object.id 作为匹配条件。
  • "WorkTask" 是 DomainClass 的简称。
  • "scheduledStartTime" 是 DomainClass 中字段的名称。

此查询检索所有满足以下条件的 WorkTask 实体:

  • 计划开始时间大于或等于指定开始时间
  • 计划结束时间小于指定结束时间
  • 状态为 "ACTIVE"

# 方法

# eq(String fieldName, Object value)

添加相等条件到查询。

# ne(String fieldName, Object value)

添加不相等条件到查询。

# gt(String fieldName, Object value)

添加大于条件到查询。

# ge(String fieldName, Object value)

添加大于或等于条件到查询。

# lt(String fieldName, Object value)

添加小于条件到查询。

# le(String fieldName, Object value)

添加小于或等于条件到查询。

# iLike(String fieldName, String value)

添加不区分大小写的模糊匹配条件到查询。

# notILike(String fieldName, String value)

添加不区分大小写的不模糊匹配条件到查询。

# in(String fieldName, Collection<?> value)

添加 "in" 条件到查询。

# notIn(String fieldName, Collection<?> value)

添加 "not in" 条件到查询。

# isNull(String fieldName)

添加 "is null" 条件到查询。

# notNull(String fieldName)

添加 "not null" 条件到查询。

# get()

执行查询并返回单个结果。

# list(int offset, int limit)

执行查询并返回分页结果。

# list(int offset, int limit, List<String> orderBy)

执行查询并返回带排序的分页结果。

# list(int offset, int limit, List<String> orderBy, boolean asc)

执行查询并返回带排序和排序方向的分页结果。

# listAll()

执行查询并返回所有结果。

# static SimpleQuery<?> of(String domainName)

为指定域创建新查询。

# static <T> SimpleQuery<T> of(Class<T> clazz)

为指定类创建新查询。

# static <T> SimpleQuery<T> of(Class<T> clazz, boolean and)

为指定类创建新查询,并指定逻辑运算符。

# static Object getById(String domainName, Long id)

通过 ID 检索指定域的实体。

# static <T> T getById(Class<T> clazz, Long id)

通过 ID 检索指定类的实体。

# static List<Object> getByIds(String domainName, List<Long> ids)

通过 ID 列表检索指定域的实体列表。

# static <T> List<T> getByIds(Class<T> clazz, List<Long> ids)

通过 ID 列表检索指定类的实体列表。

# static List<Object> getAll(String domainName)

检索指定域的所有实体。

# static <T> List<T> getAll(Class<T> clazz)

检索指定类的所有实体。

# DomainHelper

提供域对象操作的实用方法。

# 方法

# buildDomain

public static Object buildDomain(String domainName)
public static Object buildDomain(String domainName, Object properties)
1
2

使用给定的名称和可选属性构建域对象。

# createDomain

public static void createDomain(Object requestData)
1

使用给定的请求数据创建域对象。

# updateDomain

public static void updateDomain(Object requestData)
1

使用给定的请求数据更新域对象。

# deleteDomain

public static void deleteDomain(Object requestData)
1

使用给定的请求数据删除域对象。

# BeanContainer

管理和检索 bean 实例。

# 方法

# getBean

public static <T> T getBean(Class<T> beanClass)
1

通过类型检索 bean 实例。

# getBeansOfType

public static <T> Collection<T> getBeansOfType(Class<T> beanClass)
1

通过类型检索 bean 集合。

# registerBean

static void registerBean(Object bean)
1

在容器中注册 bean 实例。

# AsyncHelper

提供异步任务执行的实用方法。

# 方法

# scheduleAtFixRate

public static Runnable scheduleAtFixRate(long period, Runnable runnable)
1

安排任务以固定速率定期运行。

# task

public static void task(Runnable runnable)
public static void task(boolean newThread, Runnable runnable)
1
2

异步执行任务,保持当前上下文(例如,租户信息)。

# MessageSeverity

表示消息不同严重级别的枚举。

# 枚举值

  • INFO
  • WARNING
  • ERROR
  • IMPORTANT
  • INTERNAL
  • ACTION_REQUIRED

# 方法

# getLabel

返回与严重级别相关联的标签。

# get

static MessageSeverity get(String label)
1

执行反向查找,从标签获取 MessageSeverity 枚举值。

# MessageHelper

MessageHelper 是平台中用于处理消息相关操作的工具类。它提供了推送通知和管理消息相关任务的方法。

# 依赖

  • tech.muyan.domain.Notification

# 方法

# pushNotification

public static void pushNotification(Notification notification)
1

向平台推送通知。

# 参数
  • notification:要推送的 Notification 对象。
# 抛出
  • IllegalStateException:如果在没有适当的平台实现的情况下调用该方法。
# 注意

此方法旨在由平台实现动态提供。tech.muyan:api 库不应包含在运行时中。

# 使用示例

Notification notification = new Notification();
notification.setContent("收到新消息");
notification.setToUserName("john.doe");
notification.setSeverity(MessageSeverity.INFO);
try {
    MessageHelper.pushNotification(notification);
} catch (IllegalStateException e) {
    // 处理平台实现不可用的情况
    System.err.println("平台实现不可用:" + e.getMessage());
}
1
2
3
4
5
6
7
8
9
10

# 相关类

Last Updated: 2024/9/13 15:41:28