SQL to web application with inputs/ouputs.Easy to build ,integrate,customize your web application, just via SQL
- .net WebForms/MVC/WEBAPI hybrids
- 数据库智能:引用对应数据库的动态SQL分析包. ORACLE为 DBMS_SQL包 MSSQL则用到了EXECUTE 和 SP_EXECUTESQL
- 主要算法: 参数依赖联动使用DAG “无回路有向图算法”.
- 前端组件: angularjs + ui-state + restangular
小型WEB应用:数据查阅,数据操控类应用,企业生产维护外挂等.
1.能开发应用广泛的企业数据库"外挂"
2.多种复杂度的外挂,比如向导型wizard,引导用户输入.....
3.已有外挂的任意复杂度的集成,外挂嵌套外挂,模拟弹窗操作...
4.管理自己的日常工作,把常见的操作做成web页面
5.发布数据查询? 有人要数据清单?太简单了,发布一个SQL语句,自定义一些参数...简单!
6.还是数据变更?提供工具,自定义参数,限定参数格式,得心应手!
7.可拖曳的菜单,目录管理,轻松管理!
8.丰富的扩展功能
.....更多的由你自由发挥...
先来几个简单的例子:
----------------------
例子1.
```sql
select * from table1 where rownum <= :xh
```
默认生成
例子2.
```sql
update table2 set attr = :val where key=:key;
```
对上面的语句中参数val设置数据源为
或者
那么执行时,自动生成参数如下:
3.例子3.
```sql
declare
date1 date;
date2 date;
begin
date1:= to_date(:dt1,'yyyy-mm-dd hh24:mi:ss');
date2:= to_date(:dt2,'yyyy-mm-dd hh24:mi:ss');
DBMS_OUTPUT.PUT_LINE('相差结果='|| wxhf_time_eclipse(date2,date1));
end;
```
自动生成的参数界面图
执行结果
下面就是码字...传说中的项目说明书啊 ,码字码的手酸背痛...
1.介绍
背景.
实际生产上,总会遇到很多问题,因为时间紧迫或者成本考虑,需要在原有系统功能之外解决,比如数据查询,数据操控等.
这就是外部辅助程序,就是传说中的外挂.
外挂系统是系统的补充,所以必须建立在对原有系统的模型的理解基础之上,外挂存在的意义这里不做累述,只对其如何敏捷开发提出新的想法.
开发外挂,有很多种方式,开发C/S,B/S各种程序,但是最终是一个程序解决一个功能单元,在实际生产中,大多数外挂类应用均基于数据库.可以这么说,程序的最终目的,是根据预期的参数,对目标数据进行增删查改,通过简单SQL语句,或者嵌套的存储过程.
有没有可能开发一个外挂平台,可以跨平台,跨数据库,基于SQL语义,进行敏捷开发呢?
下面将介绍由楼主开发的”敏捷外挂开发平台”,支持开发人员对目标程序的输入参数进行风格自定义,参数之间的联动关系即可自定义设置;这些设置无须编程,只需遵循向导,
而对输出参数,也可以表格型输出,或者文本格式的输出(捕获数据库控制台输出),在高级应用中,表格型输出,亦可对特定的字段绑定自定义连接.
说这么多,把大家绕晕了,来个感性认识,主界面之一
Figure 1
首先有一个支持拖曳,类似于微软的文件管理器那样的目录管理,用于管理多个应用,相对应的还有权限管理,但这些不是重点,不做累述.重点是如何把SQL语句变成web页面!!,以下就是过程..通过2个普通例子,一个高级设计的例子.
2.设计和发布
现在说一个典型的开发过程.
先新增一个外挂应用,此处称为处理器(下同.),
以两个实例来讲解,示例二为DML类,示例二为Select类.
为了方便起见, SQL层业务逻辑使用ORACLE的PL/SQL.另外MSSQL仅支持 Transact-SQL 2008+版本.其他数据库暂不支持.
2.1示例一:DML 类型处理器
2.1.1 新建DML处理器
SQL块可以是DML,也可以是匿名块,甚至是DDL(权限控制) 如图 figure2.1.1 -1
Figure 2.1.1 - 1
当保存处理器的时候,自动生成参数设计界面,如图2.1.1 -2
Figure 2.1.1 - 2
先预览以下执行时效果:
2.1.2 参数定制
假如你已经设置好主SQL语句,及参数.在生成的参数界面设计页面中,你可以对参数进行重定制,见图Figure 2.1.2 - 1
点 编辑定制参数1.
Figure 2.1.2 -3
2. SQL语句,如下图
Figure 2.1.2 -4
联动SQL语句.SQL里面可以嵌套其他参数,即当一个参数值变化时,能触发构造其他参数控件,如下例, Figure 2.1.2 -5
(图中step_id参数引用prod_id参数和co_nbr参数,.当被引用参数均获值的时候,触发 step_id绑定的数据源异步执行查询获得选项.注意参数联动必须是有向图,而且无回路)
2.2示例二: 查询类处理器
2.2.1新建查询类处理器
查询类:新建查询处理器,如下图
&n bsp;&nbs p; figure 2.2.1
保存后生成
figure 2.2.2
再设置参数
再设置参数
2.2.2 自定义参数
此处同示例1的2.1.2节,请参照.
3.高级设计
当您完成多个处理器设计之后,您还可以利用已有的处理器进行集成操作,类似于CS的弹窗设计,
3.1 自定义输出字段绑定的连接
先给一个整体图,下图是一个已有的处理器.
Figure 3.1.1
其输出语句为
点击设置连接其他处理器的列时,效果如下
那如何做到这一点,分三步
注意:集成管理这块也是通过敏捷外挂自身完成的.
1)注册源处理器
2)输出字段绑定.
在FTTH助手这个例子中,在 输出字段 '订单号','申请单','点击','外部申请单','号码','动作','受理地址信息 ','受理地址ID','最新地址信息','最新地址ID','点击2','点击3','点击4','点击5'中绑定连接处理器
如图,绑定”订单号”字段,由哪个处理器引用作为参数,执行
3)源处理器”字段”外观效果及事件绑定
# 主要技术栈
1. .net WebForms/MVC/WEBAPI hybrids
2. 数据库智能:引用对应数据库的动态SQL分析包.
ORACLE为 DBMS_SQL包
MSSQL则用到了EXECUTE 和 SP_EXECUTESQL
3. 主要算法:
参数异步联动用到 “无回路有向图算法”.
4. 前端组件:
angularjs + ui-state + restangular
1.处理器模型AP_HANDLERS
Name |
Type |
Default/Expr. |
Comments |
HANDLER_ID |
INTEGER |
|
主键 |
HANDLER_NAME |
VARCHAR2(128) |
|
名称 |
CATEGORY_ID |
INTEGER |
|
目录ID |
DB_TYPE |
VARCHAR2(12) |
'Oracle' |
数据库类型 |
DB_CONNECTION |
VARCHAR2(128) |
|
连接配置 |
SQL_BLOCK |
VARCHAR2(4000) |
|
SQL语言 |
HANDLER_DESC |
VARCHAR2(1024) |
|
描述 |
CREATE_TIME |
DATE |
sysdate |
创建时间 |
SQL_CMD_TYPE |
VARCHAR2(24) |
'BLOCK' |
语句类型,DML/DDL或者SQL |
AUTHORIZED_USERS |
VARCHAR2(1024) |
'rptadmin' |
授权用户 |
CREATEOR |
VARCHAR2(24) |
'rptadmin' |
创建用户 |
STS |
CHAR(1) |
'A' |
状态 |
ABBR |
VARCHAR2(400) |
|
汉语拼音声母缩写 |
ABBRFULL |
VARCHAR2(1024) |
|
汉语拼音全拼 |
PREPARING_BLOCK |
VARCHAR2(4000) |
|
额外执行语句(仅当有分步操作可用) |
EXTENDS01 |
VARCHAR2(4000) |
|
扩展字段 |
2.处理器参数模型 AP_HANDLERS_PARAMS
Name |
Type |
Default/Expr. |
Comments |
HANDLER_PARAM_ID |
INTEGER |
|
主键 |
HANDLER_ID |
INTEGER |
|
处理器ID |
PARAM_NAME |
VARCHAR2(200) |
|
参数名 |
PARAM_DTYPE |
VARCHAR2(12) |
|
参数类型 |
PARAM_NAME_C |
VARCHAR2(400) |
|
参数显示名 |
CONTROL_TYPE |
VARCHAR2(400) |
|
获值控件类型 |
CONTROL_DATASOURCE_TYPE |
VARCHAR2(400) |
|
参数获值控件数据源类型(有格式化键值对,SQL语句等) |
CONTROL_DATASOURCE |
VARCHAR2(1024) |
|
数据源 |
CONTROL_DATASOURCE_KEY |
VARCHAR2(400) |
|
数据源显示列 |
CONTROL_DATASOURCE_VALUE |
VARCHAR2(1024) |
|
数据源值列 |
INVISIBLE_ROLES |
VARCHAR2(1024) |
|
不可见角色---弃用 |
IS_VISIBLE |
CHAR(1) |
|
参数是否可见 |
IS_REQUIRED |
CHAR(1) |
|
是否必填 |
VALID_REGULAR |
VARCHAR2(1024) |
|
验证正则表达式 |
FORMAT_DESC |
VARCHAR2(1024) |
|
格式描述 |
PARA_DATA_SIZE |
VARCHAR2(10) |
'20,1' |
文本类控件的WIDTH,HEIGHT |
ORDER_ID |
INTEGER |
|
排序ID |
IS_INTERLINK |
CHAR(1) |
'N' |
是否联动其他参数 |
INTERLINK_EVENT |
VARCHAR2(20) |
|
联动其他参数事件 |
附件:敏捷外挂发布平台