정보 흐름 ERP 시스템의 정확하고 빠른 전송을 보장하기 위해, 필요 시스템에 메시지 상자에 대한 메커니즘을 설계합니다. 비즈니스 운영 시스템에서 발생하는 때, 우리는 ERP 정보가 신속하고 정확한 배달을 흐르는 수 있도록 작업자의 다음 부분을 상기 할 필요가있다. 예를 들어, MO (작업 지시, 작업 지시, 단일) 포스팅 후, 우리는 창고 따기 워크샵 생산을위한 재료의 준비를 알려야합니다. 메시지 인터페이스 박스는 실질적으로 다음과 같습니다 :
메시지 상자가 서비스 통지 (메시지) 및 워크 플로우 승인 (워크 플로우)가 포함되어 있습니다. 알림 서비스 후 조달 담당자 구매 주문 PO로, 필요 창고 담당자에게 준비 영수증을 알립니다. 워크 플로우 승인 승인 프로세스 기반의 문서 관리입니다.
메시지 상자의 실현의 과정에서, 우리는 고객이 때문에 주 구현 프로세스에이 기사를 쓰고, 동시에 전자 메일 시스템에 메시지를 보낼 필요가 발생했습니다.
고객의 목적은 메시지를 전송하고, 또한 해당 메일 계정에 메시지의 사본을 보내, 매우 간단합니다 :
섹션의 구현
전자 메일 서버 최대 1 개 세트
몇 가지 옵션이 있습니다
Exchange 서버 1 메일 서버 및 Outlook은 더 구성에 복잡 우수한 메일 서버, 조금입니다.
2 매직 WinMail는 WinWebMail 무료 버전이 제한 라이센스를 구입하는 데 필요한 초과, 50 ~ 100 개 계정을 해제 할 수 있습니다.
무료 3 hMailServer 오픈 소스, 무제한. COM 인터페이스는 차 개발을 제공 할 수 있습니다.
HMailServer는 ERP 시스템의 메일 서버로 선택했다. 여기에 구성 프로세스를 건너 뜁니다.
hMailServer를 설치 한 후, 도메인 EnterpriseSolution.com를 만들고, 그것을 할 수 있습니다.
2 동기화 계정 메일
아래의 관리자 비밀번호, 메일 서버에 연결을 같이 동기화 절차를 엽니 다. 이것은 내가 프로그램을 완료하기 위해 COM 인터페이스를 호출 할 것입니다.
이 프로그램에서는 ERP는 hMailServer 테이블에 사용자의 전자 메일 계정에 동기화 할 수 있습니다.
다음 확인을 다시 계정에 ERP가 hMailServer 메일 시스템에 동기화를 클릭, 동기화 버튼을 클릭 ERP 계정이 양식을 선택 엽니 다.
보기 hMailServer 계정 :
개발 섹션
위의 동기화 절차가 구현되는 방법을 자세히 설명하는 다음, C ++ COM 인터페이스 프로그램을 호출하는 간단한 C #입니다. COM hMailServer 공식 문서는 여기에 도움이 주소로 제공 : https://www.hmailserver.com/documentation/v5.6/?page=com_objects
1 개 읽기 메일 시스템 계정
먼저 서버에 대한 연결을 만들 hMailSever
private Domain HMailServerConnection()
{
string hMailDomain = txtDomain.Text;
string HMailUsername = "Administrator";
string HMailPassword = txtPassword.Text;
var objGlobal = new ApplicationClass();
objGlobal.Authenticate(HMailUsername, HMailPassword);
return objGlobal.Domains.get_ItemByName(hMailDomain);
}
대부분의 경우 우리는 모든 인터페이스 객체 도메인과 상호 작용한다.
그런 다음 인터페이스 그리드 컨트롤에 바인딩 계정 테이블 데이터를 읽습니다.
DataTable table = new DataTable("Table");
table.Columns.Add("Address", typeof (string));
table.Columns.Add("Password", typeof (string));
table.Columns.Add("PersonFirstName", typeof (string));
table.Columns.Add("PersonLastName", typeof (string));
_domain = HMailServerConnection();
Accounts accounts = _domain.Accounts;
for (int i = 0; i < accounts.Count; i++)
{
Account account = accounts[i];
DataRow dataRow = table.NewRow();
dataRow["Address"] = account.Address;
dataRow["Password"] = account.Password;
dataRow["PersonFirstName"] = account.PersonFirstName;
dataRow["PersonLastName"] = account.PersonLastName;
table.Rows.Add(dataRow);
}
gridAccount.AutoGenerateColumns = false;
gridAccount.DataSource = table;
2 추가 메일 계정
다음 코드 호출을 참조하십시오
Domain domain = HMailServerConnection();
Accounts accounts = domain.Accounts;
Account mailbox = accounts.Add();
mailbox.Address = email;
mailbox.Password = password;
mailbox.Save();
3 지우기 메일 계정
다음 코드
Accounts accounts = _domain.Accounts;
int count = accounts.Count;
while (count > 0)
{
_domain.Accounts.Delete(0);
count--;
}
_domain.Accounts.Refresh();
난 단지 컴파일 x86 플랫폼에이 프로젝트를 설정할 수 있도록 hMailSever는 COM 인터페이스의 x86 아키텍처 제공합니다.
이상 4 개 국어
이 프로젝트는 또한 내가 번역 인터페이스의 일반적인 방법의 컨트롤을 사용, 다중 언어를 포함, 다음 코드를 참조하십시오.
public static void TranslateForm(Form form)
{
string labelText = string.Empty;
DataRow dataRow = null;
string translation = string.Empty;
switch (Application.CurrentCulture.LCID)
{
case 2052:
translation = "CHS";
break;
case 1028:
case 3076:
case 5124:
translation = "CHT";
break;
}
foreach (var label in GetAllControlsRecusrvive<Label>(form))
{
labelText = label.Text.Trim().TrimEnd(':');
dataRow = Shared.TranslationTable.Rows.Find(labelText);
if (dataRow != null)
label.Text = Convert.ToString(dataRow[translation]);
}
난 그냥 다중 언어 기능을 완료하는 인터페이스 방법의 각 폼로드 이벤트에서 위를 호출해야합니다.
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Shared.TranslateForm(this);
}
프로젝트 XML을 포함 리소스 파일에서 인터페이스 번역 항목.
프로젝트 소스 코드 파일 : http://files.cnblogs.com/files/JamesLi2015/Synchronization.zip