mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-07-16 16:50:54 +08:00
docs: 修改文档
This commit is contained in:
parent
d41d91b44e
commit
dd5bec04c8
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* @Author: yubaolee <yubaolee@163.com> | ahfu~ <954478625@qq.com>
|
||||
* @Date: 2025-04-23 20:26:48
|
||||
* @LastEditTime: 2025-05-29 00:21:10
|
||||
* @LastEditTime: 2025-06-07 23:11:29
|
||||
* @Description: 笔记配置
|
||||
* Copyright (c) 2025 by yubaolee | ahfu~ , All Rights Reserved.
|
||||
*/
|
||||
@ -17,7 +17,7 @@ const coreNote = defineNoteConfig({
|
||||
text: '基础开发',
|
||||
collapsed: false,
|
||||
items: [
|
||||
'start', 'specialist', 'deploy', 'deployapi', 'devnew', 'multidbs', 'multitenant', 'unitwork','sqlsugar', 'entity','dynamicapi', 'datavalidation', 'log', 'identity', 'job', 'cache', 'unittest','changesdk'
|
||||
'start', 'specialist', 'deployapi', 'devnew', 'multidbs', 'multitenant', 'unitwork','sqlsugar', 'entity','dynamicapi', 'datavalidation', 'log', 'identity', 'job', 'cache', 'unittest','changesdk'
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -32,11 +32,6 @@ const coreNote = defineNoteConfig({
|
||||
collapsed: true,
|
||||
items: ['form','flowinstance','flowinstanceconcept','flowinstancedev', 'thirdparty' ]
|
||||
},
|
||||
{
|
||||
text: '前端开发',
|
||||
collapsed: true,
|
||||
items: ['wwwarchitect']
|
||||
},
|
||||
{
|
||||
text: '其他',
|
||||
collapsed: true,
|
||||
|
@ -1,9 +1,14 @@
|
||||
---
|
||||
title: 字段权限
|
||||
createTime: 2025/04/23 21:03:10
|
||||
title: 权限控制
|
||||
createTime: 2025/04/23 23:43:26
|
||||
permalink: /core/datapropertyrule/
|
||||
---
|
||||
|
||||
## 数据权限
|
||||
|
||||
关于数据权限控制,可以详细查看博文:[通用权限设计与实现](https://www.cnblogs.com/yubaolee/p/DataPrivilege.html)
|
||||
## 字段权限
|
||||
|
||||
::: warning 注意
|
||||
字段权限只针对【非系统模块】有效,即在添加新模块的时候,需要设置模块属性“是否系统”为false。
|
||||
:::
|
||||
@ -23,10 +28,10 @@ permalink: /core/datapropertyrule/
|
||||
针对场景1,在做返回处理的时候,需要过滤数据库查询字段,如下:(本文以Resource表为例)
|
||||
|
||||
```csharp
|
||||
var columnFields = loginContext.GetTableColumnsFromDb("Resource");
|
||||
var columnFields = loginContext.GetTableColumns("Resource");
|
||||
if (columnFields == null || columnFields.Count == 0)
|
||||
{
|
||||
throw new Exception("未找到Resource表的字段属性");
|
||||
throw new Exception("请在代码生成界面配置Resource表的字段属性");
|
||||
}
|
||||
|
||||
var propertyStr = string.Join(',', columnFields.Select(u => u.ColumnName));
|
||||
@ -39,52 +44,34 @@ return result;
|
||||
```
|
||||
|
||||
::: warning 注意
|
||||
因为开源版没有代码生成器,所以需要直接从数据读取表的字段结构,使用的是loginContext.GetTableColumnsFromDb获取可访问的字段
|
||||
企业版表结构是通过【代码生成】功能获取获取表结构并存储在`buildertable`表中,因此需要先在【代码生成】功能添加要控制的表字段。然后使用loginContext.GetTableColumns获取可访问的字段。
|
||||
:::
|
||||
|
||||
### 前端代码处理
|
||||
|
||||
在做表格的时候需要使用动态列。以`Views/Resources/index.cshtml`为例,如下:
|
||||
在做表格的时候需要使用动态列。以`views/Resources/index.vue`为例,如下:
|
||||
|
||||
```HTML
|
||||
<table class="layui-table" id="mainList"
|
||||
lay-data="{height: 'full-80', page:true, id:'mainList'}"
|
||||
lay-filter="list" lay-size="sm">
|
||||
</table>
|
||||
<auth-table ref="mainTable" :table-fields="headerList"></auth-table>
|
||||
```
|
||||
|
||||
在用户自定义的脚本`wwwroot/userJs/resources.js`中,动态加载列:
|
||||
用户加载后台数据时,自动加载表格字段结构,并存储在`headerList`实现字段权限控制,如下:
|
||||
|
||||
```javascript
|
||||
//加载表头
|
||||
$.getJSON('/Resources/Load',
|
||||
{ page: 1, limit: 1 },
|
||||
function (data) {
|
||||
var columns = data.columnFields.filter(u => u.IsList ===true).map(function (e) {
|
||||
return {
|
||||
field: e.ColumnName,
|
||||
title: e.Remark
|
||||
};
|
||||
});
|
||||
columns.unshift({
|
||||
type: 'checkbox',
|
||||
fixed: 'left'
|
||||
});
|
||||
table.render({
|
||||
elem: '#mainList',
|
||||
page: true,
|
||||
url: '/Resources/Load',
|
||||
cols: [columns]
|
||||
, response: {
|
||||
statusCode: 200 //规定成功的状态码,默认:0
|
||||
}
|
||||
});
|
||||
});
|
||||
resources.getList(this.listQuery).then((response) => {
|
||||
this.list = response.data
|
||||
response.columnFields.forEach((item) => {
|
||||
// 首字母小写
|
||||
item.columnName = item.columnName.substring(0, 1).toLowerCase() + item.columnName.substring(1)
|
||||
})
|
||||
this.headerList = response.columnFields
|
||||
})
|
||||
```
|
||||
### 运行界面配置
|
||||
|
||||
完成代码编写后,在【基础配置】--【角色管理】--【为角色分配模块】最后为角色分配【可见字段】中分配权限
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
@ -1,117 +0,0 @@
|
||||
---
|
||||
title: 部署MVC
|
||||
createTime: 2025/04/23 21:03:10
|
||||
permalink: /core/deploy/
|
||||
---
|
||||
|
||||
::: tip 提示
|
||||
因.net core内部有自托管的Web服务器,推荐使用控制台方式部署。本内容基于控制台命令的方式。如果部署到IIS请自行百度:cold_sweat:
|
||||
:::
|
||||
|
||||
## 生成发布文件
|
||||
|
||||
* 修改部署环境的连接字符串信息,特别注意是`appsettings.Production.json`文件:
|
||||

|
||||
|
||||
::: warning 注意
|
||||
决定系统部署后读取`appsettings.json`还是`appsettings.Production.json`是通过操作系统的环境变量`ASPNETCORE_ENVIRONMENT`来控制的。
|
||||
在centos切换成正式可以用
|
||||
```shell
|
||||
export ASPNETCORE_ENVIRONMENT=Production
|
||||
```
|
||||
|
||||
或者修改/etc/profile配置,在结尾添加:
|
||||
```shell
|
||||
ASPNETCORE_ENVIRONMENT=Production
|
||||
export ASPNETCORE_ENVIRONMENT
|
||||
```
|
||||
然后刷新:
|
||||
```shell
|
||||
source /etc/profile
|
||||
```
|
||||
|
||||
在Widows系统中增加对应环境变量即可
|
||||
|
||||
:::
|
||||
|
||||
* 直接在解决方案资源管理器中,选中OpenAuth.Mvc右键【发布】,出现下面的配置框,使用文件系统即可:
|
||||
|
||||

|
||||
|
||||
* 发布完成后可以在输出目录看到发布详情:
|
||||
|
||||

|
||||
|
||||
## 部署&启动
|
||||
|
||||
如果是windows系统,可以直接运行`OpenAuth.Mvc.exe`启动。
|
||||
如果是linux系统,将发布后的文件拷贝到服务器文件夹。直接使用`dotnet openauth.mvc.dll` 命令启动。
|
||||
启动成功后使用浏览器打开[http://localhost:1802](http://localhost:1802) 即可访问,如下图所示:
|
||||
|
||||

|
||||
|
||||
## docker部署
|
||||
|
||||
框架自带的dockerfile文件,会同时生成webapi、mvc、identity三个项目,可以根据需要调整后使用。使用方式如下:
|
||||
```shell
|
||||
# 构建镜像
|
||||
docker build -f Dockerfile -t openauthapi-img .
|
||||
|
||||
# 运行容器
|
||||
docker run --network="host" -d -p 52789:52789 -p 1802:1802 -p 12796:12796 openauthapi-img
|
||||
```
|
||||
|
||||
## jenkins无容器部署
|
||||
|
||||
OpenAuth.Net采用的是gitee托管源码,只需使用Gitee WebHook构建触发器。配置如下:
|
||||
|
||||

|
||||
|
||||
做好上面的配置后,代码提交时就会触发jenkins工作。剩下的就是编写自己的构建脚本。增加构建步骤,选择执行Shell。并输入以下脚本:
|
||||
|
||||
```shell
|
||||
#!/bin/bash
|
||||
kill -9 $(ps -ef|grep OpenAuth.Mvc.dll|grep -v grep|awk '{print $2}')
|
||||
|
||||
#项目启动之后才不会被Jenkins杀掉。
|
||||
export BUILD_ID=dontKillMe
|
||||
pwd
|
||||
echo $PATH
|
||||
dotnet restore # 还原nuget包
|
||||
|
||||
cd ./OpenAuth.Mvc
|
||||
dotnet build # 编译
|
||||
|
||||
rm -rf /data/openauthmvc #最终站点路径
|
||||
mkdir /data/openauthmvc
|
||||
dotnet publish -c:Release -o /data/openauthmvc # 生成发布文件到/data/openauthmvc。如果服务器上有多个.NET版本,加上目标版本号,如:-f net6.0
|
||||
|
||||
nohup dotnet /data/openauthmvc/OpenAuth.Mvc.dll &
|
||||
|
||||
echo '============================end build======================================='
|
||||
```
|
||||
|
||||
## jenkins容器部署
|
||||
|
||||
如果需要jenkins配合自动部署启动,可以将上面的shell调整如下:
|
||||
|
||||
```shell
|
||||
# 停止并删除所有与 openauthapi-img 镜像相关的容器
|
||||
docker ps -a --filter "ancestor=openauthapi-img" --format "{{.ID}}" | xargs -r docker stop
|
||||
|
||||
# 删除所有与 openauthapi-img 镜像相关的容器
|
||||
docker ps -a --filter "ancestor=openauthapi-img" --format "{{.ID}}" | xargs -r docker rm
|
||||
|
||||
#docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
|
||||
|
||||
cd /var/lib/jenkins/workspace/openauth.webapi
|
||||
|
||||
# 构建镜像
|
||||
docker build -f Dockerfile -t openauthapi-img .
|
||||
|
||||
# 运行容器
|
||||
docker run --network="host" -d -p 52789:52789 -p 1802:1802 -p 12796:12796 openauthapi-img
|
||||
```
|
||||
|
||||
|
||||
|
@ -1,60 +1,178 @@
|
||||
---
|
||||
title: 添加新模块
|
||||
createTime: 2025/04/23 21:03:10
|
||||
title: 代码生成器
|
||||
createTime: 2025/04/23 23:43:26
|
||||
permalink: /core/devnew/
|
||||
---
|
||||
## 前言
|
||||
OpenAuth.Mvc添加新模块的方式非常简单,完全可以参考系统已有的`资源管理`模块编写相应的代码。参考的`资源管理`功能对应的代码如下:
|
||||

|
||||
如果我们想新加一个仓储管理的模块,模块标识为`Stock`。那么需要添加的文件如下:
|
||||
::: file-tree
|
||||
- OpenAuth.Mvc
|
||||
- Controllers
|
||||
- StocksController.cs
|
||||
- Views
|
||||
- Stocks
|
||||
- index.cshtml
|
||||
- wwwroot
|
||||
- userJs
|
||||
- stock.js
|
||||
- OpenAuth.App
|
||||
- StockApp.cs
|
||||
- Request
|
||||
- QueryStockReq.cs
|
||||
- OpenAuth.Repository
|
||||
- OpenAuthDBContext.cs
|
||||
- Domain
|
||||
- Stock.cs
|
||||
:::
|
||||
当然全部手撸这些代码还是会疯的。用户可以直接使用项目`CodeSmith`文件夹里面的模板一键生成上述代码。而且CodeSmith模板本身也是全部源码,可以根据自己需求调整生成的内容。
|
||||
## 工具准备
|
||||
CodeSmith Generator Studio 8.0或以上
|
||||
数据库OpenAuthDB中添加仓储表【Stock】,本文以该数据表为例
|
||||
## 添加实体
|
||||
如下图,使用CodeSmith文件夹中的模板,右击【ApiGenerate.cst】--【Execute】,选择需要生成的表(本文以Stock为例)及相关的上下文命名空间,点击【Generate】
|
||||

|
||||
注意,有两个配置项:
|
||||
* WholeDb: 如果选中,则按数据库中所有表生成实体及逻辑;否则,按选择的表生成
|
||||
* HeaderModel:会生成主、从表结构,类似 WmsInboundOrderTbl / WmsInboundOrderDtbl
|
||||
生成成功后,在CodeSmith/Csharp文件夹下面会有Stock实体相关文档,如下图:
|
||||

|
||||
把CSharp\OpenAuth.App覆盖到自己项目对应目录
|
||||
把CSharp\OpenAuth.Repository\Domain覆盖到自己项目对应目录
|
||||
**把CSharp\OpenAuth.Repository\OpenAuthDBContext.cs中的内容添加到自己项目的文件中,千万不要直接覆盖文件!!!**
|
||||
## 添加界面
|
||||
如下图,使用CodeSmith文件夹中的模板,右击【WebGenerate.cst】--【Execute】,选择需要生成的表(本文以Stock为例)及相关的上下文命名空间,点击【Generate】
|
||||

|
||||
生成成功后,在CodeSmith/Csharp文件夹下面会有相关的界面代码,如下图:
|
||||

|
||||
Controllers、Views直接覆盖到OpenAuth.Mvc项目中对应的文件夹即可
|
||||
userJs直接覆盖到OpenAuth.Mvc/wwwroot中
|
||||
## 添加模块
|
||||
编写完上面代码后,运行系统,使用System账号登录系统,在【模块管理】中,添加`仓储管理`模块,
|
||||

|
||||
|
||||
本章节视频讲解请参考:[OpenAuth.Net视频合集--使用企业版代码生成器](https://www.bilibili.com/video/BV1JCuyeaEFp/)
|
||||
|
||||
## 术语解释
|
||||
|
||||
在添加新功能之前,需要先了解OpenAuth.Net生成代码时的两个概念:动态头部和固定头部
|
||||
|
||||
#### 动态头部
|
||||
|
||||
如果启用动态头部,表示前端渲染列表(或表单)时,列表的列定义是从后端返回。通常用于控制前端字段显示权限。配合后端:[权限控制/字段权限](http://doc.openauth.net.cn/pro/datapropertyrule/#%E5%AD%97%E6%AE%B5%E6%9D%83%E9%99%90) 如:常见的前端代码如下:
|
||||
```html
|
||||
<auth-table ref="mainTable" :table-fields="headerList"></auth-table>
|
||||
```
|
||||
```javascript
|
||||
getList() {
|
||||
resources.getList(this.listQuery).then((response) => {
|
||||
...
|
||||
this.headerList = response.columnFields
|
||||
...
|
||||
})
|
||||
},
|
||||
|
||||
```
|
||||
|
||||
#### 固定头部
|
||||
|
||||
如果不是上面的情况,则生成的前端列为固定的头部。如下:
|
||||
|
||||
```html
|
||||
|
||||
<auth-table ref="mainTable" :table-fields="headerList"></auth-table>
|
||||
|
||||
```
|
||||
```javascript
|
||||
initCfg() {
|
||||
this.headerList = [
|
||||
new ColumnDefine('id', 'id', false, false, 'text', '', 'string', 'varchar', ''),
|
||||
new ColumnDefine('tableName', '表名', true, true, 'text', '', 'string', 'varchar', ''),
|
||||
new ColumnDefine('moduleName', '模块名称', true, true, 'text', '', 'string', 'varchar', ''),
|
||||
new ColumnDefine('parentTableId', '父表', true, true, 'selectDynamic', '/BuilderTables/AllMain', 'string', 'varchar', ''),
|
||||
new ColumnDefine('foreignKey', '外键', true, true, 'text', '', 'string', 'varchar', ''),
|
||||
]
|
||||
|
||||
```
|
||||
|
||||
## 准备工作
|
||||
|
||||
* 数据库OpenAuthPro中添加仓储表【Stock】,本文以该数据表为例。参考表结构如下:
|
||||
```SQL
|
||||
-- mysql示例
|
||||
create table stock
|
||||
(
|
||||
Id varchar(50) not null comment '数据ID'
|
||||
primary key,
|
||||
Name text not null comment '产品名称',
|
||||
Number int not null comment '产品数量',
|
||||
Price decimal(10, 1) not null comment '产品单价',
|
||||
Status int not null comment '出库/入库',
|
||||
Viewable varchar(50) not null comment '可见范围',
|
||||
User varchar(50) not null comment '操作人',
|
||||
Time datetime not null comment '操作时间',
|
||||
OrgId varchar(50) null comment '组织ID'
|
||||
)
|
||||
comment '出入库信息表' charset = utf8
|
||||
row_format = COMPACT;
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
* 使用Visual Studio 以开发模式启动后端。参考:[编译运行webapi](http://doc.openauth.net.cn/core/start/#%E7%BC%96%E8%AF%91%E8%BF%90%E8%A1%8Cwebapi)
|
||||
|
||||
* 启动企业版前端。参考:[启动前端](http://doc.openauth.net.cn/pro/#%E5%90%AF%E5%8A%A8%E5%89%8D%E7%AB%AF)
|
||||
|
||||
后续操作全部在系统中完成。
|
||||
|
||||
## 单表添加
|
||||
|
||||
代码生成界面,点击`添加`按钮,输入想添加的模块信息。
|
||||

|
||||
|
||||
录入基础信息,点击`确认`保存后,系统会添加一条记录,并自动加载对应的字段信息。
|
||||
|
||||

|
||||
|
||||
这时,编辑字段具体的属性。如是否【可显示】【可编辑】等。
|
||||
|
||||
|
||||
## 子表添加
|
||||
|
||||
::: warning 注意
|
||||
因为生成的Controller名称类似XXXsController,所以模块的Url地址应该是XXXs/Index
|
||||
如果只生成单表结构,可以跳过本节
|
||||
:::
|
||||
添加模块时,系统会自动添加三个默认菜单【添加】【编辑】【删除】。可根据需要调整。这里我再添加一个菜单【btnCancel】,如下图:
|
||||

|
||||
重新登录系统,即可看到新加的仓储管理模块。
|
||||

|
||||
|
||||
如果需要添加主/从(父/子)结构,需要先添加子表信息。代码生成界面,点击`添加`按钮,输入想添加的模块信息。
|
||||
|
||||

|
||||
|
||||
::: warning 注意
|
||||
子表的`动态头部`属性务必与父表保持一致,否则会造成生成的代码不能正常运行
|
||||
:::
|
||||
|
||||
## 生成模块
|
||||
|
||||
选中刚刚添加的`Stock`表,依次点击【生成实体】【生成业务代码】【生成vue页面】;
|
||||
|
||||
如果存在子表,也进行相同的操作。即选中刚刚添加的`StockDetail`表,依次点击【生成实体】【生成业务代码】【生成vue页面】;
|
||||
|
||||
成功后生成的后端.Net代码位置如下:
|
||||
|
||||
OpenAuth.Repository\Domain\Stock.cs
|
||||
OpenAuth.App\StockApp\StockApp.cs
|
||||
OpenAuth.App\StockApp\Request\AddOrUpdateStockReq.cs
|
||||
OpenAuth.App\StockApp\Request\QueryStockListReq.cs
|
||||
OpenAuth.WebApi\Controllers\StocksController.cs
|
||||
|
||||
并且会在OpenAuth.Repository\OpenAuthDBContext.cs中自动添加:
|
||||
|
||||
```
|
||||
public virtual DbSet<Stock> Stocks { get; set; }
|
||||
```
|
||||
|
||||
|
||||
前端Vue代码:
|
||||
src\api\stocks.js
|
||||
src\views\stocks\index.vue
|
||||
|
||||
::: warning 注意
|
||||
完成以上步骤后,请重启OpenAuth.WebApi,用来重新加载刚刚生成的后台代码
|
||||
|
||||
子表不需要添加模块
|
||||
:::
|
||||
|
||||
## 配置模块地址
|
||||
|
||||
经过以上步骤,重启系统后,使用System账号重新登录,在【模块管理】中,添加“仓储管理”模块,如下图:
|
||||
|
||||

|
||||
|
||||
这样就可以访问刚刚新加的仓储管理功能,到此就完成了添加一个新模块功能:
|
||||
|
||||

|
||||
|
||||
## 代码生成功能字段详解
|
||||
|
||||
* 模块名称:表示这个生成的模块名称,根据自己需要填写。
|
||||
|
||||
* 表名:**必填** 表示数据库中对应的表名。
|
||||
|
||||
* 父表:表示主/从(父/子)表的父表。如果该项不选,则生成的是单表结构的代码,如果选择了父表,则生成主/从(父/子)表的代码。
|
||||
|
||||
* 外键:表示与父表关联的外键。如果选择了父表,则该项必填。
|
||||
|
||||
* 外部数据源:如果需要连接其他数据库生成代码,需要选对应的外部数据源,外部数据源在【数据源管理】功能中配置。
|
||||
|
||||
* 动态头部:如果选中,表示前端渲染列表(或表单)时,列表的列定义是从后端返回。通常用于控制前端字段显示权限。
|
||||
|
||||
* 实体类名称:**必填** 表示生成的实体类名称。
|
||||
|
||||
* 命名空间:**必填** 表示生成的实体类的命名空间。默认`OpenAuth.Repository.Domain`。
|
||||
|
||||
* 模块编码:**必填** 表示生成的模块业务类名称,比如`XxxxxApp`。
|
||||
|
||||
* Vue目录: 生成vue代码时,代码存放的目录。比如`D:\openauthvue3`。
|
||||
|
||||
## 其他
|
||||
|
||||
当采用动态头部时,如果数据库新加了字段,需要使用【同步结构】功能把新字段同步到代码生成器中。为了防止对已有的配置造成影响,该功能只新增字段,不会对已有字段进行调整。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -43,15 +43,11 @@ OpenAuth.Net工作流基于国际标准的BPMN2.0规范,并在此基础上做
|
||||
|
||||
## 流程设计
|
||||
|
||||
在【基础配置/流程设计】界面,点击“添加模板”。填写好流程模板的名称及需要的信息。点击“选择表单”选择流程关联的表单。
|
||||
|
||||

|
||||
|
||||
流程模版使用的表单,需要在【基础配置/表单设计】中添加,具体查看[表单设计-基本介绍](/core/form)
|
||||
在【基础配置/流程设计】界面,点击“添加模板”。填写好流程模板的名称及需要的信息。点击“选择表单”选择流程关联的表单。流程模版使用的表单,需要在【基础配置/表单设计】中添加,具体查看[表单设计-基本介绍](/core/form)
|
||||
|
||||
选择好表单后,点击“流程设计”进入流程设计。
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
#### 节点属性
|
||||
@ -63,31 +59,64 @@ OpenAuth.Net工作流基于国际标准的BPMN2.0规范,并在此基础上做
|
||||
* 指定用户:指定用户审批,当选中这项时需要选择指定的用户
|
||||
* 指定角色:指定角色审批,当选中这项时需要选择指定的角色
|
||||
|
||||
👉使用[vue版本](/pro/startflow/),解锁更多类型:指定SQL、上一节点执行人的直属上级、连续多级直属上级、部门负责人、运行时指定角色、运行时指定用户等等,当然你也可以为[开源版本](https://gitee.com/dotnetchina/OpenAuth.Net)贡献代码,添加更多类型。
|
||||
|
||||
👉使用[vue版本](/pro/startflow/),设置连线条件属性。你也可以为[开源版本](https://gitee.com/dotnetchina/OpenAuth.Net)贡献代码,让它支持该属性。
|
||||
|
||||
## 流程发起
|
||||
|
||||
开源版本只能发起无业务关联的流程,使用[vue版本](/pro/startflow/),解锁有业务类型关联的流程。当然你也可以为[开源版本](https://gitee.com/dotnetchina/OpenAuth.Net)贡献代码,支持更多类型。
|
||||
|
||||
OpenAuth.Net工作流分为两个大类:
|
||||
|
||||
1. 无业务关联流程,如请假、报销等。
|
||||
|
||||
2. 有业务关联流程,如采购、销售、入库等。
|
||||
|
||||
这两种流程的差异有以下几点:
|
||||
|
||||
| 对比维度 | 无业务关联流程 | 有业务关联流程 |
|
||||
|---------|--------------|--------------|
|
||||
| 适用场景 | 请假、报销等日常办公 | 采购、销售、入库等业务操作 |
|
||||
| 发起方式 | 流程中心 -> 我的流程 -> 新的申请 | 直接在业务模块中发起(如:仓储中心 -> 入库订单 -> 送审) |
|
||||
| 表单类型 | 简单表单,适用拖拽表单设计器 | 复杂表单,需要自定义表单或URL表单 |
|
||||
| 审批结束处理 | 仅更新流程状态 | 需要修改业务数据状态 |
|
||||
|
||||
我们分别介绍如何发起这两种流程。
|
||||
|
||||
### 无业务关联流程
|
||||
|
||||
完成流程模版设计后,在【流程中心/我的流程】中【新的申请】开始创建一个流程实例。
|
||||
|
||||

|
||||

|
||||
|
||||
1. 在左边选择流程模版;
|
||||
1. 在上边选择流程模版;
|
||||
|
||||
2. 填写待审批的表单内容;
|
||||
|
||||
3. 保存完成后,在【流程中心/我的流程】中点击“搜索”按钮刷新查询,就可以看到刚刚发起的流程实例。
|
||||
3. 点击“下一步”,根据自己需要编辑流程实例标题,并保存。
|
||||
|
||||
保存完成后,在【流程中心/我的流程】中点击“搜索”按钮刷新查询,就可以看到刚刚发起的流程实例。
|
||||
|
||||
### 有业务关联流程
|
||||
|
||||
#### 挂载流程方案
|
||||
|
||||
与无业务关联流程不同,有业务关联流程需要先把流程模板挂载到业务模块中。在【模块管理】功能里面,把刚刚流程模板与功能关联。
|
||||
|
||||

|
||||
|
||||
#### 业务系统发起【送审】
|
||||
|
||||
挂载完成后,在【仓储中心/入库单】中,选择一个入库单,点击【送审】,选择刚刚设计的流程模板:
|
||||
|
||||

|
||||
|
||||
送审成功后就可以在【流程中心/我的流程】中看到刚刚送审的流程实例,点击进入后,就可以看到审批内容是业务详情的URL地址。
|
||||
|
||||

|
||||
|
||||
## 流程审批
|
||||
|
||||
用户可以在【流程中心/待处理流程】中看到自己需要审批的流程,点击【处理】按钮并进行相应的处理;
|
||||
|
||||

|
||||

|
||||
|
||||
其中:
|
||||
|
||||
@ -97,9 +126,6 @@ OpenAuth.Net工作流基于国际标准的BPMN2.0规范,并在此基础上做
|
||||
|
||||
* 驳回:可以驳回到指定的步骤,该步骤的人可以重新审批提交;
|
||||
|
||||
👉使用[vue版本](/pro/startflow/),解锁更多加签、撤销审批操作。你也可以为[开源版本](https://gitee.com/dotnetchina/OpenAuth.Net)贡献代码,让它支持这些功能。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -117,7 +117,7 @@ OpenAuth.Repository -> OpenAuthDB : 仓储层进行数据库操作
|
||||
|
||||
#### 修改单数据库连接字符串
|
||||
|
||||
* 修改OpenAuth.Mvc/appsettings.json连接字符串,如下:
|
||||
* 修改OpenAuth.WebApi/appsettings.json连接字符串,如下:
|
||||
```json
|
||||
"ConnectionStrings": {
|
||||
"OpenAuthDBContext": "Data Source=.;Initial Catalog=OpenAuthPro;User=sa;Password=000000"
|
||||
|
@ -1,57 +0,0 @@
|
||||
---
|
||||
title: MVC前端
|
||||
createTime: 2025/04/23 21:03:10
|
||||
permalink: /core/wwwarchitect/
|
||||
---
|
||||
|
||||
OpenAuth.Mvc前端采用经典mvc结构,如图:
|
||||
|
||||
::: file-tree
|
||||
- OpenAuth.Mvc
|
||||
- Views // MVC的视图文件
|
||||
- _ViewStart.cshtml
|
||||
- Error
|
||||
- Auth.cshtml
|
||||
- FlowSchemes
|
||||
- Design.cshtml
|
||||
- Index.cshtml
|
||||
- NodeInfo.cshtml
|
||||
- Preview.cshtml
|
||||
- Home
|
||||
- git.cshtml
|
||||
- Index.cshtml
|
||||
- Main.cshtml
|
||||
- Login
|
||||
- Index.cshtml
|
||||
- wwwroot
|
||||
- css // 通用的css样式
|
||||
- login.css
|
||||
- main.css
|
||||
- treetable.css
|
||||
- js // 通用的js组件
|
||||
- cookie.js
|
||||
- droptree.js
|
||||
- dtree.js
|
||||
- index.js
|
||||
- leftNav.js
|
||||
- openauth.js
|
||||
- utils.js
|
||||
- vue.js
|
||||
- ztree.js
|
||||
- userJs // 业务相关的js代码
|
||||
- assignModule.js
|
||||
- assignResource.js
|
||||
- assignRole.js
|
||||
- changePwd.js
|
||||
- flowinstanceDetail.js
|
||||
- forms.js
|
||||
- login.js
|
||||
|
||||
:::
|
||||
|
||||
|
||||
* Views: 为静态资源页面,最终会渲染成html(实在不懂,百度Asp.Net Mvc中的View);
|
||||
|
||||
* wwwroot/js: 通用的js组件;
|
||||
|
||||
* wwwroot/userJs: 业务相关的js代码。通常一个csthml页面对应一个userJs中的js文件。如`Categories\Index.cshtml`对应`userJs\categories.js`
|
Loading…
Reference in New Issue
Block a user