Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ Work Tasks

Code Sample - File Watcher Initiated Workflow

  • Last UpdatedSep 11, 2024
  • 12 minute read

The below is the Aspx file for the File Watcher initiated WorkFlow

<%@ Page Language="C#" AutoEventWireup="true" Inherits="Skelta.Repository.CodeBehind.NewFileWatcherWorkflow" %>

<%@ Register Assembly="Skelta.Forms.Web" Namespace="Skelta.Forms.Web" TagPrefix="cc1" %>

<%@ Register Assembly="RadAjax.Net2" Namespace="Telerik.WebControls" TagPrefix="radAjax" %>

<%@ Register Assembly="RadInput.Net2" Namespace="Telerik.WebControls" TagPrefix="radInput" %>

<%@ Register Assembly="RadCombobox.Net2" Namespace="Telerik.WebControls" TagPrefix="radC" %>

<%@ Register Assembly="RadWindow.Net2" Namespace="Telerik.WebControls" TagPrefix="radW" %>

<%@ Register Assembly="RadCalendar.Net2" Namespace="Telerik.WebControls" TagPrefix="radCln" %>

<%=_docType %>

<link href="<%=cssPath2%>Common/StyleSheet/Global.css" rel="stylesheet" type="text/css" />

<html>

<head id="Head1">

<title>

<%=rs.GetString("ec_filewatcher_Workflow")%>

</title>


<script language="javascript" type="text/javascript">

 

function OpenRadWindowOverDue()

{  

var WorkflowName = document.getElementById("<%=hidWorkflow.ClientID%>").value;

 

var ApplicationName = document.getElementById("<%=hidApplication.ClientID%>").value;

var oWindow1 = radopen("../EventProvider/BAMOverDueLookup.aspx?ApplicationName=" +ApplicationName+"&WorkflowName=" + WorkflowName, null);

oWindow1.SetModal(true);  

 

oWindow1.SetSize(465,408);

oWindow1.IconUrl="..\images\Icon-ListExplorer.png";   

oWindow1.ClientCallBackFunction  = fillOverDue;

}

 

function OpenRadWindowKpi()

{  

var WorkflowName = document.getElementById("<%=hidWorkflow.ClientID%>").value;

var ApplicationName = document.getElementById("<%=hidApplication.ClientID%>").value;

var oWindow1 = radopen("../EventProvider/BAMKpiLookup.aspx?ApplicationName=" +ApplicationName+"&WorkflowName=" + WorkflowName, null);

oWindow1.SetModal(true);  

 

oWindow1.SetSize(455,400);

oWindow1.IconUrl="..\images\Icon-ListExplorer.png";  

oWindow1.ClientCallBackFunction  = fillKpi;

}

 

function fillOverDue(radWindow, returnlistid)

{

var hidSlots =  document.getElementById("<%=hidSlots.ClientID%>");

hidSlots.value = returnlistid;

}

 

function fillKpi(radWindow, returnlistid)

{

var hidKpis =  document.getElementById("<%=hidKpis.ClientID%>");

hidKpis.value = returnlistid;

}

function ReloadPage()

{

 

}  

 

function SizeToFit()

{

 var oWnd = GetRadWindow();

 oWnd.SetSize(700,580);

}  

function GetRadWindow()

{

var oWindow = null;

 oWindow = window.frameElement.radWindow;

return oWindow;

}

</script>


</head>

<body style="margin: 0; left: 0; overflow: hidden; height: 100%" onload="ReloadPage()">

<form id="form1" runat="server">

<div id="ParentDiv">

<br />

<asp:Panel ID="Panel1" runat="server" Height="100%">

<div id="HeaderDiv">

<table width="94%" align="center" border="0">

<tr>

<td colspan="3">

<img src="<%=cssPath2%>/Repository/ListControl/images/icons-ribbon/icon-FileWatcher-Workflow.png"

hspace="4" align="absmiddle" />

<span class="pagetitle">

<%=rs.GetString("ec_filewatcher_NewWorkflow", true)%>

</span>

<br />

<span class="description" colspan="2">

<%= rs.GetString("ec_filewatcher_desc_new", true)%>

</span>

</td>

</tr>

</table>

</div>

<br />

<div id="BodyDiv" style="overflow: hidden;">

<table width="94%" cellpadding="7" cellspacing="1" border="0" class="tablebg" width="94%"

align="center">

<tr>

<td class="lefttdbg" width="50%">

<span class="subtitle">

<%=rs.GetString("ec_filewatcher_PlcTitle", true)%>

<img runat="server" id="imgMandatory" src="<%$ReplaceTemplateExpn:Skeltaforms/Images/mandatoryicon.PNG%>"

visible="true" hspace="2" align="top" />

<asp:RequiredFieldValidator ID="ReqSiteUrl" runat="server" ControlToValidate="WorkflowNameInput"

Display="Dynamic" Enabled="true">

<img id="imgsiteUrlerror" alt="" runat="server" src="<%$ ReplaceTemplateExpn:Skeltaforms/Images/erroricon.png%>"

hspace="2" align="top" visible="true" />

</asp:RequiredFieldValidator>

<asp:CustomValidator ID="WorkflowNameValidator" runat="server" ControlToValidate="WorkflowNameInput"

SetFocusOnError="true" Display="Dynamic" ValidateEmptyText="true" OnServerValidate="WorkflowNameValidator_ServerValidate"

