How can I develop applications using VAF?

Hello, I've developed an application using VAF on my own and added it to my library, but it's not working. Finding resources related to VAF is very limited. How can I improve my skills in this area? My current goal with the code is to automatically open a document based on the given class workflow and state. If I can achieve this, I'd like to create a system that automatically opens documents every day at 8:00 AM.

Vault Application.cs

using System;
using MFiles.VAF.Common;
using MFiles.VAF.Core;
using MFilesAPI;

namespace PersonelDenemeVAF
{
    public class VaultApplication : ConfigurableVaultApplicationBase<Configuration>
    {
        [MFConfiguration("PersonelDenemeVAF", "Configuration")]
        private Configuration config = new Configuration();

        /// <summary>
        /// Nesne check-in olduğunda tetiklenir.
        /// Konfigürasyondaki workflow ve state ile karşılaştırma yapılır.
        /// </summary>
        [EventHandler(MFEventHandlerType.MFEventHandlerAfterCheckInChanges)]
        public void AfterCheckIn(EventHandlerEnvironment env)
        {
            try
            {
                var obj = new ObjVerEx(env.Vault, env.ObjVer);

                // Eğer bu zaten otomatik oluşturulmuş sınıf ise işlemi atla (sonsuz döngü önleme)
                if (obj.Class == this.config.Class.ID)
                    return;

                // Workflow ve State property değerlerini oku
                var workflowProp = obj.GetProperty(MFBuiltInPropertyDef.MFBuiltInPropertyDefWorkflow);
                var stateProp = obj.GetProperty(MFBuiltInPropertyDef.MFBuiltInPropertyDefState);

                int currentWorkflowID = workflowProp?.TypedValue.GetLookupID() ?? -1;
                int currentStateID = stateProp?.TypedValue.GetLookupID() ?? -1;

                // Önceki versiyonu al (version > 1 ise)
                int prevStateID = -1;
                if (env.ObjVer.Version > 1)
                {
                    var prevObjVer = new ObjVer();
                    prevObjVer.SetIDs(env.ObjVer.Type, env.ObjVer.ID, env.ObjVer.Version - 1);
                    var prevObj = new ObjVerEx(env.Vault, prevObjVer);
                    var prevStateProp = prevObj.GetProperty(MFBuiltInPropertyDef.MFBuiltInPropertyDefState);
                    prevStateID = prevStateProp?.TypedValue.GetLookupID() ?? -1;
                }

                // Workflow ve state değişimini kontrol et
                // prevStateID == -1 → önceki versiyon yoksa tetikle
                // prevStateID != currentStateID → state değişmişse tetikle
                if (currentWorkflowID == this.config.Workflow.ID &&
                    currentStateID == this.config.WorkflowState.ID &&
                    (prevStateID != this.config.WorkflowState.ID || prevStateID == -1))
                {
                    // Yeni nesne için property değerlerini hazırla
                    var builder = new MFPropertyValuesBuilder(env.Vault)
                        .SetClass(this.config.Class)
                        .SetWorkflowState(this.config.Workflow, this.config.WorkflowState);

                    env.Vault.ObjectOperations.CreateNewObjectEx(
                        (int)MFBuiltInObjectType.MFBuiltInObjectTypeDocument, // Doküman tipi
                        builder.Values,
                        new SourceObjectFiles(),
                        false,   // SFD değil
                        true,    // Check-in yap
                        null     // ACL
                    );

                    SysUtils.ReportInfoToEventLog(
                        $"PersonelDenemeVAF: Workflow={this.config.Workflow.Alias} ve State={this.config.WorkflowState.Alias} için otomatik doküman oluşturuldu.");
                }
            }
            catch (Exception ex)
            {
                SysUtils.ReportErrorToEventLog($"PersonelDenemeVAF - Hata: {ex.Message}", ex);
            }
        }
    }
}
Configuration.cs

using System;
using System.Runtime.Serialization;
using MFiles.VAF.Configuration;

namespace PersonelDenemeVAF
{
    [DataContract]
    public class Configuration
    {
        [DataMember(Order = 1)]
        [MFClass(Required = true)]
        [JsonConfEditor(
            Label = "Class",
            HelpText = "Kullanılacak Class (Sınıf).",
            DefaultValue = "PersonelDenemeDegerlendirme")]
        public MFIdentifier Class { get; set; }
            = "PersonelDenemeDegerlendirme";

        [DataMember(Order = 2)]
        [MFWorkflow(Required = true)]
        [JsonConfEditor(
            Label = "Workflow",
            HelpText = "Nesneye atanacak Workflow.",
            DefaultValue = "PersonelDenemeWorkflow")]
        public MFIdentifier Workflow { get; set; }
            = "PersonelDenemeWorkflow";

        [DataMember(Order = 3)]
        [MFState(Required = true)]
        [JsonConfEditor(
            Label = "Başlangıç Workflow State",
            HelpText = "Yeni oluşturulan nesnenin başlangıç state'i.",
            DefaultValue = "PersonelDenemeWorkflow.Baslangic")]
        public MFIdentifier WorkflowState { get; set; }
            = "PersonelDenemeWorkflow.Baslangic";
    }
}
  

Parents Reply Children
No Data