1. 元数据类型概览

元数据是华炎魔方技术架构的核心。华炎魔方使用元数据定义对象,字段,配置,代码,逻辑和页面布局,并基于这些元数据自动生成系统的数据结构以及Steedos应用程序的用户界面和自动化逻辑。

对象

对象 .object.yml

定义对象名称、显示名称、对象的基本信息,以及功能开关。

name: contracts
enable_api: true
enable_audit: true
enable_chatter: false
enable_events: false
enable_files: true
enable_inline_edit: true
enable_instances: false
enable_notes: false
enable_search: true
enable_share: true
enable_tasks: false
enable_trash: true
enable_workflow: true
enable_enhanced_lookup: true
icon: contract
is_enable: true
label: 合同
version: 2

字段 .field.yml

定义字段名称、字段类型以及具体属性。

name: await_proceeds
type: summary
data_type: number
filterable: false
group: 收款信息
hidden: true
index: false
is_name: false
is_wide: false
label: 收款累计(待收款)
omit: false
precision: 18
readonly: true
required: false
scale: 2
searchable: false
sort_no: 500
sortable: true
summary_field: amount
summary_filters:
  - field: contract_receipts_state
    operation: '='
    value: unreceived
summary_object: finance_receive
summary_type: sum

按钮

buttons
├── 按钮.button.js
└── 按钮.button.yml

示例:详细记录页”确认“按钮,在指定条件下显示此按钮,点击此按钮新建指定对象的一条记录。

sure.button.js 文件

module.exports = {
    sure: function(object_name, record_id) {
        var record = this.record;
        var initialValues = {
            name: record.name,
            state: '试用'
        }
        SteedosUI.showModal(stores.ComponentRegistry.components.ObjectForm, {
            name: `standard_new_form`,
            objectApiName: 'hmc__c',
            title: '确认',
            initialValues
        }, null, {
            iconPath: '/assets/icons'
        });
    },
    sureVisible: function(object_name, record_id, permissions, record) {
        if (record.rz_state === "待入职" && record.instance_state === 'approved') {
            return true;
        } else {
            return false;
        }
    }
}

sure.button.yml 文件

name: sure
is_enable: true
label: 确认
'on': record_only
type: script
visible: true

列表视图 .listview.yml

定义对象的列表显示,包括:显示的列、过滤条件、排序规则、默认搜索字段。

name: all
label: 所有合同
columns:
  - field: 'no'
    width: '150'
    wrap: true
  - field: name
    width: '220'
    wrap: true
  - field: contract_type
    width: '150'
    wrap: true
  - field: amount
    width: '150'
    wrap: true
  - field: signed_date
    width: '150'
    wrap: false
  - field: owner
    width: '150'
    wrap: false
  - field: created
    width: '150'
    wrap: false
filter_fields:
  - contract_type
  - signed_date
  - othercompany
  - instance_state
  - owner
filter_scope: space
filters:
  - is_default: true
    field: instance_state
    operation: <>
    value:
      - terminated
    is_required: false
shared: true
show_count: false
sort:
  - field_name: 'no'
    order: desc

权限

权限集 .permissionset.yml

权限集只约定了一个名称,定义了权限集之后,就可以在对象权限中定义此权限集对具体对象的访问权限。

一个用户可以拥有多个权限集,最终权限为叠加之后的结果。

元数据中未约定权限集并未绑定到具体用户,系统管理员可以在设置界面中配置适用此权限集的用户清单。

name: contract_manager
label: 合同管理员
type: permission_set

简档 .profile.yml

简档只约定了一个名称,定义了简档之后,就可以在对象权限中定义此简档对具体对象的访问权限。

一个用户只能属于一个简档。元数据中不能指定具体用户的具体简档。系统管理员可以在用户管理界面中设置用户的简档。

系统有4个默认简档:

  • admin: 系统管理员,默认对所有对象有最高权限

  • user: 普通用户,通常对大部分对象拥有增删改权限

  • customer: 外部客户,默认无权限

  • supplier: 外部供应商,默认无权限

    \

name: user
license: platform

对象权限 .permission.yml

设定某一个简档(或权限集)对当前对象的访问权限。

name: 合同.用户
allowCreate: true
allowDelete: true
allowEdit: true
allowRead: true
modifyAllRecords: false
modifyCompanyRecords: false
permission_set_id: user
viewAllRecords: false
viewCompanyRecords: false

应用

应用 .app.yml

可以设置应用的名称、显示名称、应用图标,以及在应用中显示的对象、选项卡清单。

name: 合同
code: contracts
description: 管理合同及收付款。
icon_slds: contract_line_item
mobile: true
mobile_objects:
  - contracts
  - finance_invoice
  - finance_receive
  - finance_receipt
  - finance_payment
  - contract_types
oauth2_enabled: false
oauth2_logout_enabled: false
objects:
  - contracts
  - finance_invoice
  - finance_receive
  - finance_receipt
  - finance_payment
  - contract_types
saml_enabled: false
saml_logout_enabled: false
sort: 50
tabs:
  - contract_analysis
visible: true

选项卡 .tab.yml

选项卡可以绑定到一个对象,也可以绑定到一个网址或是自定义页面。

name: contract_analysis
desktop: true
icon: dashboard
label: 合同分析
mobile: true
page: contract_analysis
type: page