Enabled="true">

<img id="imgCustom" alt="" runat="server" src="<%$ ReplaceTemplateExpn:Skeltaforms/Images/erroricon.png%>"

hspace="2" align="top" visible="true" />

</asp:CustomValidator>

</span>

<br />

<span class="description">

<%=rs.GetString("ec_filewatcher_EnterWfName", true)%>

</span>

</td>

<td class="righttdbg" width="50%">

<radInput:RadTextBox ID="WorkflowNameInput" runat="server" Skin="SkeltaInput" CausesValidation="true"

MaxLength="100" Width="50%" RadControlsDir="<%$ReplaceTemplateExpn:telerik/radcontrols/%>">

</radInput:RadTextBox>

</td>

</tr>

<tr>

<td class="lefttdbg" width="50%">

<span class="subtitle">

<%=rs.GetString("ec_filewatcher_PlcDesc", true)%>

</span>

<br />

<span class="description">

<%=rs.GetString("ec_filewatcher_EnterWfDesc", true)%>

</span>

</td>

<td class="righttdbg" width="50%">

<radInput:RadTextBox ID="WorkflowDescriptionInput" Skin="SkeltaInput" runat="server"

TextMode="MultiLine" Width="99%" Height="55px" RadControlsDir="<%$ReplaceTemplateExpn:telerik/radcontrols/%>">

</radInput:RadTextBox>

</td>

</tr>

</table>

<table width="94%" align="center" border="0">

<tr>

<td width="50%">

<img src="<%=imgPath2%>/icon-associate-events.png" hspace="4" align="absmiddle" /><span

class="pagetitle">

<%=rs.GetString("ec_filewatcher_Associate", true)%>

</span>

<br />

<span class="description" colspan="2">

<%= rs.GetString("ec_filewatcher_new_desc", true)%>

</td>

</tr>

</table>

<radW:RadWindowManager runat="server" Behavior="Default" SingleNonMinimizedWindow="true"

RadControlsDir="<%$ReplaceTemplateExpn:telerik/radcontrols/%>" ID="RadWindowManager1"

Skin="SkeltaWindow" VisibleStatusbar="true" IconUrl="..\images\Icon-ListExplorer.png">

</radW:RadWindowManager>

<table width="94%" cellpadding="7" cellspacing="1" border="0" class="tablebg" width="94%"

align="center">

<tr>

<td class="lefttdbg" width="50%">

<span class="subtitle">

<%=rs.GetString("ec_filewatcher_Comboeventtype",true )%>

</span>

<img id="imgType" alt="" runat="server" src="<%$ ReplaceTemplateExpn:Skeltaforms/Images/erroricon.png%>"

hspace="2" align="top" visible="false" />

</td>

<td class="righttdbg" width="50%">

<asp:DropDownList ID="cmbEventType" runat="server" AutoPostBack="false" CssClass="inputselect"

Width="200px">

</asp:DropDownList>

</td>

</tr>

<tr>

<td class="lefttdbg" width="50%">

<span class="subtitle">

<%=rs.GetString("ec_filewatcher_Comboeventfolder")%>

</span>

<img id="imgFolder" alt="" runat="server" src="<%$ ReplaceTemplateExpn:Skeltaforms/Images/erroricon.png%>"

hspace="2" align="top" visible="false" />

</td>

<td class="righttdbg" width="50%">

<radC:RadComboBox ID="cmbFolderList" runat="server" Skin="SkeltaCombobox" RadControlsDir="<%$ReplaceTemplateExpn:telerik/radcontrols/%>"

MaxLength="100" DropDownWidth="283px" Height="100px" NoWrap="false" AutoPostBack="false">

</radC:RadComboBox>

</td>

</tr>

<tr>

<td class="lefttdbg" width="50%">

<span class="subtitle">

<%=rs.GetString("ec_filewatcher_filefullpath")%>

</span>

<br />

<span class="description">

<%=rs.GetString("ec_filewatcher_Pattern")%>

</span>

</td>

<td class="righttdbg" width="50%">

<asp:TextBox ID="txtFilePattern" runat="server" CssClass="inputtext" Width="50%"></asp:TextBox>

<br />

<span class="description"></span>

</td>

</tr>

<tr id="TrSharePointEventsNote" runat="server">

<td class="lefttdbg" colspan="3">

<img id="Img1" runat="server" src="<%$ ReplaceTemplateExpn:/Common/Images/icon-note.png%>"

align="absmiddle">

<span class="note">

<%=rs.GetString("_NewWFForm_EvtNoteTitle", true)%>

<%=rs.GetString("_NewWFForm_EvtNotes", true)%>

</span>

</td>

</tr>

<input type="hidden" id="hidApplication" runat="server" />

<input type="hidden" id="hidSlots" runat="server" />

<input type="hidden" id="hidWorkflow" runat="server" />

<input type="hidden" id="hidKpis" runat="server" />

</table>

</div>

<div id="FooterDiv">

<table width="98%" border="0" cellpadding="3">

<tr>

<td colspan="1" align="right" valign="top">

<asp:Button ID="SaveButton" runat="server" CssClass="inputbutton" />

</td>

</tr>

<tr>

<td height="50px">

</td>

</tr>

</table>

</div>

</asp:Panel>

</div>

