MIS数据流脚本编程
下载:
示例项目: /Files/zc22/Samsara.Demo.rar示例数据库:/Files/zc22/samsara.db.rar
说明:
项目和数据库解压。修改代码的数据库字段 config.Filename 指向测试数据库:
NoebeConfiguration config = new NoebeConfiguration();
config.Filename = @"e:\temp\test.mdb";//修改
config.DatabaseType = Pixysoft.Framework.XSchEmA.DatabaseType.Access;
NamsaraManager.Initialize(config);
Input input = NamsaraManager.Instance.NewInput();
input.AddSource(GetTable("TABLE3", 5));
Output output = NamsaraManager.Instance.Run("TESTCHANNEL", input);
foreach (DataTable tb in output.InsertList)
{
insertlist.Add(tb.TableName, tb);
comboBox1.Items.Add(tb.TableName);
}
foreach (DataTable tb in output.UpdateList)
{
updatelist.Add(tb.TableName, tb);
comboBox2.Items.Add(tb.TableName);
}
config.Filename = @"e:\temp\test.mdb";//修改
config.DatabaseType = Pixysoft.Framework.XSchEmA.DatabaseType.Access;
NamsaraManager.Initialize(config);
Input input = NamsaraManager.Instance.NewInput();
input.AddSource(GetTable("TABLE3", 5));
Output output = NamsaraManager.Instance.Run("TESTCHANNEL", input);
foreach (DataTable tb in output.InsertList)
{
insertlist.Add(tb.TableName, tb);
comboBox1.Items.Add(tb.TableName);
}
foreach (DataTable tb in output.UpdateList)
{
updatelist.Add(tb.TableName, tb);
comboBox2.Items.Add(tb.TableName);
}
运行就可以得到结果。
解析
数据库Table2的表:
COLUMN1 | COLUMN2 | COLUMN3 | COLUMN4 |
---|---|---|---|
10 | 10 | 15 | 5 |
11 | 10 | 16 | 6 |
6 | 1 | 11 | 1 |
7 | 2 | 12 | 2 |
8 | 5 | 13 | 3 |
9 | 6 | 14 | 4 |
测试输入Table3表数据:
COLUMN1 | COLUMN2 | COLUMN3 | COLUMN4 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 |
3 | 3 | 3 | 3 |
4 | 4 | 4 | 4 |
5 | 5 | 5 | 5 |
测试项目使用的脚本如下:
CHANNEL TESTCHANNEL
{
LOADER.TABLE2.LOADER1.TRUE = EXCHANGER.TABLE2.E2,
LOADER.TABLE2.LOADER1.FALSE = EXCHANGER.TABLE2.E1
}
LOADER TABLE2 LOADER1
{
SQL = SELECT * FROM TABLE2 WHERE COLUMN2 = :COLUMN2,
:COLUMN2 = TABLE3.COLUMN1
}
EXCHANGER TABLE2 E2
{
NUM:COLUMN2 = TABLE2.COLUMN2 + 10
}
EXCHANGER TABLE2 E1
{
NUM:COLUMN2 = 991
}
{
LOADER.TABLE2.LOADER1.TRUE = EXCHANGER.TABLE2.E2,
LOADER.TABLE2.LOADER1.FALSE = EXCHANGER.TABLE2.E1
}
LOADER TABLE2 LOADER1
{
SQL = SELECT * FROM TABLE2 WHERE COLUMN2 = :COLUMN2,
:COLUMN2 = TABLE3.COLUMN1
}
EXCHANGER TABLE2 E2
{
NUM:COLUMN2 = TABLE2.COLUMN2 + 10
}
EXCHANGER TABLE2 E1
{
NUM:COLUMN2 = 991
}
输入模拟数据Table3,值如上。- 读取数据库,table2,column2 的值为table3.column1的值,根据是否读取成功分流。 (则samsara根据table3知道此处为多流,需要运行5次)
- 如果读取成功,则Exchanger.Table2.E2。修改Table2.Column2的值,加10
- 如果读取失败,则Exchanger.Table2.E1。初始化Table2.Column2的值,为991.
运算结果:
COLUMN1 | COLUMN2 | COLUMN3 | COLUMN4 |
---|---|---|---|
6 | 11 | 11 | 1 |
7 | 12 | 12 | 2 |
8 | 15 | 13 | 3 |
991 | |||
991 |
由于table2.column2不含有值3、4,所以loader有2次读取失败,进行了2次Exchanger.Table2.E1.其余则进行了3次运算。结果正确。
Refenrence:
ERP 数据流脚本框架 Samsara v2.0 脚本规范 (修订稿) 辰 2007-11-27 00:28 阅读:5 评论:0
Samsara v2.0 打造ERP数据流脚本编程 —— 脚本规范 辰 2007-11-21 14:37 阅读:1223 评论:5
ERP 数据流层 Namsara v2.0 预告 辰 2007-
加入一起研究
我想尝试推行一种以术易术的技术交流模式。所有参与者可以获得源代码,并且得到详细的解释,保证你们能够懂。
但是需要大家用自己一项技术进行交换,同样提供详细的代码和解释。(或者参与Samsara新需求开发)
对于samsara开源,我认为毫无意义。一堆我自己都觉得不漂亮的代码,大家想知道怎么写的就更难了。所以简单的代码开源没有意义,需要的就是“售后服务”。但是售后需要需要更多的投入,因此我想提出一种以术易术的技术交流模式。
因此,如果你懂:
。工作流引擎
。RBAC权限系统
。asp.net的安全框架
。一套能够与c#交互的快速web开发框架(非asp.net语言)
或者你愿意:
。编写一个vs2005插件,能够输入智能提示和补全,提高samsara脚本编程效率
又或者
。对数据流有更有趣的想法,参与进来进行samsara v3.0的开发
。有更有实用性的技术进行分享。
那么咱们聊聊?
reborn_zhang@Hotmail.com