Skip to content
DataMiner DoJo

More results...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Search in posts
Search in pages
Search in posts
Search in pages
Log in
Menu
  • Blog
  • Questions
  • Learning
    • E-learning Courses
    • Open Classroom Training
    • Certification
      • DataMiner Fundamentals
      • DataMiner Configurator
      • DataMiner Automation
      • Scripts & Connectors Developer: HTTP Basics
      • Scripts & Connectors Developer: SNMP Basics
      • Visual Overview – Level 1
      • Verify a certificate
    • Tutorials
    • Video Library
    • Books We Like
    • >> Go to DataMiner Docs
  • Expert Center
    • Solutions & Use Cases
      • Solutions
      • Use Case Library
    • Markets & Industries
      • Media production
      • Government & defense
      • Content distribution
      • Service providers
      • Partners
      • OSS/BSS
    • DataMiner Insights
      • Security
      • Integration Studio
      • System Architecture
      • DataMiner Releases & Updates
      • DataMiner Apps
    • Agile
      • Agile Webspace
      • Everything Agile
        • The Agile Manifesto
        • Best Practices
        • Retro Recipes
      • Methodologies
        • The Scrum Framework
        • Kanban
        • Extreme Programming
      • Roles
        • The Product Owner
        • The Agile Coach
        • The Quality & UX Coach (QX)
    • DataMiner DevOps Professional Program
  • Downloads
  • More
    • Feature Suggestions
    • Climb the leaderboard!
    • Swag Shop
    • Contact
      • General Inquiries
      • DataMiner DevOps Support
      • Commercial Requests
    • Global Feedback Survey
  • PARTNERS
    • All Partners
    • Technology Partners
    • Strategic Partner Program
    • Deal Registration
  • >> Go to dataminer.services

post api call on button click

Solved781 views4th October 2024post api protocol togglebutton
0
Chirangee lal Verma [DevOps Advocate]555 1st October 2024 0 Comments
  1. getting data  through  Api call, now for edited and completed job status rows  i need to show start in update job status column and for running job status stop
  2. on toggle i need to send a post api (start or stop ).so how will be the flow for that .

Chirangee lal Verma [DevOps Advocate] Selected answer as best 4th October 2024

4 Answers

  • Active
  • Voted
  • Newest
  • Oldest
0
José Silva [SLC] [DevOps Catalyst]1.32K Posted 2nd October 2024 1 Comment

Hi Chirangee,

I’m not sure if I fully understood the question, but it seems clear that you'll need a QAction to manage what you want to achieve with the table.

1) What type of table is it? SNMP?

If it’s an SNMP table, you can set a trigger on the PID of the table, triggering a QAction to read the received values. Inside the QAction, you can read the value from the JobStatus column and check each row's job status. Based on the value, update the UpdateJobStatus column with the corresponding value (either "start" or "stop"). In the end, you can fill the array with the column's data.

E.g:

If the table isn’t SNMP-based, are you already using a QAction to populate it? If so, you just need to read the information from the JobStatus column, append the corresponding value to the new UpdateJobStatus column, and then fill the array with all the data.

2) If you want to trigger a column in a table to send a command, you should create a QAction with an "OnChange" event for the parameter of type write:

Using DIS:

You will also need to add this in the QAction:

This will allow you to know, within the QAction, which row was clicked.
After that, you can perform the post call for the desired Job.

Hope this helps you,
Kind regards,

Chirangee lal Verma [DevOps Advocate] Selected answer as best 4th October 2024
Chirangee lal Verma [DevOps Advocate] commented 3rd October 2024

……

0
Chirangee lal Verma [DevOps Advocate]555 Posted 3rd October 2024 2 Comments

things are working well now i want a post api call on this toggle button click data will update job status column value {start , stop } .

Chirangee lal Verma [DevOps Advocate] Posted new comment 4th October 2024
José Silva [SLC] [DevOps Catalyst] commented 4th October 2024

Hi Chirangee,

Did you try what I suggested in my second point?

In a nutshell, you can create a QAction for the write parameter with row=”true”, and inside the QAction, use protocol.RowKey() to retrieve the table’s key.

With this approach, you should be able to target the specific row and modify it as needed (e.g, get the full row, or just a column and set a row, or just a cell…)

Chirangee lal Verma [DevOps Advocate] commented 4th October 2024

yes i jost got the flow now it works. Thanks

0
José Silva [SLC] [DevOps Catalyst]1.32K Posted 3rd October 2024 0 Comments

Hi Chirangee,

Overall, your C# code looks good, but there are a few issues in your XML file.

First, you should always define the PID of the read parameters in your columnOptions, unless the column is exclusively a write-only column.

Second, parameter 216 shouldn’t be of type button, especially since you want to display the current UpdateJobStatus as well.

Try the following:

José Silva [SLC] [DevOps Catalyst] Answered question 3rd October 2024
0
Chirangee lal Verma [DevOps Advocate]555 Posted 3rd October 2024 1 Comment