</form>

</body>

</html>


<script type="text/javascript">


function AddEventHandler(elementObject, eventName, functionObject)

{

if(document.addEventListener)

elementObject.addEventListener(eventName, functionObject, false);

else

if(document.attachEvent)

elementObject.attachEvent("on" + eventName, functionObject);

}


AddEventHandler(window,"resize",resizefunction);

AddEventHandler(window,"load",resizefunction);


function resizefunction()

{  

 var bodydiv = document.getElementById('BodyDiv');

 var headerdiv = document.getElementById('HeaderDiv');

 var footerdiv = document.getElementById('FooterDiv');

var parentdiv = document.getElementById('ParentDiv');

if (parentdiv.offsetParent==document.body)

 document.body.style.height = '100%';


 var parentdivheight = parentdiv.offsetParent.offsetHeight;

parentdiv.style.height =  parentdivheight ;

 try{bodydiv.style.height = parentdivheight - headerdiv.offsetHeight - footerdiv.offsetHeight ;}catch(e){}//headerdiv.offsetHeight -

 bodydiv.style.width =  '100px';

 bodydiv.style.width =  parentdiv.clientWidth;

bodydiv.style.overflow =  'auto';

 parentdiv.style.overflow = 'hidden';

}

</script>

The below is the code file for the File watcher initiated WF aspx file.

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using Skelta.Forms.Core.Controls;

using Skelta.Repository.Web.List;

using Skelta.Repository.List;

using Skelta.Repository.List.Action;

using Skelta.Core;

using Workflow.NET;

using Telerik.WebControls;

using System.Collections.Generic;

using Workflow.NET.PropertyTypes;

using Skelta.Events;

using Skelta.Events.Interfaces;

using System.Text.RegularExpressions;

using Workflow.NET.Interfaces;

using Workflow.NET.Storage;

using System.Text;

using System.Xml;

using System.Xml.Schema;

using System.IO;

using Skelta.Repository.List.EventProvider;

using Skelta.Repository.Security;

public partial class NewWorkflowForm : System.Web.UI.Page

