Fourth Shift四班FSTI模块的资料文档格式.docx
《Fourth Shift四班FSTI模块的资料文档格式.docx》由会员分享,可在线阅读,更多相关《Fourth Shift四班FSTI模块的资料文档格式.docx(62页珍藏版)》请在冰点文库上搜索。
第二个类库FourthShift.TransactionClient用来处理事务。
FSTIClient是该类库的主要类,它有两个方法:
ProcessCDF和ProcessID,分别接收CDF事务字符串和事务对象。
FSTIClient使用.NetRemoting技术向服务器提交请求以获得高速处理。
处理结束后,服务器向客户端返回成功或失败的信息。
11.3手册结构
本手册旨在帮助程序员使用FourthShift.Transactions和FourthShift.TransactionClient中的类。
手册按以下结构编写:
FourthShift.Transactions编程指南
FourthShift.Transactions类库的编程指南。
使用示例程序演示使用库中的类。
FourthShift.TransactionClien编程指南
FourthShift.TransactionClient类库的编程指南。
使用示例程序演示FourthShift.TransactionClient库中的FSTIClient类和相关的FSTIError类的主要功能。
FourthShift.TransactionsAPI
FourthShift.Transactions库的参考手册。
包含了库中类的详尽的属性和方法。
FourthShift.TransactionClientAPI
FourthShift.TransactionClient库的参考手册。
包含了库中类的详尽的属性和方法。
FSTI系统管理
FSTISDK的管理信息。
本部分特别重要的是Impersonation配置信息。
12.FourthShift.Transactions编程指南
FourthShift.Transactions提供了一致的方便的接口,用于生成和操作四班RCVR和SOP导入所支持的事务。
库中的类基于四班的数据导入字典和SOP的导入字典。
在与FSTIClient对象联合使用进行实时处理时,库中的类尤其有用;
也可以单独使用生成逗号分隔格式(CDF)的事务字符串,这些字符串可写入文件后用于RCVR和四班SOP导入。
库中的类以相关的6个字符命名,例如,ITMB00类用来生成一个新物料,MOMT00用来生成新的生产订单页眉,COMTOO插入一个新的客户订单页眉,COMT05添加客户订单行,SOPO00生成一个新的SOP订单页眉。
类库包含有上百个功能类,每一个都在四班或SOP导入字段中定义。
类中的大多数属性,例如ITMB00类的ItemNumber和ItemDescription,都对应该类基于的逗号分隔格式的各字段。
事务类属性的命名是基于四班SQL函数处理视图名称,因为这些名称有自描述性并易于理解。
但FourthShift.Transactions也支持TITANIUM和SQL系统。
为了描述更具体一些,以下是ITMB00的所有属性:
Category,Description,IsInspectionRequired,IsLotTraced,IsSerialized,ItemDescription,ItemNumber,ItemRevision,ItemStatus,ItemType,ItemUM,MakeBuyCode,Name,OrderPolicy,RequiredAreSet
以下是MOMT00类的属性:
Category,DeliverTo,Description,MONumber,Name,Planner,RequiredAreSet,TextLine1,TextLine2,TextLine3,TextLine4,WorkCenter
也有一些属性是所有事务类共有的,如Category、Description和RequiredAreSet。
其余字段是各类型事务独有的,如ItemNumber、ItemUM是ITMB00的;
MONumber是MOMT00的。
应用程序生成类的实例,设置ItemNumber、ItemDescription、ItemUM等字段,然后就可以使用对象的GetString中获取正确的格式化字符串,或者将对象传递给FSTIClient处理。
12.1编程范例说明
本例将会通过一个名为ItmbObject的示例程序使用FSTransaction对ITMB00对象和MOMT03对象进行操作。
如果已经安装了FSTM模块,在四班安装目录下的\mfgsys\fstm\SDKSampleCode目录会有源代码。
实例程序是用C#和VB.NET编写的一个简单的控制台程序,而VB6则是用列表框来模拟控制台窗口。
12.2引用类库
为了能访问FourthShift.Transactions库,C#和VisualBasic.NET程序员需要在程序中添加如下引用:
ProgramFiles=>
FourthShift=>
Managed=>
FourthShift.Transactions.dll
该库文件仅在编程时起作用,工程的引用设置copylocal应设为false。
因为运行时的dll实际是在是在全局编译缓存(GAC)中,而GAC则是四班工作站安装的一部分。
VB6程序员需要添加如下应用:
FourthShiftTransactionLibrary
一旦引用已设置,C#和VB.NET程序员就需要添加使用或导入声明:
[C#]
usingSystem;
usingSystem.Collections;
usingSoftBrands.FourthShift.Transaction;
[VB.Net]
ImportsSystem
ImportsSystem.Collections
ImportsSoftBrands.FourthShift.Transaction
12.3变量声明
示例程序是一个控制台程序,代码结构是一个大的函数,大多数变量在顶部声明(VB6代码都包含在窗体加载事件中)。
以下是程序的第一部分--变量声明,这部分之前是用于描述变量用途的注释。
ITMB00myItem=newITMB00();
stringtransactionString;
ITransactionFieldcurrentField;
string[]itemRequiredFieldNames;
int[]itemRequiredFieldNumbers;
int[]itemEligibleFieldNumbers;
inti;
DimmyItemAsITMB00=NewITMB00
DimtransactionStringAsString
DimcurrentFieldAsITransactionField
DimitemRequiredFieldNamesAsString()
DimitemRequiredFieldNumbersAsInt32()
DimitemEligibleFieldNumbersAsInt32()
DimiAsInt32
[VB6]
DimmyItemAsITMB00
SetmyItem=NewITMB00
DimitemRequiredFieldNames()AsString
DimitemRequiredFieldNumbers()AsLong
DimitemEligibleFieldNumbers()AsLong
DimiAsLong
第一行生成一个ITMB00对象;
第二个变量transactionString用于最终保存ITMB00CDF格式的事务字符串。
下一个变量currentField是ItransactionField类型的。
TransactionField类型和它的接口ItransactionField是使用该类库的关键概念。
ITMB00的大所数属性都对应原来的CDF字符串的字段。
这些属性都来自于拥有ItransactionField接口的TransactionField类型的普通对象。
这意味着这些属性都共有一些如Value和Type这样的属性,这也使编程的通用性更好,如以下VB.Net语法所示:
currentField=myItem.ItemNumber
‘currentFieldreferencesItemNumber
currentField=myItem.ItemDescription
‘currentFieldnowreferencesItemDescription
同样,所有的事务类如ITMB00和MOMT00都派生自TransactionId,而TransactionId实现了Itransaction接口,这样就可以编写如下的通用代码:
DimcurrentTransactionasITransaction
currentTransaction=newITMB00
‘currentTransactionreferencesaITMB00transactionobject
currentTransaction=newMOMT00
‘currentTransactionnowreferencesaMOMT00transactionobject
后面的三个变量用来保存由TransactionId派生的所有类的方法的返回值。
itemRequiredNames可以接收一个字段名数组,字段名顺序必须按照RCVR或SOP导入的有效输入的事务设置。
itemRequiredFieldNumbers保存类似的信息,但它保存的是事务字符串的位置而非名称。
然而事务中字段并不都是有效的,许多符合格式的事务字段串很多位置都是空的。
itemEligibleFieldNumbers用于接收调用方标识可以填入的字段位置的方法的结果。
EligibleFieldsNumbers是RequiredFieldNumbers的超集。
12.4设置属性
以下的代码是设置myITMB00对象的属性。
记住,每个属性,如ItemNumber,都是一个对象的引用,该对象实现了ItransactionField接口,并且用.Value语法来保存和检索实际设置值。
myItem.ItemNumber.Value="
19-BLACK"
;
myItem.ItemDescription.Value="
19\"
FRAME,BLACK"
myItem.ItemUM.Value="
EA"
myItem.ItemRevision.Value="
01"
myItem.MakeBuyCode.Value="
M"
myItem.ItemType.Value="
N"
myItem.ItemStatus.Value="
A"
myItem.IsLotTraced.Value="
myItem.IsSerialized.Value="
myItem.OrderPolicy.Value="
3"
myItem.IsInspectionRequired.Value="
Y"
WithmyItem
.ItemNumber.Value="
.ItemDescription.Value="
19"
"
.ItemUM.Value="
.ItemRevision.Value="
.MakeBuyCode.Value="
.ItemType.Value="
.ItemStatus.Value="
.IsLotTraced.Value="
.IsSerialized.Value="
.OrderPolicy.Value="
.IsInspectionRequired.Value="
EndWith
12.5获取事务字符串
下一行代码演示了如何获取以逗号分隔的ITMB00事务的字符串。
用枚举值参数来指定所需的格式。
这段代码传递TransactionStringFormat.fsCDF值来获取CDF格式的字符串。
也可以TransactionStringFormat.fsXML参数取得XML字符串。
//RetrievethetransactionstringfromtheItmb00object
transactionString=myItem.GetString(TransactionStringFormat.fsCDF);
Console.WriteLine("
===TransactionString===\n"
);
Console.WriteLine(transactionString);
Console.WriteLine();
'
RetrievethetransactionstringfromtheItmb00object
transactionString=myItem.GetString(TransactionStringFormat.fsCDF)
===TransactionString==="
&
vbCrLf)
Console.WriteLine(transactionString)
Console.WriteLine()
transactionString=myItem.GetString(TransactionStringFormat_fsCDF)
listOutput.AddItem"
listOutput.AddItemtransactionString
这部分代码的执行结果是:
===TransactionString===
ITMB00"
"
11/05/2003"
018:
10:
25"
0"
GetString方法将会在事务字符串的第三和第四个位置填入当前日期和时间。
12.6取得必填字段名
所有的事务类都有一个GetRequiredFieldNames用于获得必填字段名。
这段代码演示了如何取得字段名。
有些事务类,其字段可能需要填写,这是由配置决定的,例如与批次相关的物料。
该函数不能返回可能要填字段,只能返回必须要填的字段。
//GettherequiredfieldnamesfromtheItmb00object
itemRequiredFieldNames=myItem.GetRequiredFieldNames();
===RequiredFieldsNames===\n"
for(i=0;
i<
itemRequiredFieldNames.Length;
i++)
{
FieldName:
{0}"
itemRequiredFieldNames[i]);
}
GettherequiredfieldnamesfromtheItmb00object
itemRequiredFieldNames=myItem.GetRequiredFieldNames()
===RequiredFieldsNames==="
Fori=0ToitemRequiredFieldNames.Length-1
Console.WriteLine("
{0}"
itemRequiredFieldNames(i))
Nexti
Fori=0ToUBound(itemRequiredFieldNames)
listOutput.AddItem"
"
itemRequiredFieldNames(i)
===RequiredFieldsNames===
ItemNumber
ITMB00中只有ItemNumber是必填的,其它都是由选项决定的。
12.7取得必填字段序号
与必填字段名不同的是,以下代码使用GetRequiredFieldNumbers方法取得逗号分隔字符串中必填字段的序号。
结果显示的是必填的ItemNumber字段位置7。
//Gettherequiredfieldnumbers(thepositionsinthetransactionstring
//thatarerequired)
itemRequiredFieldNumbers=myItem.GetRequiredFieldNumbers();
===RequiredFieldsNumbers===\n"
itemRequiredFieldNumbers.Length;
FieldNumber:
itemRequiredFieldNumbers[i]);
Gettherequiredfieldnumbers(thepositionsinthetransactionstring
thatarerequired)
itemRequiredFieldNumbers=myItem.GetRequiredFieldNumbers()
===RequiredFieldsNumbers==="
Fori=0ToitemRequiredFieldNumbers.Length-1
itemRequiredFieldNumbers(i))
Gettherequiredfieldnumbers(thepositionsinthetransactionstring
listO