hi jose silva,
thanks for reply see this code once i m getting respective data in log but not in table

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Text;
using Newtonsoft.Json;
using Skyline.DataMiner.Net.NetworkDiscovery;
using Skyline.DataMiner.Scripting;

public static class Parameter
{
public static class Jobs
{
public const int TablePid = 210; // Table ID for the Jobs table
}
}

/// <summary>
/// DataMiner QAction Class.
/// </summary>
public static class QAction
{
/// <summary>
/// The QAction entry point.
/// </summary>
/// <param name="protocol">Link with SLProtocol process.</param>
public static void Run(SLProtocol protocol)
{
try
{
// Get the JSON data as a string from a parameter (e.g., parameter ID 200)
string source = Convert.ToString(protocol.GetParameter(19));

// Deserialize the JSON content into C# objects
Rootobject rootObjects = JsonConvert.DeserializeObject<Rootobject>(source);
List<object[]> jobs = new List<object[]>();

// Iterate over each job in the JSON and map it to the table structure
foreach (Job job in rootObjects.Jobs)
{
string buttonAction = GetButtonForJobStatus(job.Job_Status);

protocol.Log(buttonAction + "data for button ");

jobs.Add(new JobsQActionRow
{
Jobname_201 = job.Job_Name,
Jobtype_202 = job.Job_Type,
Jobstatus_203 = job.Job_Status,
Updatedtime_204 = job.Updated_Time,
Nodename_205 = job.Node_Name,
Button_206 = buttonAction,
}.ToObjectArray());
}

// Insert the data into the DataMiner table (with table PID 301)
protocol.FillArray(Parameter.Jobs.TablePid, jobs, NotifyProtocol.SaveOption.Full);
}
catch (Exception ex)
{
protocol.Log("QA" + protocol.QActionID + "|Deserializing JSON text failed: " + ex.Message, LogType.Error, LogLevel.NoLogging);
}
}

private static string GetButtonForJobStatus(string jobStatus)
{
switch (jobStatus.ToLower())
{
case "running":
return "Stop";
case "edited":
case "completed":
return "Start";
default:
return "Unknown"; // Handle unexpected statuses
}
}
}

public class Rootobject
{
public Job[] Jobs { get; set; }
}

public class Job
{
public string Job_Name { get; set; }

public string Job_Type { get; set; }

public string Job_Status { get; set; }

public string Updated_Time { get; set; }

public string Node_Name { get; set; }
}

/// <summary>
/// Class to represent a row in the DataMiner table.
/// </summary>
public class JobsQActionRow
{
public string Jobname_201 { get; set; }// Column 201: Job Name

public string Jobtype_202 { get; set; }// Column 202: Job Type

public string Jobstatus_203 { get; set; }// Column 203: Job Status

public string Updatedtime_204 { get; set; }// Column 204: Updated Time

public string Nodename_205 { get; set; }// Column 205: Node Name

public string Button_206 { get; set; }

// Convert the properties to an object array for insertion into the DataMiner table
public object[] ToObjectArray()
{
return new object[] {
Jobname_201, // Maps to Column 201
Jobtype_202, // Maps to Column 202
Jobstatus_203, // Maps to Column 203
Updatedtime_204, // Maps to Column 204
Nodename_205, // Maps to Column 205
Button_206,
};
}
}

José Silva [SLC] [DevOps Catalyst] Posted new comment 3rd October 2024
José Silva [SLC] [DevOps Catalyst] commented 3rd October 2024

Hi Chirangee,

See my response below

Please login to be able to comment or post an answer.

My DevOps rank

DevOps Members get more insights on their profile page.

My user earnings

0 Dojo credits

Spend your credits in our swag shop.

0 Reputation points

Boost your reputation, climb the leaderboard.

Promo banner DataMiner DevOps Professiona Program
DataMiner Integration Studio (DIS)
Empower Katas

Recent questions

How to implement bearer token refresh? 0 Answers | 3 Votes
Web Applications exception in Cube due to invalid certificate 0 Answers | 2 Votes
Redundancy Groups and Alarming – Duplicate Alarms 1 Answer | 1 Vote

Question Tags

adl2099 (115) alarm (62) Alarm Console (82) alarms (100) alarm template (83) Automation (223) automation scipt (111) Automation script (167) backup (71) Cassandra (180) Connector (109) Correlation (69) Correlation rule (52) Cube (151) Dashboard (194) Dashboards (188) database (83) DataMiner Cube (57) DIS (81) DMS (71) DOM (140) driver (65) DVE (56) Elastic (83) Elasticsearch (115) elements (80) Failover (104) GQI (159) HTTP (76) IDP (74) LCA (152) low code app (166) low code apps (93) lowcodeapps (75) MySQL (53) protocol (203) QAction (83) security (88) SNMP (86) SRM (337) table (54) trending (87) upgrade (62) Visio (539) Visual Overview (345)
Privacy Policy • Terms & Conditions • Contact

© 2025 Skyline Communications. All rights reserved.

DOJO Q&A widget

Can't find what you need?

? Explore the Q&A DataMiner Docs

[ Placeholder content for popup link ] WordPress Download Manager - Best Download Management Plugin