{

protected string TemplateDirectory;

protected SkeltaResourceSet rs = new SkeltaResourceSetManager().GlobalResourceSet;

protected string _docType = string.Empty;

protected string eventsComboId = string.Empty;

protected Workflow.NET.Config objConfig = new Config();

int _ItemTemplateWidth = 0;

string alertMessage = string.Empty;

protected Guid eventBindId;

protected Skelta.Repository.List.ListDefinition associationList;

protected Skelta.Repository.List.ListItem associationItem;

string _applicationName = string.Empty;

string workflowName = string.Empty;

string _LoggedInUser = string.Empty;

string versionStamp = string.Empty;

string _ListName = string.Empty;

string effectiveFromDate = string.Empty;

string effectiveToDate = string.Empty;

Guid parentItemId = Guid.Empty;

Guid listGuid = Guid.Empty;

protected Guid stPort;

string listName = string.Empty;

const string workflowListName = "Workflow";

const string workflowAssociationListName = "Event Associations";

public string error;

string EventType;

string FullPath = string.Empty;

protected Skelta.Repository.List.ListItemCollection licollection = null;

protected Skelta.Repository.List.ListDefinition listdefinition = null;

Skelta.Repository.List.ListItemCollection _menuItems;

ListDefinition _List;

ListDefinition List;

Hashtable columnNames = new Hashtable();

//Themes Implementation changes

protected string cssPath1 = "";

protected string cssPath2 = "";

protected string imgPath1 = "";

protected string imgPath2 = "";

protected object styleUrl1 = Workflow.NET.TemplateExpressionBuilder.GetUrl("SkeltaForms/StyleSheet");

protected object styleUrl2 = Workflow.NET.TemplateExpressionBuilder.GetUrl("Repository/Site/styles");

protected object imgUrl=Workflow.NET.TemplateExpressionBuilder.GetUrl("SkeltaForms/Images");

public enum FileEventType

{

 

Created = 0,

Changed = 1,

Renamed = 2,

Deleted = 3


}

 

protected void Page_Load(object sender, EventArgs e)

{

 

if ((this.Request.Browser.Browser.ToString().ToLowerInvariant() == "firefox") && (this.Request.Browser.Version.ToString() == "1.5"))

_docType = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";

else

_docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";


//Themes Implementation changes

cssPath1 = styleUrl1.ToString();

cssPath2 = styleUrl2.ToString();

imgPath1=imgUrl.ToString();

imgPath2 = imgUrl.ToString();

WorkflowNameInput.EmptyMessage = rs.GetString("_NewWFForm_WorkflowNameInput_EmptyMsg");

SaveButton.Text = rs.GetString("_NewWFForm_SaveButton_Text");

Guid itemGuid = Guid.Empty;

ListPageParameters listParams = new ListPageParameters();


listParams.ResolveCurrentUri();

_LoggedInUser = listParams.LoggedInUserId;

_ListName = listParams.ListName;

_applicationName = listParams.ApplicationName;

LoadEventTypes();

cmbEventType.Width = 100;

cmbFolderList.Width = 300;

if (!this.Page.IsPostBack)

{

listGuid = listParams.ListId;

parentItemId = listParams.ParentItemId;

_applicationName = listParams.ApplicationName;

versionStamp = listParams.VersionStamp;


ViewState["itemGuid"] = itemGuid;

ViewState["listGuid"] = listGuid;

ViewState["parentItemId"] = parentItemId;

ViewState["ApplicationName"] = _applicationName;

InitializeComponent();

 // LoadPorts();

List = new ListDefinition(new Skelta.Core.ApplicationObject(_applicationName), "FileWatcher List");

LoadSecurityEnblePorts();

}

else

{

itemGuid = (Guid)ViewState["itemGuid"];

listGuid = (Guid)ViewState["listGuid"];

parentItemId = (Guid)ViewState["parentItemId"];

_applicationName = ViewState["ApplicationName"].ToString();

}


_List = new ListDefinition(new Skelta.Core.ApplicationObject(_applicationName), listGuid);


workflowName = Request["WorkflowName"];

workflowName = (workflowName == null) ? "" : workflowName.ToString();

SaveButton.Click += new EventHandler(SaveButton_Click);

}


private void LoadEventTypes()

{

string EventTypesSelectedValue = cmbEventType.SelectedValue;

this.cmbEventType.DataSource = Enum.GetNames(typeof(FileEventType));

this.cmbEventType.DataBind();

cmbEventType.Items.Insert(0, "--Select--");

if (EventTypesSelectedValue != null && EventTypesSelectedValue != string.Empty)

this.cmbEventType.SelectedValue = EventTypesSelectedValue;

}


void Alert(string message)

{

Page.ClientScript.RegisterStartupScript(this.GetType(), "alertwindow", "<script>alert('" + message.Replace("'", "\\'") + "');</script>");

}



private void InitializeComponent()

{

try

{

string applicationName = "";

string workflowname = "";

Guid ListItemId = Guid.Empty;


ListPageParameters listParams = new ListPageParameters();

listParams.ResolveCurrentUri();

applicationName = listParams.ApplicationName;


if (listParams.ListName.ToLower() == "workflow")

ListItemId = listParams.ListItemId;


ListDataHandler ObjListDataHandler = new ListDataHandler(listParams.ApplicationName, "Workflow");

Skelta.Repository.List.ListItem wfitem;


ViewState["ApplicationName"] = applicationName;

ViewState["UserId"] = listParams.LoggedInUserId;


objConfig = new Config(ViewState["ApplicationName"].ToString().Trim());


 

}

catch (Exception)

{

 

}

 

}


protected string GetLangSpecText(string keyName)

{

SkeltaResourceSetManager resManager = new SkeltaResourceSetManager();

return resManager.GlobalResourceSet.GetString(keyName);

}



protected void WorkflowNameValidator_ServerValidate(object source, ServerValidateEventArgs args)

{

WorkflowNameValidator.ErrorMessage = string.Empty;

if (WorkflowNameInput.Text == string.Empty)

{

args.IsValid = false;

WorkflowNameValidator.ErrorMessage = rs.GetString("_NewWFForm_WorkflowNameInput_EmptyMsg");

}

else

{

string patternMatch = @"[#~&+\\""'<>|]";

Regex reg = new Regex(patternMatch, RegexOptions.CultureInvariant);

if (Regex.IsMatch(args.Value, patternMatch))

{

args.IsValid = false;

WorkflowNameValidator.ErrorMessage = GetLangSpecText("ec_filewatcher_Workflow_Name");

}

else

{

args.IsValid = true;

}

}

}


 

/// <summary>

/// Method to load filewatcher ports

/// </summary>

private void LoadPorts()

{

Dictionary<string, IEventPort> eventPorts = GetAllEventPorts(_applicationName, "FileWatcher");

Telerik.WebControls.RadComboBoxItem lstIt = new Telerik.WebControls.RadComboBoxItem();

lstIt.Text = GetLangSpecText("ec_filewatcher_option");

lstIt.Value = "0";

cmbFolderList.Items.Add(lstIt);

foreach (string portGuid in eventPorts.Keys)

{

Telerik.WebControls.RadComboBoxItem lst = new Telerik.WebControls.RadComboBoxItem();

lst.Text = eventPorts[portGuid].PortName;

lst.Value = eventPorts[portGuid].PortGuid.ToString();

cmbFolderList.Items.Add(lst);

}


 }

/// <summary>

/// New Method to load all filewatcher ports which secuity enabled.

/// </summary>

private void LoadSecurityEnblePorts()

{

DataTable dtTable = null;


Skelta.Repository.List.ListItemCollection objSecPorts = new Skelta.Repository.List.ListItemCollection(List);

dtTable = objSecPorts.GetRecordsForConsume(_LoggedInUser, Skelta.Repository.Display.AllItems);

if (dtTable.Rows.Count > 0)

 LoadPorts();

 

 

}

