Bestellung eines BP-Plug-ins für zeitgesteuerte Aufgaben
Vor kurzem musste unser Unternehmen die Bestellgenehmigung und OA integrieren, d. h. den Genehmigungsprozess von u9 auf OA verlagern. Wenn der Verkäufer auf die Standardschaltfläche „Kauf abschicken“ klickt, werden die Informationen der Bestellung an den OA-Prozess weitergeleitet und die Überprüfung erfolgt im OA. Nach Abschluss der OA-Überprüfung wird das Überprüfungsergebnis an U9 zurückgeschrieben.
Um diese Funktion zu erreichen, müssen Sie das BE-Plugin und das BP-Plugin verwenden.
Das BE-Plug-in ist dafür verantwortlich, die Bestellinformationen in die Zwischentabelle zu schreiben, wenn der Verkäufer die Bewertung abgibt, und löst dann den OA-Prozess aus.
(Bitte lesen Sie diesen Artikel: BE-Plug-in-Entwicklung für U9-Sekundärentwicklung )
Das BP-Plugin ist dafür verantwortlich, die Zwischentabelle regelmäßig abzufragen und die Prüfergebnisse zurück in das u9-System zu schreiben.
Hier erkläre ich den Entwicklungsprozess des BP-Plug-Ins.
Projektcode generieren
1. Öffnen Sie das ubfdev-Tool, um eine neue Lösung zu erstellen
Öffnen Sie das ubfdev-Tool, klicken Sie auf Datei-Neue Lösung, überprüfen Sie das Vorgangselement, geben Sie den Namen der Lösung ein und klicken Sie auf die Schaltfläche OK.
2. Ändern Sie den Projektnamen
Ändern Sie den Projektnamen und löschen Sie die automatisch generierte .ubfbp-Datei.
Klicken Sie auf die Schaltfläche „Eigenschaften“, um den Namen zu ändern:
Nach der Modifikation:
3. Erstellen Sie neue Geschäftskomponenten
Klicken Sie mit der rechten Maustaste auf das Projekt „Neu erstellen“, wählen Sie die Geschäftsbetriebskomponente aus, geben Sie den Komponentennamen ein und klicken Sie auf die Schaltfläche „OK“.
Wählen Sie die Modellansicht aus und doppelklicken Sie auf das Element, um die Operationsseite zu öffnen.
Ziehen Sie die Aktionsschaltfläche auf das Formular:
Klicken Sie auf die Vorgangsentität, klicken Sie auf die Eigenschaftsschaltfläche und ändern Sie den Namen:
Ändern Sie den Transaktionstyp in „erforderlich“:
4. Code erstellen
Klicken Sie mit der rechten Maustaste auf das Projekt und klicken Sie auf „Konstruieren“.
Den Pfad des generierten Codes können Sie in der Nachrichtenliste sehen
Code schreiben
Öffnen Sie das generierte Projekt, klicken Sie mit der rechten Maustaste auf die Referenz und fügen Sie eine Referenz hinzu:
Hinweis: BP muss *PMISV.Agent.dll importieren, um den Agenten zu importieren.
Code schreiben:
namespace UpdatePurchaseOrderAuditStatus
{
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using UFIDA.U9.CBO.Pub.Controller;
using UFIDA.U9.PM.PO;
using UFSoft.UBF.AopFrame;
using UFSoft.UBF.Util.Context;
using UFSoft.UBF.Util.DataAccess;
using UFIDA.U9.Base.DTOs;
using UFIDA.U9.PM.DTOs;
/// <summary>
/// UpdateStatus partial
/// </summary>
public partial class UpdateStatus
{
internal BaseStrategy Select()
{
return new UpdateStatusImpementStrategy();
}
}
#region implement strategy
/// <summary>
/// Impement Implement
///
/// </summary>
internal partial class UpdateStatusImpementStrategy : BaseStrategy
{
public UpdateStatusImpementStrategy() {
}
public override object Do(object obj)
{
UpdateStatus bpObj = (UpdateStatus)obj;
//get business operation context is as follows
//IContext context = ContextManager.Context
//auto generating code end,underside is user custom code
//and if you Implement replace this Exception Code...
//throw new NotImplementedException();
DataSet ds = new DataSet();
DataParamList paras = new DataParamList();
StringBuilder sql = new StringBuilder();
//查找OA审核通过并未同步的数据,OA审核不通过的不处理
sql.Append("select * from PurchaseOrder_Middle where audit_status = 1 and state = 0");
DataAccessor.RunSQL(UFSoft.UBF.Util.DataAccess.DataAccessor.GetConn(), sql.ToString(), paras, out ds);
if (ds != null)
{
if (ds.Tables.Count > 0)
{
// 生成审核状态BP对象
UFIDA.U9.ISV.PO.Proxy.ApprovePOISVProxy approveProxy = new UFIDA.U9.ISV.PO.Proxy.ApprovePOISVProxy();
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
try
{
string auditPerson = Convert.ToString(dataRow["audit_person"]);
if (auditPerson != null)
{
//设置审核人
setApprovedBy(auditPerson);
}
List<IDCodeNameDTOData> dtoDatas = new List<IDCodeNameDTOData>();
IDCodeNameDTOData dtoData = new IDCodeNameDTOData();
dtoData.ID = Convert.ToInt64(dataRow["PRID"]);
dtoDatas.Add(dtoData);
//审核通过
approveProxy.ActionType = 8; // 审核:8
approveProxy.POList = dtoDatas;
approveProxy.TargetOrgCode = UFIDA.U9.Base.Context.LoginOrg.Code;
approveProxy.Do();
//修改中间表状态
sql.Clear();
sql.Append("update PurchaseOrder_Middle set state = 1,memo = '审核状态同步成功',update_by = 'sys',update_time = GETDATE() where id = " + dataRow["id"]);
DataAccessor.RunSQL(UFSoft.UBF.Util.DataAccess.DataAccessor.GetConn(), sql.ToString(), paras, out ds);
}
catch (Exception ex)
{
//记录异常信息
sql.Clear();
sql.Append("update PurchaseOrder_Middle set state = -1, memo = '" + ex.Message + "',update_by = 'sys',update_time = GETDATE() where id = " + dataRow["id"]);
DataAccessor.RunSQL(UFSoft.UBF.Util.DataAccess.DataAccessor.GetConn(), sql.ToString(), paras, out ds);
//throw ex; //throw 异常会导致sql回滚
}
}
}
}
return null;
}
//设置审核人
private void setApprovedBy(String UserCode)
{
PlatformContext context = PlatformContext.Current;
if (!((context == null) || string.IsNullOrEmpty(context.OrgCode)))
{
ContextDTO tdto = new ContextDTO();
//传入审核人工号
tdto.UserCode = UserCode;
tdto.EntCode = context.EnterpriseID;
tdto.CultureName = context.Culture;
tdto.OrgCode = context.OrgCode;
tdto.WriteToContext();
}
}
}
#endregion
}
Führen Sie nach dem Kompilieren das Batchprogramm AutoBuild.bat aus, das die DLL-Datei des entsprechenden Projekts automatisch in das u9-Systemverzeichnis kopiert.
Wenn der Kopiervorgang fehlschlägt, lesen Sie bitte den Inhalt von AutoBuild.bat, um ihn manuell zu kopieren.
Denken Sie auch daran, die SQL-Anweisung im Verzeichnis UBFV60\U9.VOB.Product.Other\Unconfiged\MetadataScript auszuführen.
Ich habe vergessen, die SQL hier auszuführen, was dazu geführt hat, dass der Dienst nicht auf der Seite mit den Dienstberechtigungen gefunden wurde, was viel Zeit verschwendet hat. . .
Komponenten veröffentlichen
Klicken Sie mit der rechten Maustaste auf die Lösung, klicken Sie auf Dienstkomponenten veröffentlichen und veröffentlichen Sie die Komponenten:
Nach Abschluss der Veröffentlichung wird eine .sg-Datei im Lösungsverzeichnis generiert.
Die Datei „environment.xml“ muss vor der Konfiguration von Komponenten konfiguriert werden.
1. Konfigurieren Sie die Datei „environment.xml“.
Öffnen Sie die Datei „environment.xml“ im Verzeichnis \UBFV60\U9.VOB.Product.UBF\UBFStudio\Runtime und konfigurieren Sie die Datenbankverbindungsinformationen.
2. Konfigurationskomponenten
Öffnen Sie die Datei BuildupDesigner.exe im Verzeichnis \UBFV60\U9.VOB.Product.UBF\UBFStudio
Wählen Sie „Supply Chain – Purchasing Management“ und klicken Sie auf die Schaltfläche „Komponente hinzufügen“.
Komponente laden
Wählen Sie die .sg-Datei aus:
Wählen Sie die zu ladende Komponente aus und klicken Sie dann auf OK.
Wählen Sie dann Extras – Veröffentlichen.
3. Fügen Sie Dienstberechtigungen hinzu
Öffnen Sie die u9-Dienstberechtigungsseite, wählen Sie das Beschaffungsverwaltungsmodul aus, wählen Sie den von uns hinzugefügten BP-Dienst aus, normalerweise auf der letzten Seite, und wählen Sie dann im Dropdown-Feld „Ausführung“ die Option „Zulassen“ aus.
4. Fügen Sie die Tabellendaten UBF_JOB_NoParaRunableBPSVList ein
Der neueste Patch von U9 6.0 optimiert die Funktion zur Auswahl asynchroner Programme in der Anforderungsverwaltung. Sie müssen BP-bezogene Daten in die Vorfertigungstabelle UBF_JOB_NoParaRunableBPSVList einfügen, bevor Sie BP auswählen können (für die Vorfertigung ist der vollständige Name von BP erforderlich).
Das voreingestellte Skript lautet wie folgt: (Jeder zur Ausführung geplante BP muss voreingestellt werden.)
INSERT INTO UBF_JOB_NoParaRunableBPSVList VALUES( NewID(), 'UpdatePurchaseOrderAuditStatus.UpdateStatus', 'Prüfstatus der Bestellung ändern')
Hinweis: Das FullName-Feld der Tabelle UBF_JOB_NoParaRunableBPSVList lautet: „UpdatePurchaseOrderAuditStatus.UpdateStatus“ und muss in die Seite der Dienstautorität kopiert werden. Machen Sie also keinen Fehler.
5. Fügen Sie die Anforderungsverwaltung hinzu
Öffnen Sie die Seite zur Anforderungsverwaltung, geben Sie den Code und den Anforderungsnamen ein, wählen Sie dann das Planungsschema, die Anwendung und das asynchrone Programm aus und klicken Sie auf Speichern.
Klicken Sie nach dem Speichern auf „Vorgang – Anfrage senden“. Wenn Sie den Absender und die Übermittlungszeit haben, ist der Vorgang erfolgreich.
6. Debugging-Programm
Beachten Sie, dass Sie zum Debuggen von BP als zusätzlichen Prozess ApplicationService.exe anstelle von w3wp.exe auswählen:
Patch machen
Informationen zur Patch-Produktion finden Sie in diesem Artikel: U9 Secondary Development Patch-Produktion
1. Kopieren Sie die bdxml-Datei
Kopieren Sie die .bdxml-Datei unter dem ubfdev-Lösungspfad in den AssemblyInfo-Ordner:
2. Kopieren Sie bp-bezogene Kompilierungsdateien
Wir kompilieren BP-bezogene Dateien aus
Projektpfad\BpImplement\bin\Debug
Projektpfad\BpAgent\bin\Debug
In den Ordner „Dateien“ kopieren:
Wenn Sie nicht wissen, welche Dateien Sie kopieren sollen, können Sie den Inhalt in der Datei AutoBuild.bat nachschlagen.
3. Kopieren Sie die .bulk-Datei
Kopieren Sie dann die .bulk-Datei aus dem Pfad UBFV60\U9.VOB.Product.Other\Unconfiged\MetadataScript in den Metadata-Ordner:
Nachdem der Patch fertig ist, kann er veröffentlicht werden.
zu guter Letzt
Dies ist der gesamte Prozess der Entwicklung des BP-Plug-Ins für zeitgesteuerte Aufgaben. Die Schritte sind relativ umständlich und es gibt relativ wenige Materialien zur zweiten Eröffnung von u9 im Internet. Machen Sie einfach eine Aufzeichnung zur späteren Bezugnahme.