Skip to content

配置#

根目录文件配置#

在插件的根目录下,需要config.toml文件,该文件基本内容如下:

config.toml
package='com.longgui.case'
name="示例插件"
version='1.0'
labels='case'
homepage='https://www.company.com'
logo=''
author='case@company.com'

该文件起到与 extension.__init__ 函数一样的作用.

在插件上传到插件商店时,插件商店也会通过该配置文件获取插件的基本信息。

数据库配置#

内核为了方便对插件的管理,自定义了三种插件的配置形式。

并为这些配置生成对应的Schema以使得各个与插件配置相关的API能动态适应插件的增删。

插件配置(profile)#

定义在 arkid.extension.models.Extension

与插件自身一对一的配置,json格式

使用 arkid.core.extension.Extension.register_profile_schema 注册其Schema

profile的增删改查通过 self.model 直接完成

租户配置(settings)#

定义在 arkid.extension.models.TenantExtension

在每个租户下每个插件只有一个settings的配置,json格式

使用 arkid.core.extension.Extension.register_settings_schema 注册其Schema

settings的增删改查通过:

运行时配置(config)#

定义在 arkid.extension.models.TenantExtensionConfig

每个租户下每个插件都有多个config,json格式

使用 arkid.core.extension.Extension.register_config_schema 注册其Schema

使用 arkid.core.extension.Extension.register_composite_config_schema 注册有子种类的Schema

config的增删改查通过:

注意

插件的Schema都应该调用 arkid.core.extension.create_extension_schema 方法来完成

示例
...

package = 'com.longgui.case'

Profile = create_extension_schema(
    'Profile', package,
    fields = [
        ('name', str, Field())
    ]
)

Settings = create_extension_schema(
    'Settings', package,
    fields = [
        ('name', str, Field())
    ]
)

Config = create_extension_schema(
    'Config', package,
    fields = [
        ('name', str, Field())
    ]
)

class CaseExtension(extension.Extension):
    def load(self):
        super().load()
        self.register_profile_schema(Profile)
        self.register_settings_schema(Settings)
        self.register_config_schema(Config)
        self.register_composite_config_schema(Config, 'type_name')

...

arkid.extension.models #

ArkStoreCategory (BaseModel) django-model #

ArkStoreCategory(id, is_del, is_active, updated, created, arkstore_id, arkstore_name, arkstore_parent_id, arkstore_type)

arkstore_id: IntegerField django-field nullable #

ArkStoreID

arkstore_name: CharField blank django-field nullable #

ArkStore名称

arkstore_parent_id: IntegerField django-field nullable #

ArkStoreParentID

arkstore_type: CharField django-field #

类别

created: DateTimeField blank django-field nullable #

创建时间

id: UUIDField django-field #

ID

is_active: BooleanField django-field #

是否可用

is_del: BooleanField django-field #

是否删除

updated: DateTimeField blank django-field nullable #

更新时间

Extension (BaseModel) django-model #

Extension(id, is_del, updated, created, type, labels, package, ext_dir, name, version, author, logo, homepage, is_active, expired, profile, is_allow_use_platform_config, category_id)

author: CharField blank django-field nullable #

Author

category_id: IntegerField django-field nullable #

ArkStore分类ID

created: DateTimeField blank django-field nullable #

创建时间

expired: BooleanField django-field #

expired

ext_dir: CharField django-field #

完整路径名

homepage: CharField blank django-field nullable #

Homepage

id: UUIDField django-field #

ID

is_active: BooleanField django-field #

是否启动

is_allow_use_platform_config: BooleanField django-field #

是否允许租户使用平台配置

is_del: BooleanField django-field #

是否删除

labels: JSONField blank django-field #

Labels

Logo

name: CharField django-field #

名称

package: CharField django-field #

标识

profile: JSONField blank django-field #

Setup Profile

type: CharField django-field #

类型

updated: DateTimeField blank django-field nullable #

更新时间

version: CharField django-field #

版本

TenantExtension (BaseModel) django-model #

TenantExtension(id, is_del, updated, created, tenant, extension, settings, is_active, is_rented, use_platform_config)

created: DateTimeField blank django-field nullable #

创建时间

extension: ForeignKey django-field #

插件

id: UUIDField django-field #

ID

is_active: BooleanField django-field #

是否使用

is_del: BooleanField django-field #

是否删除

is_rented: BooleanField django-field #

是否已租赁

settings: JSONField blank django-field #

Tenant Settings

tenant: ForeignKey django-field #

租户

updated: DateTimeField blank django-field nullable #

更新时间

use_platform_config: BooleanField django-field #

是否使用平台配置

TenantExtensionConfig (BaseModel) django-model #

TenantExtensionConfig(id, is_del, is_active, updated, created, tenant, extension, config, name, type)

config: JSONField blank django-field #

Runtime Config

created: DateTimeField blank django-field nullable #

创建时间

extension: ForeignKey django-field #

插件

id: UUIDField django-field #

ID

is_active: BooleanField django-field #

是否可用

is_del: BooleanField django-field #

是否删除

name: CharField django-field #

名称

tenant: ForeignKey django-field #

租户

type: CharField django-field #

类型

updated: DateTimeField blank django-field nullable #

更新时间

评论