 /// <summary>

/// Check whether the events are selected or not. If it is not selected eventbinding table saving part skiped.

/// </summary>

/// <returns></returns>

private bool EventsSelected()

{

bool flag = false;

try

{

if (cmbEventType.SelectedIndex != 0 && cmbFolderList.SelectedIndex != 0)

{

flag = true;

}

else if ((cmbEventType.SelectedIndex != 0 && cmbFolderList.SelectedIndex == 0) || (cmbEventType.SelectedIndex == 0 && cmbFolderList.SelectedIndex != 0))

{

flag = false;

error = GetLangSpecText("ec_filewatcher_portnotempty");

}

else

{

flag = true;

}

 

}

catch (Exception)

{

}

return flag;

}


/// <summary>

/// Method to get all filewatcher folders

/// </summary>

/// <param name="_applicationName"></param>

/// <param name="eventProviderName"></param>

/// <returns></returns>

private Dictionary<string, IEventPort> GetAllEventPorts(string _applicationName, string eventProviderName)

{

//If it is not given here, for every serviceprovider class, geteventports method should be implemented.

Dictionary<string, IEventPort> colEventPorts = new Dictionary<string, IEventPort>();

if (_applicationName != string.Empty)

{

EventServicePortCollection colEventServicePorts = new EventServicePortCollection(new ApplicationObject(_applicationName), eventProviderName);

foreach (EventServicePort evntPort in colEventServicePorts.Items)

colEventPorts.Add(evntPort.Name, evntPort.EventPort);

}

return colEventPorts;

}



/// <summary>

/// Button click event

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void SaveButton_Click(object sender, EventArgs e)

{

string err = WorkflowNameValidator.ErrorMessage.ToString().Trim();

 

if (cmbEventType.SelectedValue  == "--Select--" && cmbFolderList.SelectedValue != "0")

{

error = GetLangSpecText("ec_filewatcher_event");

err = "Error";

return;


}

if (cmbEventType.SelectedValue != "--Select--" && cmbFolderList.SelectedValue == "0")

{

error = GetLangSpecText("ec_filewatcher_Port");

err = "Error";

return;

}

 

if (err == string.Empty)

{

 

Skelta.Repository.List.ListItem item = new Skelta.Repository.List.ListItem(_List, "<Workflow Title=\"" + WorkflowNameInput.Text.ToString().Trim() + "\" Description=\"" + WorkflowDescriptionInput.Text.ToString().Trim() + "\" />");

item.ParentItemId = parentItemId;

item.LoggedInUserId = _LoggedInUser;

item.ItemType = 5;

try

{

item.Save();

}

catch (Exception ex)

{

err = item.LastSaveError;

Alert(err.Trim());

return;

}

//if any exeception there at creating the item it will be stored in LastSaveError property of ListItem Object.it may not throw any exception hence check for this

if (item.LastSaveError != null)

{

err = item.LastSaveError;

Alert(err.Trim());

return;

}


Guid WFId = item.Id;

string workflowName = WorkflowNameInput.Text.ToString().Trim();

versionStamp = item.CurrentVersion.VersionStamp;

if (string.IsNullOrEmpty(versionStamp))

{

versionStamp = "1";

}


ListPageParameters listParams = new ListPageParameters();


listParams.ListId = listGuid;

listParams.ApplicationName = _applicationName;

listParams.ListName = _ListName;

listParams.ListItemId = WFId;

listParams.LoggedInUserId = _LoggedInUser;


string uri = listParams.GetSecuredUri();


bool blAssociate = false;


if (EventsSelected() == true)

{

if (HasSecurityRights() == true)

{

SaveEventBinding();

}

else

{

return;

}

}

else

{

return;

}


CreateXMLVaribale();

if (item.LastSaveError == null)

{


Response.Redirect("../../../Repository/Site/WorkflowTasks.aspx?" + uri + "&WFName=" + workflowName, true);

}

Page.ClientScript.RegisterStartupScript(typeof(NewWorkflowForm), "", "<script>this.close();</script>");

}

}





private bool HasSecurityRights()

{

bool blRight = true;

try

{

//Check whether it is required to check for event association

//Save the Event Bindings here

ListDataHandler ldh = new ListDataHandler(_applicationName, "Workflow");

Skelta.Repository.List.ListItem _ListItem = ldh.GetListItem(WorkflowNameInput.Text.Trim());

_ListItem.LoggedInUserId = _LoggedInUser;

//Commented by Hemanth to get SecuityFlag Information from SecurityManager class

//Skelta.FarmManager.Repository repository = new Skelta.FarmManager.Repository(_applicationName);

bool securityflag = SecurityManager.GetSecurityFlag(_applicationName);

if (securityflag == true) //repository.Properties["enablesecurity"].ToLowerInvariant()

{

//Checking whether the user has rights to add an item in association list in workflow list  

Skelta.Repository.List.ListDefinition skWorkflowList = new Skelta.Repository.List.ListDefinition(new Skelta.Core.ApplicationObject(_applicationName), "Workflow");

Skelta.Repository.Security.SecurityManager securityMgr = new Skelta.Repository.Security.SecurityManager(skWorkflowList, _LoggedInUser);


if ((securityMgr.GetValueForRightCode("ActionCreateAssociations", Skelta.Repository.EntityType.ListItem, _ListItem.Id)).ToUpperInvariant() != "TRUE")

{

blRight = false;

SecurityRightsHandler SecurityHandler = new SecurityRightsHandler(_applicationName);

ListAction action = _ListItem.List.Operations.GetActionById("_sys_delete");

SecurityHandler.ExecuteAction(action, _ListItem, ListItemEvents.OnDelete);

Alert("You dont have permission to create the associations.");

 // return;

}


bool blRightProvider = true;

if (blRight)

{

Skelta.Repository.List.ListDefinition eventProvidersList = new Skelta.Repository.List.ListDefinition(new Skelta.Core.ApplicationObject(_applicationName), "Event Providers");

Skelta.Repository.List.ListItemCollection eventProvidersCollection = new Skelta.Repository.List.ListItemCollection(eventProvidersList);

System.Data.DataTable providersTable = eventProvidersCollection.GetRecordsForConsume("Title", "FileWatcher", Skelta.Repository.Display.MainItems, _LoggedInUser);

if (providersTable.Rows.Count == 0)

{

blRight = false;

SecurityRightsHandler SecurityHandler = new SecurityRightsHandler(_applicationName);

ListAction action = _ListItem.List.Operations.GetActionById("_sys_delete");

SecurityHandler.ExecuteAction(action, _ListItem, ListItemEvents.OnDelete);

Alert("You dont have permission to consume the File Watcher Event Provider. So cannot create association.");

 // return;

}

}


 

}


}

catch (Exception Ex)

{

throw Ex;

}

return blRight;

}



/// <summary>

/// Method to save the entry to the event binding table

/// </summary>

private void SaveEventBinding()

{

try

{

string filename;

string filepath;

String eventtype;

FullPath = txtFilePattern.Text;

EventType = cmbEventType.SelectedItem.Text;


ListDataHandler wfhandler = new ListDataHandler(_applicationName, "Workflow");

Skelta.Repository.List.ListItem wfitem;

wfitem = wfhandler.GetListItem(WorkflowNameInput.Text);



workflowName = WorkflowNameInput.Text.Trim();


EventBinding eventBind;


eventBind = new EventBinding(new Skelta.Core.ApplicationObject(_applicationName));

eventBind.BindingType = EventBindingType.Workflow;

eventBind.Disabled = false;

eventBind.Disable_After_Expiry = false;

eventBind.NoofEvents = 0;


eventBind.EventName = "FileWatcher";

eventBind.Alert_ApplicationName = _applicationName;

eventBind.Alert_Workflow = workflowName;//the current list item

eventBind.Alert_Version = versionStamp;

eventBind.Alert_UserId = _LoggedInUser;

int flag = 0;

if (cmbFolderList.SelectedValue != "0")

{

bool chkFolder = true;


string strPort = cmbFolderList.SelectedItem.Text;

DirectoryInfo drInfo = new DirectoryInfo(strPort);

if (!drInfo.Exists)

{

string[] strFolders = strPort.Split('\\');

if (strFolders.Length > 0)

{

for (int i = 0; i < strFolders.Length; ++i)

{

if (strFolders[i] == "DESKTOP")

{

chkFolder = true;

break;

}

}

if (strFolders[0] == string.Empty)

{

chkFolder = true;

}


}



}


if (chkFolder == true)

{


stPort = new Guid(cmbFolderList.SelectedValue);


eventBind.PortGuid = stPort;

flag = 1;

}

else

{

error = GetLangSpecText("ec_filewatcher_portRemoved");


}

}

else

{

error = GetLangSpecText("ec_filewatcher_portnotempty");

}

if (flag == 1)

{

string[] strFileType = txtFilePattern.Text.Split('.');

if (strFileType.Length > 1)

{

if (strFileType[0] == string.Empty && strFileType[1] != string.Empty)

{

eventBind.str2 = strFileType[1].ToString();

}

if (strFileType[0] != string.Empty && strFileType[1] != string.Empty)

{

if (strFileType[0] == "*" && strFileType[1] == "*")

{


}

else if (strFileType[0] == "*" && strFileType[1] != string.Empty)

{

eventBind.str2 = strFileType[1];

}

else

{

eventBind.str1 = txtFilePattern.Text;

}


}

}

else if (strFileType[0] != string.Empty)

{

eventBind.str1 = strFileType[0];

}


eventBind.str3 = EventType;


 //

eventBind.Save();


eventBindId = eventBind.Id;


filename = txtFilePattern.Text;

filepath = cmbFolderList.SelectedItem.Text;

eventtype = EventType;

alertMessage = filepath + " " + filename + " " + eventtype;

StringBuilder eventXml = new StringBuilder();

eventXml.Append("<EventBind id=\"" + eventBindId + "\">");

eventXml.Append("<ApplicationName>" + _applicationName + "</ApplicationName>");

eventXml.Append("<Workflow>");

eventXml.Append("<WorkflowName>" + workflowName + "</WorkflowName>");

eventXml.Append("<WorkflowAlert>" + alertMessage + "</WorkflowAlert>");

eventXml.Append("<WorkflowEffectiveFrom>" + effectiveFromDate + "</WorkflowEffectiveFrom>");

eventXml.Append("<WorkflowEffectiveTo>" + effectiveToDate + "</WorkflowEffectiveTo>");

eventXml.Append("</Workflow>");

eventXml.Append("<Parameters>");

eventXml.Append("<File FileName=\"" + filename + "\" name=\"" + listName + "\"></File>");

eventXml.Append("<File FilePath=\"" + filepath + "\" name=\"" + listName + "\"></File>");

eventXml.Append("<File EventType=\"" + eventtype + "\" name=\"" + listName + "\"></File>");

eventXml.Append("</Parameters>");

eventXml.Append("</EventBind>");

SaveAssociationList(eventXml.ToString());

}

}

catch (Exception)

{

 

}

}

/// <summary>

/// Method to add the eventassociation table entry

/// </summary>

/// <param name="eventXml"></param>

private void SaveAssociationList(string eventXml)

{

if (associationList == null)

{

associationList = new ListDefinition(new Skelta.Core.ApplicationObject(_applicationName), "Event Associations");

}

if (associationList != null)

{


//Get the reference id from the main list []


Guid webApplicationItemReferenceId = Guid.Empty;


ListDefinition webApplicationList = new ListDefinition(new Skelta.Core.ApplicationObject(_applicationName), "Event Associations");

//File association details Details

Skelta.Repository.List.ListItemCollection webApplicationListItems = new Skelta.Repository.List.ListItemCollection(webApplicationList);

Hashtable webApplicationTableColumnNames = new Hashtable();

SortedDictionary<string, Skelta.Forms.Core.Controls.BaseDataControl> fields = webApplicationListItems.GetRecordsFieldMapping();

foreach (KeyValuePair<string, Skelta.Forms.Core.Controls.BaseDataControl> info in fields)

{

webApplicationTableColumnNames.Add(info.Value.Name, info.Key);

}


//Create a new record If web application does not exist on that list


Skelta.Repository.List.ListItem webApplicationListItem = null;

if (webApplicationItemReferenceId == Guid.Empty)

webApplicationListItem = new Skelta.Repository.List.ListItem(webApplicationList);

else

webApplicationListItem = new Skelta.Repository.List.ListItem(webApplicationList, webApplicationItemReferenceId);


if (webApplicationListItem != null)

{

if (associationItem == null)

{

associationItem = new Skelta.Repository.List.ListItem(associationList);

}


ListMainForm associationMainForm = (ListMainForm)associationItem.ListForm.Records[0];

((ListTextDataItem)associationMainForm.FindControlByID("_sys_sk_evntass_evntbndxml")).Value = eventXml;

((ListTextDataItem)associationMainForm.FindControlByID("_sys_sk_evntass_wrkflwname")).Value = workflowName;

((ListTextDataItem)associationMainForm.FindControlByID("_sys_sk_evntass_evntprvdrname")).Value = "FileWatcher";

((ListTextDataItem)associationMainForm.FindControlByID("_sys_sk_evntass_evnttype")).Value = "FileWatcher";

((ListTextDataItem)associationMainForm.FindControlByID("_sys_sk_evntass_evntstatus")).Value = "New";

((ListTextDataItem)associationMainForm.FindControlByID("_sys_sk_evntass_desc")).Value = alertMessage;

((ListTextDataItem)associationMainForm.FindControlByID("_sys_sk_evntass_title")).Value = EventType;

((ListGuidDataItem)associationMainForm.FindControlByID("_sys_sk_evntassbnd_id")).Value = eventBindId;

associationItem.LoggedInUserId = _LoggedInUser;

associationItem.Save(ListItemVersionStatus.Published);

Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "regJs", "<script>alert('File association saved successfully');</script>");

}

else

{

throw new Exception("Not able to fetch main Reference Id");

}

}


}






