U9-Sekundärentwicklung der BP-Timing-Task-Plug-In-Entwicklung

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.

Fügen Sie hier eine Bildbeschreibung ein

2. Ändern Sie den Projektnamen

Ändern Sie den Projektnamen und löschen Sie die automatisch generierte .ubfbp-Datei.

Fügen Sie hier eine Bildbeschreibung ein

Klicken Sie auf die Schaltfläche „Eigenschaften“, um den Namen zu ändern:

Fügen Sie hier eine Bildbeschreibung ein
Nach der Modifikation:

Fügen Sie hier eine Bildbeschreibung ein

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“.

Fügen Sie hier eine Bildbeschreibung ein

Wählen Sie die Modellansicht aus und doppelklicken Sie auf das Element, um die Operationsseite zu öffnen.

Fügen Sie hier eine Bildbeschreibung ein
Ziehen Sie die Aktionsschaltfläche auf das Formular:

Fügen Sie hier eine Bildbeschreibung ein
Klicken Sie auf die Vorgangsentität, klicken Sie auf die Eigenschaftsschaltfläche und ändern Sie den Namen:

Fügen Sie hier eine Bildbeschreibung ein

Ändern Sie den Transaktionstyp in „erforderlich“:

Fügen Sie hier eine Bildbeschreibung ein

4. Code erstellen

Klicken Sie mit der rechten Maustaste auf das Projekt und klicken Sie auf „Konstruieren“.

Fügen Sie hier eine Bildbeschreibung ein

Den Pfad des generierten Codes können Sie in der Nachrichtenliste sehen

Fügen Sie hier eine Bildbeschreibung ein

Code schreiben

Öffnen Sie das generierte Projekt, klicken Sie mit der rechten Maustaste auf die Referenz und fügen Sie eine Referenz hinzu:

Fügen Sie hier eine Bildbeschreibung ein

Hinweis: BP muss *PMISV.Agent.dll importieren, um den Agenten zu importieren.
Fügen Sie hier eine Bildbeschreibung ein

Code schreiben:

Fügen Sie hier eine Bildbeschreibung ein

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.

Fügen Sie hier eine Bildbeschreibung ein
Wenn der Kopiervorgang fehlschlägt, lesen Sie bitte den Inhalt von AutoBuild.bat, um ihn manuell zu kopieren.

Fügen Sie hier eine Bildbeschreibung ein

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. . .

Fügen Sie hier eine Bildbeschreibung ein

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:
Fügen Sie hier eine Bildbeschreibung ein

Nach Abschluss der Veröffentlichung wird eine .sg-Datei im Lösungsverzeichnis generiert.

Fügen Sie hier eine Bildbeschreibung ein

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.

Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

2. Konfigurationskomponenten

Öffnen Sie die Datei BuildupDesigner.exe im Verzeichnis \UBFV60\U9.VOB.Product.UBF\UBFStudio

Fügen Sie hier eine Bildbeschreibung ein

Wählen Sie „Supply Chain – Purchasing Management“ und klicken Sie auf die Schaltfläche „Komponente hinzufügen“.

Fügen Sie hier eine Bildbeschreibung ein
Komponente laden

Fügen Sie hier eine Bildbeschreibung ein

Wählen Sie die .sg-Datei aus:
Fügen Sie hier eine Bildbeschreibung ein
Wählen Sie die zu ladende Komponente aus und klicken Sie dann auf OK.
Fügen Sie hier eine Bildbeschreibung ein
Wählen Sie dann Extras – Veröffentlichen.

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

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.

Fügen Sie hier eine Bildbeschreibung ein

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.

Fügen Sie hier eine Bildbeschreibung ein

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.

Fügen Sie hier eine Bildbeschreibung ein

Klicken Sie nach dem Speichern auf „Vorgang – Anfrage senden“. Wenn Sie den Absender und die Übermittlungszeit haben, ist der Vorgang erfolgreich.

Fügen Sie hier eine Bildbeschreibung ein

6. Debugging-Programm

Beachten Sie, dass Sie zum Debuggen von BP als zusätzlichen Prozess ApplicationService.exe anstelle von w3wp.exe auswählen:

Fügen Sie hier eine Bildbeschreibung ein

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:

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

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:

Fügen Sie hier eine Bildbeschreibung ein

Wenn Sie nicht wissen, welche Dateien Sie kopieren sollen, können Sie den Inhalt in der Datei AutoBuild.bat nachschlagen.
Fügen Sie hier eine Bildbeschreibung ein

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:

Fügen Sie hier eine Bildbeschreibung ein
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.

Supongo que te gusta

Origin blog.csdn.net/zhanyd/article/details/126635853
Recomendado
Clasificación