private void CreateXMLVaribale()

{

try

{

 

workflowName = WorkflowNameInput.Text.Trim();

Skelta.Core.AddInProvider provider = new Skelta.Core.AddInProvider(new Skelta.Core.ApplicationObject(_applicationName), GetProviderId("XmlDocument", _applicationName));

Workflow.NET.Interfaces.IXmlStorageType storageHandler = (Workflow.NET.Interfaces.IXmlStorageType)provider.CreateInstance(true);

 

Workflow.NET.Web.Designer.ProcessDesigner pd = new Workflow.NET.Web.Designer.ProcessDesigner();

pd.ID = "pd";

pd.ApplicationName = _applicationName;

pd.WorkflowName = workflowName;

pd.FileName = "1";

pd.UseTopmostWindowForRenderingOnClientSide = false;


pd.Height = System.Web.UI.WebControls.Unit.Percentage(100);

pd.Width = System.Web.UI.WebControls.Unit.Percentage(100);

pd.InitializeValues();

 

 

Workflow.NET.Diagram _diagram = Workflow.NET.Diagram.GetDiagramCreateIfNotFound(_applicationName, workflowName, versionStamp);

_diagram.PreProcessDiagaram();

bool flag = true;

foreach (XmlVariable var in _diagram.XmlVariables.Values)

{

if (var.Name.Equals("FileWatcherXMLData"))

{


flag = false;

}

}

if (flag)

{

Workflow.NET.XmlVariable XVariable = new Workflow.NET.XmlVariable();

XVariable.Name = "FileWatcherXMLData";

XVariable.Description = "File watcher XML Data";

XVariable.StorageType = "XmlDocument";


string eventdataFilePath = System.Web.HttpContext.Current.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath + "/" + Workflow.NET.Config.GetTemplateDirectoryFromWebConfig() + "Default/XMLSchemas/FileWatcherEventData.xml");


XVariable.Schema = ParseXMLForData(eventdataFilePath);


XVariable.StorageHandler = storageHandler;

((Workflow.NET.XmlStorageType.XmlDocument)(XVariable.StorageHandler)).StorageData = "variables";

_diagram.XmlVariables.Add(XVariable.Name, XVariable);

 commonFunctions.WriteDiagram(_diagram, _applicationName, workflowName, versionStamp);

_diagram.Dispose();


Workflow.NET.Designer workflowDesigner = new Workflow.NET.Designer(_applicationName, workflowName, "1");

workflowDesigner = new Workflow.NET.Designer(_applicationName, workflowName, "1");

Workflow.NET.XmlVariable eventDataVariable = Skelta.Events.SKEventData.GetXmlVariable(_applicationName, workflowName, "1");

workflowDesigner.XMLVariables.Add(eventDataVariable.Name, eventDataVariable);

workflowDesigner.WriteToDefinition();

}

}

catch (Exception)

{


}



}

private Guid GetProviderId(string storageType, string applicationName)

{

Skelta.Core.AddInProviderCollection _Provider = new Skelta.Core.AddInProviderCollection(new Skelta.Core.ApplicationObject(_applicationName));


string FilterExp = "where Type =@Type and Name=@Name";


Skelta.Core.DS.SkeltaParameter param1 = new Skelta.Core.DS.SkeltaParameter("@Type", "XmlStorageType");

Skelta.Core.DS.SkeltaParameter param2 = new Skelta.Core.DS.SkeltaParameter("@Name", storageType);


System.Data.DataSet DsProvider = _Provider.GetMatchingRecords(FilterExp, param1, param2);

string s = "";

if (DsProvider.Tables[0].Rows.Count > 0)

{

s = DsProvider.Tables[0].Rows[0].ItemArray.GetValue(0).ToString();

}

return new Guid(s);

}




private string ParseXMLForData(string file)

{


TextWriter txt = new StringWriter();



StreamReader sReader = new System.IO.StreamReader(file);


System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(sReader);


XmlDocument XDoc = new XmlDocument();


XDoc.Load(reader);


reader.Close();


sReader.Close();




StringReader stringReader1 = new StringReader(this.AddNameSpacePrefixIntoHolder(XDoc));


XmlTextReader xmlTextReader1 = new XmlTextReader(((TextReader)stringReader1));


XmlSchemaSet schemaSet = new XmlSchemaSet();

XmlSchemaInference schema = new XmlSchemaInference();


schemaSet = schema.InferSchema(xmlTextReader1);



foreach (XmlSchema s in schemaSet.Schemas())

{

s.Write(txt);

}

string xsdstring = txt.ToString();


return xsdstring;


}

private string AddNameSpacePrefixIntoHolder(XmlDocument oxmlDoc)

{

foreach (XmlNode xmlNode1 in oxmlDoc.ChildNodes)

{

if (xmlNode1.NamespaceURI.Length > 0)

{

this.AddNameSpaceHolder(xmlNode1.NamespaceURI, xmlNode1.Prefix);

}

if (xmlNode1.ChildNodes.Count > 0)

{

string string2 = this.FindNextNode(oxmlDoc, xmlNode1);

}

}

return oxmlDoc.OuterXml;

}

private string FindNextNode(XmlDocument oxmlDoc, XmlNode oNode)

{

string string1 = null;

foreach (XmlNode xmlNode1 in oNode.ChildNodes)

{

if (xmlNode1.NamespaceURI.Length > 0)

{

this.AddNameSpaceHolder(xmlNode1.NamespaceURI, xmlNode1.Prefix);

if (xmlNode1.ChildNodes.Count > 0)

{

string string2 = this.FindNextNode(oxmlDoc, xmlNode1);

}

}

else

{

if (xmlNode1.ChildNodes.Count > 0)

{

string string3 = this.FindNextNode(oxmlDoc, xmlNode1);

}

continue;

}

}

return string1;

}

public void AddNameSpaceHolder(string NameSpaceURI, string Prefix)

{

Hashtable nameSpaceHolder = new Hashtable();

bool b1 = false;

NameSpaceInfo nameSpacePrefix1 = null;

Exception exception1 = null;

IEnumerator iEnumerator1 = null;

try

{

b1 = false;

if (nameSpaceHolder.Count <= 0)

{

nameSpacePrefix1 = new NameSpaceInfo();

nameSpacePrefix1.NameSpaceURI = NameSpaceURI;

nameSpacePrefix1.NameSpacePrefix = Prefix;

nameSpaceHolder.Add(Prefix, nameSpacePrefix1);

goto L_00DA;

}

try

{

iEnumerator1 = nameSpaceHolder.Values.GetEnumerator();

while (iEnumerator1.MoveNext())

{

nameSpacePrefix1 = ((NameSpaceInfo)iEnumerator1.Current);

//if (StringType.StrCmp(nameSpacePrefix1.NameSpaceURI.Trim().ToUpperInvariant(), NameSpaceURI.Trim().ToUpperInvariant(), false) == 0)

//{

//  b1 = true;

//goto L_0093;

//}

}

}

finally

{

if (iEnumerator1 is IDisposable)

{

((IDisposable)iEnumerator1).Dispose();

}

}


L_0093:

{

}

if (b1)

{

return;

}

nameSpacePrefix1 = new NameSpaceInfo();

nameSpacePrefix1.NameSpaceURI = NameSpaceURI;

nameSpacePrefix1.NameSpacePrefix = Prefix;


if (!nameSpaceHolder.Contains(Prefix))

nameSpaceHolder.Add(Prefix, nameSpacePrefix1);

return;


L_00DA:

{

}

}

catch (Exception exception2)

{

exception1 = exception2;

throw new Exception(exception1.Message);

}

}

}

TitleResults for “How to create a CRG?”Also Available in